summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
Diffstat (limited to 'graphics')
-rw-r--r--graphics/pgf/contrib/circuitikz/doc/changelog.tex19
-rw-r--r--graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdfbin17727 -> 17706 bytes
-rw-r--r--graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdfbin1427563 -> 1428626 bytes
-rw-r--r--graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex34
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-0.4-body.tex10127
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-0.4.sty10108
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-0.6-body.tex10290
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-0.6.sty10279
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-0.7-body.tex10682
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-0.7.sty10671
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-0.8.3-body.tex11142
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-0.8.3.sty11130
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.3-body.tex16743
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.3.sty16731
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.6-body.tex (renamed from graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.6.sty)8
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-1.0-body.tex20152
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-1.0.sty20135
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-1.1.2-body.tex22430
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-1.1.2.sty22413
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-1.2.7-body.tex24523
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz-1.2.7.sty24506
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circuitikz.sty28
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/circutikz-0.9.6.sty23
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/ctikzstyle-legacy.tex8
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/ctikzstyle-romano.tex11
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/pgfcircpath.tex2
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/pgfcircutils.tex23
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex4
28 files changed, 126247 insertions, 125975 deletions
diff --git a/graphics/pgf/contrib/circuitikz/doc/changelog.tex b/graphics/pgf/contrib/circuitikz/doc/changelog.tex
index 88a0f20086..1266d82007 100644
--- a/graphics/pgf/contrib/circuitikz/doc/changelog.tex
+++ b/graphics/pgf/contrib/circuitikz/doc/changelog.tex
@@ -5,6 +5,25 @@ full list of changes.
\begin{itemize}
\item
+ Version 1.4.0 (2021-07-06)
+
+ The main news is that \emph{package rollback} for \texttt{circuitikz}
+ has been implemented (LaTeX-only, of course). Additionally, a small
+ but important change in the path (\texttt{to}) construction that
+ should fix some warning from Ti\emph{k}Z and give better line joins in
+ wire corners.
+
+ \begin{itemize}
+ \tightlist
+ \item
+ bump version to 1.4.0
+ \item
+ implement the version rollback: time travel to 0.4!
+ \item
+ remove a wrong movement in the path construction (potentially
+ dangerous)
+ \end{itemize}
+\item
Version 1.3.9 (2021-06-27)
Bugfix release: \texttt{open\ poles\ opacity} was not working in most
diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf b/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf
index 2cca81ab0e..2db662486d 100644
--- a/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf
+++ b/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf
index f6116a8d60..239c0f6a5d 100644
--- a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf
+++ b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex
index b32056d02a..10a4a9b483 100644
--- a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex
+++ b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex
@@ -224,6 +224,8 @@ The \texttt{use fpu reciprocal} key seems to have no side effects, but given tha
Here, we will provide a list of incompabilitys between different version of \Circuitikz. We will try to hold this list short, but sometimes it is easier to break with old syntax than including a lot of switches and compatibility layers. In general, changes that would invalidate a circuit (changes of polarity of components and so on) are almost always protected by a flag; the same is not true for purely aesthetic changes.
If unsure, you can check the version at your local installation using the macro \verb!\pgfcircversion{}!.
\begin{itemize}
+ \item \texttt{v1.4.0} introduce the rollback system for the package when using LaTeX; that (at least in principle) should be completely backeard-compatible.
+ \item The path construction in \texttt{v1.4.0} has been changed a bit (again). The change shouldn't break any circuit and correct a behavior that should have been fixed with the \texttt{v1.2.1} change (see below).
\item Version 1.3.6 fixes several problems with the stacked labels; the most important change is that now the bracing of arguments is respected as in version 1.3.0 for the other labels. The special treatment in stacked labels (and only in stacked labels!) for the (still experimental\footnote{and, really, not advised\dots}) \texttt{siunitx} compact syntax \texttt{<...>} has been removed: it was completely buggy before, and silently ignored, now will throw an error.
\item Version 1.3.3 fixes the direction of the arrows in tunable elements; before this version, they were more or less random, now the arrow goes from bottom left to top right. You have the option to go back to the old behavior with \texttt{\textbackslash ctikzset\{bipoles/fix tunable direction=false\}}. As a compensation for the fuss, now the arrows are configurable. To learn more, see the FAQ:~\ref{faq:tunable-arrow}.
\item Version 1.3.1 removes the warning if you do not specify a voltage direction.
@@ -257,13 +259,25 @@ If you have older projects that show compatibility problems, you have two option
\begin{itemize}
\item you can use an older version locally using the git-version and picking the correct commit from the repository (branch gh-pages) or the main GitHub site directly;
\item if you are using \LaTeX, the distribution has embedded several important old versions: \texttt{0.4}, \texttt{0.6}, \texttt{0.7}, \texttt{0.8.3}, \texttt{0.9.3}, \texttt{0.9.6}, \texttt{1.0}, \texttt{1.1.2} and \texttt{1.2.7}.
- To switch to use them, you simply change your \verb|\usepackage| invocation like
- \begin{lstlisting}
+ To switch to use them, since \texttt{v1.4.0} you simply use the \href{https://www.latex-project.org/publications/2018-FMi-TUB-tb122mitt-version-rollback.pdf}{new LaTeX kernel rollback system}, changing your \verb|\usepackage| invocation to something like:
+ \begin{lstlisting}[numbers=none]
+ \usepackage[]{circuitikz}[=v0.8.3] % or v0.4, v0.6, ...
+ \end{lstlisting}
+ You can also specify a date instead of a version number: if you write
+ \begin{lstlisting}[numbers=none]
+ \usepackage[]{circuitikz}[=2020/02/05]
+ \end{lstlisting}
+ the rollback system will load the version that was current on February 5th,~2020 (in this case it will be \texttt{v1.0} which was released the day before).
+
+ If for whatever reasons your kernel is older, you can still use the old method of loading the \emph{package-version} package; for example:
+ \begin{lstlisting}[numbers=none]
\usepackage[]{circuitikz-0.8.3} % or circuitikz-0.4, 0.6...
\end{lstlisting}
- You have to take care of the options that may have changed between versions;
+ which is an inferior solution because it can fool any package you use that depend on \texttt{circuitikz}.
+
+ Both ways, you have to take care of the options that may have changed between versions (and sometime syles, if you use them).
\item if you are using \ConTeXt, only versions \texttt{0.8.3}, \texttt{0.9.3}, \texttt{0.9.6}, \texttt{1.0}, \texttt{1.1.2} and \texttt{1.2.7} are packaged; if can use it with
- \begin{lstlisting}
+ \begin{lstlisting}[numbers=none]
\usemodule[circuitikz-0.8.3]
\end{lstlisting}
\end{itemize}
@@ -1649,6 +1663,18 @@ If you want to add a setting to your style file that has been recently added to
thyristor style/.try=compact,
\end{lstlisting}
+Or, in case of new values of existing ``choice'' keys, you can use the syntax:
+
+\begin{lstlisting}[frame=single, framesep=10pt]
+ % Logic ports
+ logic ports/ieee/.try,
+ % this way of setting the key does nothing if ieee option
+ % does not exist; logic ports/.try=ieee does not work
+ % if the key exists but the value is not defined
+ logic ports/scale=1.0,
+\end{lstlisting}
+
+
\subsection{Subcircuits}\label{sec:subcircuits}
Starting from version \texttt{1.3.5}, there is an \textbf{experimental}\footnote{That means that in future releases the interface can change; use it at your risk and if you need it to continue working as-is, please use the \href{https://circuitikz.github.io/circuitikz/}{GitHub project page} and download and save the \texttt{circuitikzgit.sty} file for future-proof use!} support for generating sub-circuits, or circuits blocks. The creation and use of subcircuits is somewhat limited, to keep them simple and easy to define and maintain.
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.4-body.tex b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.4-body.tex
new file mode 100644
index 0000000000..c28f578124
--- /dev/null
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.4-body.tex
@@ -0,0 +1,10127 @@
+% Copyright 2018-2021 by Romano Giannetti
+% Copyright 2015-2021 by Stefan Lindner
+% Copyright 2013-2021 by Stefan Erhardt
+% Copyright 2007-2021 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+
+%%%%%
+%%%%%
+%%%%%
+%%%%% Se c'รจ l'opzione symbol, fallback to siunitx con warning
+%%%%%
+%%%%%
+
+\NeedsTeXFormat{LaTeX2e}
+
+\def\pgfcircversion{0.4}
+\def\pgfcircversiondate{2012/12/20}
+
+%% Version 2.0 of pgf/TikZ is required
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+\usepgflibrary{decorations.pathmorphing,arrows}
+
+\DeclareOption{european}{
+ \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
+ \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester = european}
+}
+
+\DeclareOption{american}{
+ \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester = american}
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{fulldiodes}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiodes}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{europeanvoltages}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{americanvoltages}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrents}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrents}{
+ \ctikzset{current = american}
+}
+
+\DeclareOption{europeanvoltages}{
+ \ctikzset{voltage = european}
+}
+
+\DeclareOption{americanresistors}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistors}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductors}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductors}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductors}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanports}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanports}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{americangfsurgearrester}{
+ \ctikzset{gas filled surge arrester = american}
+}
+
+\DeclareOption{europeangfsurgearrester}{
+ \ctikzset{gas filled surge arrester = european}
+}
+
+
+\DeclareOption{siunitx}{
+ \pgf@circ@siunitxtrue
+}
+
+\DeclareOption{nosiunitx}{
+ \pgf@circ@siunitxfalse
+}
+
+\DeclareOption{arrowmos}{
+ \pgf@circuit@mos@arrowstrue
+}
+
+\DeclareOption{noarrowmos}{
+ \pgf@circuit@mos@arrowsfalse
+}
+
+\DeclareOption{straightlabels}{
+ \ctikzset{label/align = straight}
+}
+
+\DeclareOption{rotatelabels}{
+ \ctikzset{label/align = rotate}
+}
+
+\DeclareOption{smartlabels}{
+ \ctikzset{label/align = smart}
+}
+
+
+
+\DeclareOption{fulldiode}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiode}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{europeanvoltage}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{americanvoltage}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrent}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrent}{
+ \ctikzset{current = american}
+}
+
+\DeclareOption{europeanvoltage}{
+ \ctikzset{voltage = european}
+}
+
+\DeclareOption{americanresistor}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistor}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductor}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductor}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductor}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanport}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanport}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{europeanport}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{betterproportions}{
+ \ctikzset{monopoles/ground/width/.initial=.15}
+
+ \ctikzset{bipoles/resistor/height/.initial=.23}
+ \ctikzset{bipoles/resistor/width/.initial=.6}
+ \ctikzset{bipoles/capacitor/height/.initial=.4}
+ \ctikzset{bipoles/capacitor/width/.initial=.1}
+ \ctikzset{bipoles/potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
+ \ctikzset{bipoles/photoresistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistor/main/.initial=.7}
+ \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
+ \ctikzset{bipoles/thermistorptc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorptc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/main/.initial=.7}
+ \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/width/.initial=.6}
+ \ctikzset{bipoles/vresistor/height/.initial=.45}
+ \ctikzset{bipoles/vresistor/width/.initial=.6}
+ \ctikzset{bipoles/cuteinductor/height/.initial=.23}
+ \ctikzset{bipoles/cuteinductor/width/.initial=.6}
+ \ctikzset{bipoles/cuteinductor/coils/.initial=6}
+ \ctikzset{bipoles/americaninductor/height/.initial=.23}
+ \ctikzset{bipoles/americaninductor/height 2/.initial=.1}
+ \ctikzset{bipoles/americaninductor/width/.initial=.6}
+ \ctikzset{bipoles/americaninductor/coils/.initial=4}
+ \ctikzset{bipoles/vcuteinductor/height/.initial=.6}
+ \ctikzset{bipoles/vcuteinductor/coil height/.initial=.23}
+ \ctikzset{bipoles/vcuteinductor/width/.initial=.6}
+ \ctikzset{bipoles/vcuteinductor/coils/.initial=6}
+ \ctikzset{bipoles/vamericaninductor/height/.initial=.45}
+ \ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
+ \ctikzset{bipoles/vamericaninductor/width/.initial=.6}
+ \ctikzset{bipoles/vamericaninductor/coils/.initial=4}
+ \ctikzset{bipoles/generic/height/.initial=.23}
+ \ctikzset{bipoles/generic/width/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/ageneric/height/.initial=.23}
+ \ctikzset{bipoles/ageneric/width/.initial=.6}
+ \ctikzset{bipoles/memristor/height/.initial=.23}
+ \ctikzset{bipoles/memristor/wave height/.initial=.375}
+ \ctikzset{bipoles/memristor/width/.initial=.60}
+ \ctikzset{bipoles/tgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tgeneric/width/.initial=.6}
+ \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
+ \ctikzset{bipoles/fullgeneric/height/.initial=.23}
+ \ctikzset{bipoles/fullgeneric/width/.initial=.6}
+ \ctikzset{bipoles/diode/height/.initial=.3}
+ \ctikzset{bipoles/diode/width/.initial=.25}
+
+ \ctikzset{tripoles/thyristor/height/.initial=.66}
+ \ctikzset{tripoles/thyristor/height 2/.initial=.3}
+ \ctikzset{tripoles/thyristor/width/.initial=.6}
+ \ctikzset{tripoles/thyristor/diode height/.initial=.3}
+ \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+ \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+ \ctikzset{tripoles/triac/height/.initial=.66}
+ \ctikzset{tripoles/triac/width/.initial=.6}
+ \ctikzset{tripoles/triac/diode width left/.initial=.3}
+ \ctikzset{tripoles/triac/diode width right/.initial=.3}
+}
+
+%%%%%%%%%
+
+
+
+%%%%%%%%%%% Springe nach circuitikz.code
+%%%---------- open: circuitikz.code.tex
+
+%% Options
+
+
+
+
+%% Keys
+
+\long\def\pgf@circ@comment#1{}
+
+\def\circuitikzbasekey{/tikz/circuitikz}
+
+\pgfkeys{\circuitikzbasekey/.is family}
+
+\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
+\let\ctikzset\circuitikzset
+\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
+\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
+
+\newif\ifpgf@circuit@inputarrow
+\ctikzset{inputarrow/.is choice}
+\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
+
+\ctikzset{bipoles/.is family}
+\ctikzset{bipoles/border margin/.initial=1.1}
+\ctikzset{bipoles/thickness/.initial=2}
+\ctikzset{bipoles/length/.initial=1.4cm}
+\ctikzset{nodes width/.initial=.04}
+\newdimen\pgf@circ@Rlen
+\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1}}
+
+
+\ctikzset{monopoles/.is family}
+\ctikzset{monopoles/ground/width/.initial=.25}
+\ctikzset{monopoles/chassis/width/.initial=.25}
+\ctikzset{monopoles/alternative chassis/width/.initial=.25}
+\ctikzset{monopoles/equipotentiality/width/.initial=.25}
+\ctikzset{monopoles/tlinestub/width/.initial=.25}
+\ctikzset{monopoles/antenna/width/.initial=.25}
+\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/width/.initial=.25}
+\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/rxantenna/width/.initial=.25}
+\ctikzset{monopoles/tground/thickness/.initial=3}
+\ctikzset{monopoles/vcc/width/.initial=.2}
+\ctikzset{monopoles/match/width/.initial=.4}
+\ctikzset{monopoles/oscillator/width/.initial=.7}
+
+\ctikzset{bipoles/resistor/height/.initial=.3}
+\ctikzset{bipoles/resistor/width/.initial=.8}
+\ctikzset{bipoles/potentiometer/height/.initial=.8}
+\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
+\ctikzset{bipoles/potentiometer/width/.initial=.8}
+\ctikzset{bipoles/photoresistor/height/.initial=.6}
+\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
+\ctikzset{bipoles/photoresistor/width/.initial=.8}
+\ctikzset{bipoles/thermistor/main/.initial=.7}
+\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/width/.initial=.8}
+\ctikzset{bipoles/thermistorntc/main/.initial=.7}
+\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistorptc/width/.initial=.8}
+\ctikzset{bipoles/thermistorptc/main/.initial=.7}
+\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistor/width/.initial=.8}
+\ctikzset{bipoles/varistor/main/.initial=.7}
+\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/varistor/width/.initial=.8}
+\ctikzset{bipoles/vresistor/height/.initial=.6}
+\ctikzset{bipoles/vresistor/width/.initial=.8}
+\ctikzset{bipoles/cuteinductor/height/.initial=.3}
+\ctikzset{bipoles/cuteinductor/width/.initial=.8}
+\ctikzset{bipoles/cuteinductor/coils/.initial=6}
+\ctikzset{bipoles/americaninductor/height/.initial=.3}
+\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
+\ctikzset{bipoles/americaninductor/width/.initial=.8}
+\ctikzset{bipoles/americaninductor/coils/.initial=4}
+\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/coil height/.initial=.3}
+\ctikzset{bipoles/vcuteinductor/width/.initial=.8}
+\ctikzset{bipoles/vcuteinductor/coils/.initial=6}
+\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
+\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
+\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
+\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
+\ctikzset{bipoles/isource/height/.initial=.60}
+\ctikzset{bipoles/isource/width/.initial=.60}
+\ctikzset{bipoles/isourceam/height/.initial=.60}
+\ctikzset{bipoles/isourceam/width/.initial=.60}
+\ctikzset{bipoles/vsource/height/.initial=.60}
+\ctikzset{bipoles/vsource/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/height/.initial=.60}
+\ctikzset{bipoles/vsourceam/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/margin/.initial=.7}
+\ctikzset{bipoles/isourcesin/height/.initial=.60}
+\ctikzset{bipoles/isourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesin/height/.initial=.60}
+\ctikzset{bipoles/vsourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
+\ctikzset{bipoles/cisource/height/.initial=.7}
+\ctikzset{bipoles/cisource/width/.initial=.7}
+\ctikzset{bipoles/cisourceam/height/.initial=.7}
+\ctikzset{bipoles/cisourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsource/height/.initial=.7}
+\ctikzset{bipoles/cvsource/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/height/.initial=.7}
+\ctikzset{bipoles/cvsourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
+\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
+\ctikzset{bipoles/cisourcesin/width/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
+\ctikzset{bipoles/capacitor/height/.initial=.6}
+\ctikzset{bipoles/capacitor/width/.initial=.2}
+\ctikzset{bipoles/pcapacitor/height/.initial=.6}
+\ctikzset{bipoles/pcapacitor/width/.initial=.2}
+\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
+\ctikzset{bipoles/vcapacitor/height/.initial=.6}
+\ctikzset{bipoles/vcapacitor/width/.initial=.5}
+\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
+\ctikzset{bipoles/battery/height/.initial=.6}
+\ctikzset{bipoles/battery/width/.initial=.3}
+\ctikzset{bipoles/battery1/height/.initial=.6}
+\ctikzset{bipoles/battery1/width/.initial=.3}
+\ctikzset{bipoles/diode/height/.initial=.50}
+\ctikzset{bipoles/diode/width/.initial=.40}
+\ctikzset{bipoles/varcap/height/.initial=.50}
+\ctikzset{bipoles/varcap/width/.initial=.45}
+\ctikzset{bipoles/interr/height/.initial=.35}
+\ctikzset{bipoles/interr/width/.initial=.35}
+\ctikzset{bipoles/interr/height 2/.initial=.1}
+\ctikzset{bipoles/generic/height/.initial=.30}
+\ctikzset{bipoles/generic/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
+\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
+\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
+\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
+\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
+\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
+\ctikzset{bipoles/fuse/height/.initial=.20}
+\ctikzset{bipoles/fuse/width/.initial=.50}
+\ctikzset{bipoles/afuse/height/.initial=.20}
+\ctikzset{bipoles/afuse/width/.initial=.50}
+\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
+\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
+\ctikzset{bipoles/ageneric/height/.initial=.30}
+\ctikzset{bipoles/ageneric/width/.initial=.80}
+\ctikzset{bipoles/memristor/height/.initial=.30}
+\ctikzset{bipoles/memristor/wave height/.initial=.5}
+\ctikzset{bipoles/memristor/width/.initial=.80}
+\ctikzset{bipoles/tgeneric/height/.initial=.70}
+\ctikzset{bipoles/tgeneric/width/.initial=.80}
+\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
+\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
+\ctikzset{bipoles/fullgeneric/height/.initial=.30}
+\ctikzset{bipoles/fullgeneric/width/.initial=.80}
+\ctikzset{bipoles/open/height/.initial=.25}
+\ctikzset{bipoles/open/width/.initial=.8}
+\ctikzset{bipoles/ammeter/height/.initial=.60}
+\ctikzset{bipoles/ammeter/width/.initial=.60}
+\ctikzset{bipoles/voltmeter/height/.initial=.60}
+\ctikzset{bipoles/voltmeter/width/.initial=.60}
+\ctikzset{bipoles/buffer/height/.initial=1}
+\ctikzset{bipoles/buffer/width/.initial=1}
+\ctikzset{bipoles/not port/width/.initial=1}
+\ctikzset{bipoles/not port/height/.initial=.8}
+\ctikzset{bipoles/not port/circle width/.initial=.15}
+\ctikzset{bipoles/lamp/height/.initial=.60}
+\ctikzset{bipoles/lamp/width/.initial=.60}
+\ctikzset{bipoles/tline/height/.initial=.3}
+\ctikzset{bipoles/tline/width/.initial=.8}
+\ctikzset{bipoles/squid/height/.initial=.60}
+\ctikzset{bipoles/squid/width/.initial=.60}
+\ctikzset{bipoles/barrier/height/.initial=.60}
+\ctikzset{bipoles/barrier/width/.initial=.60}
+\ctikzset{bipoles/thermocouple/height/.initial=.250}
+\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
+\ctikzset{bipoles/thermocouple/width/.initial=.140}
+\ctikzset{bipoles/pushbutton/height/.initial=.5}
+\ctikzset{bipoles/pushbutton/height 2/.initial=.0}
+\ctikzset{bipoles/pushbutton/width/.initial=.50}
+\ctikzset{bipoles/twoport/width/.initial=.7}
+\ctikzset{bipoles/twoport/height/.initial=.7}
+\ctikzset{bipoles/twoport/text/.initial=}
+\ctikzset{bipoles/vco/width/.initial=.7}
+\ctikzset{bipoles/bandpass/width/.initial=.7}
+\ctikzset{bipoles/highpass/width/.initial=.7}
+\ctikzset{bipoles/lowpass/width/.initial=.7}
+\ctikzset{bipoles/adc/width/.initial=.7}
+\ctikzset{bipoles/dac/width/.initial=.7}
+\ctikzset{bipoles/dsp/width/.initial=.7}
+\ctikzset{bipoles/fft/width/.initial=.7}
+\ctikzset{bipoles/amp/width/.initial=.7}
+\ctikzset{bipoles/vamp/width/.initial=.7}
+\ctikzset{bipoles/piattenuator/width/.initial=.7}
+\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
+\ctikzset{bipoles/tattenuator/width/.initial=.7}
+\ctikzset{bipoles/vtattenuator/width/.initial=.7}
+\ctikzset{bipoles/phaseshifter/width/.initial=.7}
+\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
+\ctikzset{bipoles/detector/width/.initial=.7}
+
+\newif\ifpgf@circuit@mos@arrows
+\ctikzset{tripoles/mos style/.is choice}
+\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
+\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
+\ctikzset{tripoles/nmos/width/.initial=.7}
+\ctikzset{tripoles/nmos/gate height/.initial=.35}
+\ctikzset{tripoles/nmos/base height/.initial=.5}
+\ctikzset{tripoles/nmos/height/.initial=1.1}
+\ctikzset{tripoles/nmos/base width/.initial=.5}
+\ctikzset{tripoles/nmos/gate width/.initial=.62}
+\ctikzset{tripoles/pmos/width/.initial=.7}
+\ctikzset{tripoles/pmos/gate height/.initial=.35}
+\ctikzset{tripoles/pmos/base height/.initial=.5}
+\ctikzset{tripoles/pmos/height/.initial=1.1}
+\ctikzset{tripoles/pmos/base width/.initial=.5}
+\ctikzset{tripoles/pmos/gate width/.initial=.62}
+
+\ctikzset{tripoles/nfet/width/.initial=.7}
+\ctikzset{tripoles/nfet/gate height/.initial=.35}
+\ctikzset{tripoles/nfet/base height/.initial=.5}
+\ctikzset{tripoles/nfet/height/.initial=1.1}
+\ctikzset{tripoles/nfet/base width/.initial=.5}
+\ctikzset{tripoles/nfet/gate width/.initial=.62}
+
+\ctikzset{tripoles/pfet/width/.initial=.7}
+\ctikzset{tripoles/pfet/gate height/.initial=.35}
+\ctikzset{tripoles/pfet/base height/.initial=.5}
+\ctikzset{tripoles/pfet/height/.initial=1.1}
+\ctikzset{tripoles/pfet/base width/.initial=.5}
+\ctikzset{tripoles/pfet/gate width/.initial=.62}
+
+\ctikzset{tripoles/nigfete/width/.initial=.7}
+\ctikzset{tripoles/nigfete/gate height/.initial=.35}
+\ctikzset{tripoles/nigfete/base height/.initial=.5}
+\ctikzset{tripoles/nigfete/height/.initial=1.1}
+\ctikzset{tripoles/nigfete/base width/.initial=.5}
+\ctikzset{tripoles/nigfete/gate width/.initial=.62}
+
+\ctikzset{tripoles/nigfetd/width/.initial=.7}
+\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetd/base height/.initial=.5}
+\ctikzset{tripoles/nigfetd/height/.initial=1.1}
+\ctikzset{tripoles/nigfetd/base width/.initial=.5}
+\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
+
+\ctikzset{tripoles/pigfete/width/.initial=.7}
+\ctikzset{tripoles/pigfete/gate height/.initial=.35}
+\ctikzset{tripoles/pigfete/base height/.initial=.5}
+\ctikzset{tripoles/pigfete/height/.initial=1.1}
+\ctikzset{tripoles/pigfete/base width/.initial=.5}
+\ctikzset{tripoles/pigfete/gate width/.initial=.62}
+
+\ctikzset{tripoles/pigfetd/width/.initial=.7}
+\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetd/base height/.initial=.5}
+\ctikzset{tripoles/pigfetd/height/.initial=1.1}
+\ctikzset{tripoles/pigfetd/base width/.initial=.5}
+\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
+
+\ctikzset{tripoles/npn/width/.initial=.6}
+\ctikzset{tripoles/npn/gate height/.initial=.45}
+\ctikzset{tripoles/npn/gate height 2/.initial=.15}
+\ctikzset{tripoles/npn/base height/.initial=.4}
+\ctikzset{tripoles/npn/height/.initial=1.1}
+\ctikzset{tripoles/npn/gate width/.initial=.5}
+
+
+
+\ctikzset{tripoles/pnp/width/.initial=.6}
+\ctikzset{tripoles/pnp/gate height/.initial=.45}
+\ctikzset{tripoles/pnp/gate height 2/.initial=.15}
+\ctikzset{tripoles/pnp/base height/.initial=.4}
+\ctikzset{tripoles/pnp/height/.initial=1.1}
+\ctikzset{tripoles/pnp/gate width/.initial=.5}
+
+\ctikzset{tripoles/pigbt/width/.initial=.6}
+\ctikzset{tripoles/pigbt/gate height/.initial=.45}
+\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/pigbt/base height/.initial=.4}
+\ctikzset{tripoles/pigbt/height/.initial=1.1}
+\ctikzset{tripoles/pigbt/gate width/.initial=.62}
+\ctikzset{tripoles/pigbt/base width/.initial=.5}
+\ctikzset{tripoles/nigbt/width/.initial=.6}
+\ctikzset{tripoles/nigbt/gate height/.initial=.45}
+\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/nigbt/base height/.initial=.4}
+\ctikzset{tripoles/nigbt/height/.initial=1.1}
+\ctikzset{tripoles/nigbt/gate width/.initial=.62}
+\ctikzset{tripoles/nigbt/base width/.initial=.5}
+
+\ctikzset{tripoles/njfet/width/.initial=.7}
+\ctikzset{tripoles/njfet/gate height/.initial=.5}
+\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/njfet/gate width/.initial=.5}
+\ctikzset{tripoles/njfet/height/.initial=1.1}
+\ctikzset{tripoles/pjfet/width/.initial=.7}
+\ctikzset{tripoles/pjfet/gate height/.initial=.5}
+\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/pjfet/gate width/.initial=.5}
+\ctikzset{tripoles/pjfet/height/.initial=1.1}
+
+\ctikzset{tripoles/isfet/width/.initial=1}
+\ctikzset{tripoles/isfet/gate height/.initial=.35}
+\ctikzset{tripoles/isfet/base height/.initial=.5}
+\ctikzset{tripoles/isfet/height/.initial=1.1}
+\ctikzset{tripoles/isfet/base width/.initial=.3}
+\ctikzset{tripoles/isfet/gate width/.initial=.5}
+\ctikzset{tripoles/isfet/wave width/.initial=.16}
+\ctikzset{tripoles/isfet/wave amp/.initial=.06}
+\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
+\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
+
+\newif\ifpgf@circuit@europeanlogicport
+\ctikzset{logic ports/.is choice}
+\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue } }
+\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse } }
+
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+
+\ctikzset{tripoles/american and port/width/.initial=1.1}
+\ctikzset{tripoles/american and port/height/.initial=.8}
+\ctikzset{tripoles/american and port/port width/.initial=.7}
+\ctikzset{tripoles/american and port/input height/.initial=.5}
+\ctikzset{tripoles/american nand port/width/.initial=1.1}
+\ctikzset{tripoles/american nand port/height/.initial=.8}
+\ctikzset{tripoles/american nand port/port width/.initial=.7}
+\ctikzset{tripoles/american nand port/circle width/.initial=.15}
+\ctikzset{tripoles/american nand port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/width/.initial=1.1}
+\ctikzset{tripoles/american or port/height/.initial=.8}
+\ctikzset{tripoles/american or port/port width/.initial=.7}
+\ctikzset{tripoles/american or port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/input skip/.initial=.25}
+\ctikzset{tripoles/american or port/aaa/.initial=.6}
+\ctikzset{tripoles/american or port/bbb/.initial=.4}
+\ctikzset{tripoles/american or port/ccc/.initial=.5}
+\ctikzset{tripoles/american or port/ddd/.initial=.0}
+\ctikzset{tripoles/american nor port/width/.initial=1.1}
+\ctikzset{tripoles/american nor port/height/.initial=.8}
+\ctikzset{tripoles/american nor port/port width/.initial=.7}
+\ctikzset{tripoles/american nor port/input height/.initial=.5}
+\ctikzset{tripoles/american nor port/input skip/.initial=.25}
+\ctikzset{tripoles/american nor port/circle width/.initial=.15}
+\ctikzset{tripoles/american nor port/aaa/.initial=.6}
+\ctikzset{tripoles/american nor port/bbb/.initial=.4}
+\ctikzset{tripoles/american nor port/ccc/.initial=.5}
+\ctikzset{tripoles/american nor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xor port/width/.initial=1.1}
+\ctikzset{tripoles/american xor port/height/.initial=.8}
+\ctikzset{tripoles/american xor port/port width/.initial=.7}
+\ctikzset{tripoles/american xor port/input height/.initial=.5}
+\ctikzset{tripoles/american xor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xor port/distance/.initial=.1}
+\ctikzset{tripoles/american xor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/width/.initial=1.1}
+\ctikzset{tripoles/american xnor port/height/.initial=.8}
+\ctikzset{tripoles/american xnor port/port width/.initial=.7}
+\ctikzset{tripoles/american xnor port/input height/.initial=.5}
+\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xnor port/distance/.initial=.1}
+\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
+\ctikzset{tripoles/european and port/width/.initial=1.4}
+\ctikzset{tripoles/european and port/height/.initial=.65}
+\ctikzset{tripoles/european and port/reserved/.initial=.6}
+\ctikzset{tripoles/european and port/input height/.initial=.6}
+\ctikzset{tripoles/european or port/width/.initial=1.4}
+\ctikzset{tripoles/european or port/height/.initial=.65}
+\ctikzset{tripoles/european or port/reserved/.initial=.6}
+\ctikzset{tripoles/european or port/input height/.initial=.6}
+\ctikzset{tripoles/european xor port/width/.initial=1.4}
+\ctikzset{tripoles/european xor port/height/.initial=.65}
+\ctikzset{tripoles/european xor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xor port/input height/.initial=.6}
+\ctikzset{tripoles/european nand port/width/.initial=1.4}
+\ctikzset{tripoles/european nand port/not height/.initial=.3}
+\ctikzset{tripoles/european nand port/not width/.initial=.8}
+\ctikzset{tripoles/european nand port/height/.initial=.65}
+\ctikzset{tripoles/european nand port/reserved/.initial=.6}
+\ctikzset{tripoles/european nand port/input height/.initial=.6}
+\ctikzset{tripoles/european not port/width/.initial=1.4}
+\ctikzset{tripoles/european not port/not height/.initial=.3}
+\ctikzset{tripoles/european not port/not width/.initial=.8}
+\ctikzset{tripoles/european not port/height/.initial=.65}
+\ctikzset{tripoles/european not port/reserved/.initial=.6}
+\ctikzset{tripoles/european not port/input height/.initial=0}
+\ctikzset{tripoles/european xnor port/width/.initial=1.4}
+\ctikzset{tripoles/european xnor port/not height/.initial=.3}
+\ctikzset{tripoles/european xnor port/not width/.initial=.8}
+\ctikzset{tripoles/european xnor port/height/.initial=.65}
+\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xnor port/input height/.initial=.6}
+\ctikzset{tripoles/european nor port/width/.initial=1.4}
+\ctikzset{tripoles/european nor port/not height/.initial=.3}
+\ctikzset{tripoles/european nor port/not width/.initial=.8}
+\ctikzset{tripoles/european nor port/height/.initial=.65}
+\ctikzset{tripoles/european nor port/reserved/.initial=.6}
+\ctikzset{tripoles/european nor port/input height/.initial=.6}
+\ctikzset{tripoles/op amp/width/.initial=1.7}
+\ctikzset{tripoles/op amp/port width/.initial=.7}
+\ctikzset{tripoles/op amp/height/.initial=1.4}
+\ctikzset{tripoles/op amp/input height/.initial=.5}
+\ctikzset{tripoles/op amp/up pos/.initial=.45}
+\ctikzset{tripoles/plain amp/width/.initial=1.7}
+\ctikzset{tripoles/plain amp/port width/.initial=.7}
+\ctikzset{tripoles/plain amp/height/.initial=1.4}
+\ctikzset{tripoles/plain amp/input height/.initial=.5}
+\ctikzset{tripoles/plain amp/up pos/.initial=.45}
+
+\ctikzset{tripoles/thyristor/height/.initial=1.10}
+\ctikzset{tripoles/thyristor/height 2/.initial=.5}
+\ctikzset{tripoles/thyristor/width/.initial=1.0}
+\ctikzset{tripoles/thyristor/diode height/.initial=.5}
+\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+\ctikzset{tripoles/triac/height/.initial=1.1}
+\ctikzset{tripoles/triac/width/.initial=1}
+\ctikzset{tripoles/triac/diode width left/.initial=.3}
+\ctikzset{tripoles/triac/diode width right/.initial=.3}
+
+\ctikzset{tripoles/spdt/width/.initial=.85}
+\ctikzset{tripoles/spdt/height/.initial=.45}
+\ctikzset{tripoles/spdt/margin/.initial=.45}
+
+\ctikzset{tripoles/toggleswitch/height/.initial=.8}
+\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
+\ctikzset{tripoles/toggleswitch/width/.initial=.80}
+
+\ctikzset{tripoles/mixer/width/.initial=0.7}
+\ctikzset{tripoles/adder/width/.initial=0.7}
+\ctikzset{tripoles/circulator/width/.initial=.7}
+
+\ctikzset{tripoles/wilkinson/height/.initial=1.3}
+\ctikzset{tripoles/wilkinson/width/.initial=1.3}
+
+\ctikzset{quadpoles/transformer/width/.initial=1.5}
+\ctikzset{quadpoles/transformer/width1/.initial=.4}
+\ctikzset{quadpoles/transformer/height/.initial=1.5}
+\ctikzset{quadpoles/transformer/height1/.initial=.8}
+\ctikzset{quadpoles/transformer core/width/.initial=1.5}
+\ctikzset{quadpoles/transformer core/height/.initial=1.5}
+\ctikzset{quadpoles/transformer core/core height/.initial=.5}
+\ctikzset{quadpoles/transformer core/core width/.initial=.05}
+\ctikzset{quadpoles/gyrator/width/.initial=1.5}
+\ctikzset{quadpoles/gyrator/height/.initial=1.5}
+\ctikzset{quadpoles/coupler/width/.initial=1.3}
+\ctikzset{quadpoles/coupler/height/.initial=1.3}
+
+\ctikzset{bipole/.is family}
+\ctikzset{bipole/kind/.initial = }
+\ctikzset{bipole/name/.initial = }
+\newif\ifpgf@circuit@bipole@reversed
+\ctikzset{bipole/reversed/.is if=pgf@circuit@bipole@reversed}
+\newif\ifpgf@circuit@bipole@isvoltage
+\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
+\newif\ifpgf@circuit@bipole@iscurrent
+\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
+
+\ctikzset{bipole/voltage/.is family}
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+\newif\ifpgf@circuit@bipole@voltage@below
+\ctikzset{bipole/voltage/position/.is choice}
+\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
+\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
+
+\ctikzset{bipole/voltage/label/unit/.initial=}
+\ctikzset{bipole/voltage/label/name/.initial=}
+
+\ctikzset{bipole/current/.is family}
+\newif\ifpgf@circuit@bipole@current@backward
+\ctikzset{bipole/current/direction/.is choice}
+\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
+\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
+\newif\ifpgf@circuit@bipole@current@before
+\ctikzset{bipole/current/x position/.is choice}
+\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
+\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
+\newif\ifpgf@circuit@bipole@current@below
+\ctikzset{bipole/current/y position/.is choice}
+\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
+\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
+
+\ctikzset{bipole/current/label/unit/.initial=}
+\ctikzset{bipole/current/label/name/.initial=}
+
+\ctikzset{bipole/label/.is family}
+\ctikzset{bipole/label/position/.initial=90}
+\ctikzset{bipole/label/unit/.initial=}
+\ctikzset{bipole/label/name/.initial=}
+\ctikzset{bipole/nodes/.is family}
+\ctikzset{bipole/nodes/left/.is choice}
+\ctikzset{bipole/nodes/left/none/.code={\ctikzsetvalof{bipole/nodes/left}{none}}}
+\ctikzset{bipole/nodes/left/empty/.code={\ctikzsetvalof{bipole/nodes/left}{empty}}}
+\ctikzset{bipole/nodes/left/full/.code={\ctikzsetvalof{bipole/nodes/left}{full}}}
+\ctikzset{bipole/nodes/right/.is choice}
+\ctikzset{bipole/nodes/right/none/.code={\ctikzsetvalof{bipole/nodes/right}{none}}}
+\ctikzset{bipole/nodes/right/empty/.code={\ctikzsetvalof{bipole/nodes/right}{empty}}}
+\ctikzset{bipole/nodes/right/full/.code={\ctikzsetvalof{bipole/nodes/right}{full}}}
+
+
+\newif\ifpgf@circuit@europeanresistor
+\ctikzset{resistor/.is choice}
+\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
+\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
+
+\ctikzset{inductor/.is choice}
+\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
+\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
+\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
+
+\newif\ifpgf@circuit@fulldiode
+\ctikzset{diode/.is if=pgf@circuit@fulldiode}
+\ctikzset{diode/.is choice}
+\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse }
+\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
+\ctikzset{thickness/.initial=2}
+\ctikzset{color/.initial=black}
+\pgfkeys{/tikz/color/.add code={}{\ctikzset{color=#1}}}
+
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circ@siunitx@res
+
+\ctikzset{voltage/.is family}
+\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
+\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
+\ctikzset{voltage/bump a/.initial=1.2}
+\ctikzset{voltage/bump b/.initial=1.5}
+\ctikzset{voltage/european label distance/.initial=1.4}
+\ctikzset{voltage/american label distance/.initial=1.1}
+% special cases
+\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
+\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
+\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
+\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
+\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
+%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
+%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
+
+\ctikzset{current/.is family}
+\ctikzset{current/distance/.initial = .5}
+
+\tikzset{american currents/.style = { \circuitikzbasekey/current = american } }
+\tikzset{european currents/.style = { \circuitikzbasekey/current = european } }
+\tikzset{american voltages/.style = { \circuitikzbasekey/voltage = american } }
+\tikzset{european voltages/.style = { \circuitikzbasekey/voltage = european } }
+\tikzset{american resistors/.style = { \circuitikzbasekey/resistor = american } }
+\tikzset{european resistors/.style = { \circuitikzbasekey/resistor = european } }
+
+\newif\ifpgf@circuit@europeangfsurgearrester
+\ctikzset{gas filled surge arrester/.is choice}
+\ctikzset{gas filled surge arrester/european/.code= {\pgf@circuit@europeangfsurgearrestertrue } }
+\ctikzset{gas filled surge arrester/american/.code= {\pgf@circuit@europeangfsurgearresterfalse } }
+
+\tikzset{american gas filled surge arrester/.style = { \circuitikzbasekey/gas filled surge arrester = american } }
+\tikzset{european gas filled surge arrester/.style = { \circuitikzbasekey/gas filled surge arrester = european } }
+\tikzset{american inductors/.style = { \circuitikzbasekey/inductor = american } }
+\tikzset{european inductors/.style = { \circuitikzbasekey/inductor = european } }
+\tikzset{cute inductors/.style = { \circuitikzbasekey/inductor = cute } }
+\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full } }
+\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty } }
+\tikzset{american ports/.style = { \circuitikzbasekey/logic ports = american } }
+\tikzset{european ports/.style = { \circuitikzbasekey/logic ports = european } }
+\tikzset{european/.style = { european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester } }
+\tikzset{american/.style = { american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester } }
+\tikzset{cute/.style = { european currents, european voltages, american resistors, cute inductors, american ports } }
+
+% I should try to make the tree clearer (this voltaege conflicts with the options above)
+
+\newif\ifpgf@circuit@europeanvoltage
+\ctikzset{voltage/.is choice}
+\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse } }
+\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue } }
+
+\newif\ifpgf@circuit@europeancurrent
+\ctikzset{current/.is choice}
+\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse }
+\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue }
+
+\ctikzset{label/align/.is choice}
+\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
+\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
+\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
+%% dependencies
+
+
+
+
+%%%%%%%%%% new
+\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
+
+
+
+
+
+%%%%%%%%%%% Springe nach pgfcircutils
+%%%---------- open: pgfcircutils.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%\def\pgf@circ@handleSI#1{%
+ % \pgf@circ@siunitx@resfalse
+%
+ % \edef\len{\stringlength[e]{#1}}
+ %\testmatchingchar[e]{#1}{\len}{>}%
+ %\ifmatchingchar%
+ % \ifnum\findchars{#1}{<}=0
+ % \def\pgf@circ@handleSI@val{\substring{#1}{1}{\findchars{#1}{<}-1}}
+ %\def\pgf@circ@handleSI@unit{\substring{#1}{\findchars{#1}{<}-1}+1}{\stringlength{#1}}
+ %\pgf@circ@siunitx@restrue
+% \else
+% \fi
+ %\else
+ %\fi
+%}
+
+\def\pgf@circ@handleSI#1{
+ \noexpandarg
+ \def\pgf@temp{}
+ \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
+ \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
+
+ \ifnum\pgf@circ@handleSI@unit@len=0
+ \pgf@circ@siunitx@resfalse
+ \else
+ \IfEndWith{#1}{>}{
+ \pgf@circ@siunitx@restrue
+ \noexpandarg
+ \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
+ %\typeout{si |#1|}
+ }{
+ \pgf@circ@siunitx@resfalse
+ %\typeout{no si |#1|}
+ }
+ \fi
+}
+
+\def\pgf@circ@finallabel#1{%
+ \edef\pgf@temp{}%
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1label/unit}}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \ctikzvalof{bipole/#1label/name}%
+ \else%
+ $\SI{\ctikzvalof{bipole/#1label/name}}{\ctikzvalof{bipole/#1label/unit}}$%
+ \fi%
+}
+
+\def\pgf@circ@ifkeyempty#1{
+ \pgfextra{
+ \ctikzset{#1/.get=\pgf@circ@temp}
+ \edef\pgf@temp{}
+ }
+ \ifx\pgf@circ@temp\pgf@temp
+}
+
+
+%%%---------- close: pgfcircutils
+%%%%%%%%%%% Springe nach pgfcircmath
+%%%---------- open: pgfcircmath.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Math routines
+
+\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
+
+% angle between 0 and 360
+\def\pgf@circ@slope#1#2{%
+ \pgf@process{#1}%
+ \pgf@xa=\pgf@x%
+ \pgf@ya=\pgf@y%
+ \pgf@process{#2}%
+ \advance\pgf@x by-\pgf@xa%
+ \advance\pgf@y by-\pgf@ya%
+ \ifdim\pgf@x<0.1pt
+ \ifdim\pgf@x>-0.1pt % vertical
+ \ifdim\pgf@y<0pt
+ \def\pgfmathresult{-90.0}
+ \else
+ \def\pgfmathresult{+90.0}
+ \fi
+ \else % oblique with dx < 0
+ \pgfmathdivide{\pgf@y}{\pgf@x}
+ \pgfmathatan{\pgfmathresult}
+ \ifdim\pgf@x<0pt
+ \pgfmathsubtract{\pgfmathresult}{+180}
+ \fi
+ \fi
+ \else % oblique with dx > 0
+ \pgfmathdivide{\pgf@y}{\pgf@x}
+ \pgfmathatan{\pgfmathresult}
+ \ifdim\pgf@x<0pt
+ \pgfmathsubtract{\pgfmathresult}{+180}
+ \fi
+ \fi
+ \pgf@x=\pgfmathresult pt
+ \ifdim\pgf@x<0pt
+ \pgfmathadd{\pgfmathresult}{+360}
+ \fi
+ }
+
+
+%%%---------- close: pgfcircmath
+
+%%%%%%%%%%% Springe nach pgfcircshapes
+%%%---------- open: pgfcircshapes.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Other shapes
+
+
+%% Nothing
+
+\pgfdeclareshape{emptyshape}{
+ \savedanchor{\northeast}{%
+ \pgf@x=.5\wd\pgfnodeparttextbox%
+ \pgf@y=.5\ht\pgfnodeparttextbox%
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{east}{%
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{south}{%
+ \northeast
+ \pgf@y=-\pgf@y
+ \pgf@x=0cm
+ }
+ \anchor{west}{
+ \northeast
+ \pgf@y=0cm
+ \pgf@x=-\pgf@x
+ }
+ \anchor{text}{%
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+}
+
+%% Full terminal
+
+\pgfdeclareshape{circ}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}}
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Empty terminal
+
+\pgfdeclareshape{ocirc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}}
+ }
+
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Current arrow
+
+\pgfdeclareshape{currarrow}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \divide \pgf@circ@res@step by 16
+
+ \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+
+ \endpgfscope
+ }
+
+}
+
+%% Current arrow
+
+\pgfdeclareshape{inputarrow}{
+ \savedanchor{\tip}{
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \tip
+ }
+ \anchor{tip}{
+ \tip
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \divide \pgf@circ@res@step by 16
+
+ \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{fill}
+
+ \endpgfscope
+ }
+
+}
+
+%%%---------- close: pgfcircshapes
+%%%%%%%%%%% Springe nach pgfcircmonopoles
+%%%---------- open: pgfcircmonopoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Monopoles
+
+%% Ground symbol
+
+\pgfdeclareshape{ground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+
+
+\pgfdeclareshape{rground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{tground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ %\pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{sground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+% noiseless ground
+\pgfdeclareshape{nground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{1.3\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpatharc{0}{180}{1.3\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \endpgfscope
+ }
+}
+
+% protective ground
+\pgfdeclareshape{pground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathcircle{\pgfpoint{0pt}{-\pgf@circ@res@step}} {1.2\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \endpgfscope
+ }
+}
+
+% chassis ground
+\pgfdeclareshape{cground}{
+\anchor{center}{
+ \pgfpointorigin
+}
+\behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/chassis/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-1.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% Contributed by Leonardo Azzinnari
+\pgfdeclareshape{tlinestub}{
+ \anchor{center}{\pgfpointorigin}
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+
+
+
+\pgfdeclareshape{antenna}{
+\anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
+ \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=6\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
+
+ % \pgfpathmoveto{\pgfpointorigin}
+ % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ % \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgftransformxshift{ -4\pgf@circ@res@step }
+
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+ }
+
+
+\pgfdeclareshape{txantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
+ \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=6\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
+% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+ }
+
+
+\pgfdeclareshape{rxantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
+ \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=6\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
+% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+% Vcc
+\pgfdeclareshape{vcc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgf@x=0pt
+ \pgf@y=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgf@y=2\pgf@y
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+% match
+\pgfdeclareshape{match}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
+ \pgf@x=1.5\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \pgf@y=-1.5\ht\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
+ \pgfusepath{fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+% oscillator
+\pgfdeclareshape{oscillator}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{north}{
+ \pgf@x=\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
+ \pgf@x=-0.5\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{south}{
+ \pgf@x=\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
+ \pgf@x=-0.5\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{east}{
+ \pgfpointorigin
+ \pgf@x=-\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
+ }
+ \anchor{west}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgf@x=\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
+ \pgf@x=-2\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \pgf@y=-\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
+ \pgf@circ@res@step=.5\pgf@circ@res@step
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw circle
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{-\pgf@circ@res@step}{0}} {\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-1.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+}
+
+%%%---------- close: pgfcircmonopoles
+%%%%%%%%%%% Springe nach pgfcircbipoles
+%%%---------- open: pgfcircbipoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%% Generic macro for defining a bipole shape
+% #1 - additional anchors
+% #2 - lower y-size of the bipole (from the center).
+% #3 - #shape is the name of the shape
+% #4 - upper y-size of the bipole (from the center)
+% #5 - width of the bipole
+% #6 - macros drawing the bipole
+
+
+\long\def\pgfcircdeclarebipole#1#2#3#4#5#6{
+ \pgfdeclareshape{#3shape}{
+
+ \savedanchor{\northeast}{
+ \pgf@y=#4\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\northeastborder}{
+ \pgf@y=#4\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwestborder}{
+ \pgf@y=-#2\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=-#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwest}{
+ \pgf@y=-#2\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\centerpoint}{
+ \pgf@circ@res@down=-#2\pgf@circ@Rlen
+ \pgf@circ@res@up=#4\pgf@circ@Rlen
+ \pgfpointorigin
+ \pgf@y=\pgf@circ@res@up
+ \advance\pgf@y by\pgf@circ@res@down
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{n}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@x=0cm
+ }
+ \anchor{ne}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ }
+ \anchor{nw}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@x=-\pgf@x
+ }
+ \anchor{e}{%
+ \ifpgf@circuit@bipole@reversed\else\southwest\northeast\fi
+ \pgf@y=0cm
+ }
+ \anchor{s}{%
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@x=0cm
+ }
+ \anchor{se}{%
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@x=-\pgf@x
+ }
+ \anchor{sw}{%
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ }
+ \anchor{w}{
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \anchor{north}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@x=0cm
+ }
+ \anchor{east}{%
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+ \anchor{south}{%
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@x=0cm
+ }
+ \anchor{west}{
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \anchor{right}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+ \anchor{above}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@x=0cm
+ }
+ \anchor{left}{%
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \anchor{below}{%
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@x=0cm
+ }
+ \anchor{a}{%
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+ \anchor{b} {
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \savedanchor{\textanchor}{%
+ \pgf@y=\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \anchor{text}{%
+ \textanchor
+ }
+ \anchorborder{%
+ \def\pgf@temp{false}
+ \ifpgf@circuit@bipole@reversed\pgf@temp
+ \pgf@circ@res@left=-\pgf@x
+ \pgf@circ@res@right=-\pgf@y
+ \else
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@right=\pgf@y
+ \fi
+ \ifdim\pgf@circ@res@right>0cm
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
+ \else
+ \southwestborder
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
+ \fi
+ }
+
+ #1
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@zero = 0cm
+ \pgf@circ@res@left = -\pgf@x
+ \pgf@circ@res@right = \pgf@x
+ \southwest
+ \pgf@circ@res@down = \pgf@y
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ #6
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ }
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Standard bipole shapes declarations
+
+%% Resistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/resistor/height}}{resistor}{\ctikzvalof{bipoles/resistor/height}}{\ctikzvalof{bipoles/resistor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+
+%% Variable resistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vresistor/height}}{vresistor}{\ctikzvalof{bipoles/vresistor/height}}{\ctikzvalof{bipoles/vresistor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vresistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 12
+ \def\myfrac{.5}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\myfrac\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\myfrac\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\myfrac\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\myfrac\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\myfrac\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\myfrac\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+%% Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/capacitor/height}}{capacitor}{\ctikzvalof{bipoles/capacitor/height}}{\ctikzvalof{bipoles/capacitor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/capacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+%% Polar Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pcapacitor/height}}{polarcapacitor}{\ctikzvalof{bipoles/pcapacitor/height}}{\ctikzvalof{bipoles/pcapacitor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/pcapacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgftransformrotate{-90}
+ \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+}
+
+%% Battery
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery/height}}{battery}{\ctikzvalof{bipoles/battery/height}}{\ctikzvalof{bipoles/battery/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 6
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+
+%% Battery 1
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery1/height}}{battery1}{\ctikzvalof{bipoles/battery1/height}}{\ctikzvalof{bipoles/battery1/width}}{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+
+
+
+ \pgfusepath{draw}
+}
+
+
+
+%% cute inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cuteinductor/height}}{cuteinductor}{\ctikzvalof{bipoles/cuteinductor/height}}{\ctikzvalof{bipoles/cuteinductor/width}}{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/cuteinductor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/cuteinductor/coils}
+
+ \pgfdecorationsegmentamplitude=\ctikzvalof{bipoles/cuteinductor/height}\pgf@circ@Rlen
+ \pgfdecorationsegmentamplitude=.5\pgfdecorationsegmentamplitude
+ \pgfdecorationsegmentlength = \pgf@circ@res@step
+ \pgfdecorationsegmentaspect=.6
+
+ \pgfdecoration{{coil}{\pgfdecoratedremainingdistance}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \endpgfdecoration
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{stroke}
+}
+
+
+
+%% american inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/americaninductor/height 2}}{americaninductor}{\ctikzvalof{bipoles/americaninductor/height}}{\ctikzvalof{bipoles/americaninductor/width}}{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
+
+ \pgfdecorationsegmentamplitude=\ctikzvalof{bipoles/americaninductor/height}\pgf@circ@Rlen
+ \pgfdecorationsegmentamplitude=.45\pgfdecorationsegmentamplitude
+ \pgfdecorationsegmentlength = 1.99\pgf@circ@res@step
+
+ \pgfdecoration{{bumps}{\pgfdecoratedremainingdistance}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \endpgfdecoration
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{stroke}
+}
+
+
+
+
+
+%% Independent voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsource/height}}{vsource}{\ctikzvalof{bipoles/vsource/height}}{\ctikzvalof{bipoles/vsource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+%% Independent voltage source - American style
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourceam/height}}{vsourceAM}{\ctikzvalof{bipoles/vsourceam/height}}{\ctikzvalof{bipoles/vsourceam/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+
+
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
+
+ \pgfusepath{draw}
+}
+
+
+
+%% Independent sinusoidal voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesin/height}}{vsourcesin}{\ctikzvalof{bipoles/vsourcesin/height}}{\ctikzvalof{bipoles/vsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+% contributed by Alistair Kwan
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesquare/height}}{vsourcesquare}{\ctikzvalof{bipoles/vsourcesquare/height}}{\ctikzvalof{bipoles/vsourcesquare/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Independent current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isource}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Independent current source - American
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isourceam/height}}{isourceAM}{\ctikzvalof{bipoles/isourceam/height}}{\ctikzvalof{bipoles/isourceam/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+
+
+
+%% Independent sinusoidal current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isourcesin}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+
+%% Controlled voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsource/height}}{cvsource}{\ctikzvalof{bipoles/cvsource/height}}{\ctikzvalof{bipoles/cvsource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Controlled voltage source - American
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourceam/height}}{cvsourceAM}{\ctikzvalof{bipoles/cvsourceam/height}}{\ctikzvalof{bipoles/cvsourceam/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$-$}
+ \pgfusepath{draw}
+}
+
+
+%% Controlled sinusoidal voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cvsourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+%% Controlled sinusoidal current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cisourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+%% Controlled current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisource/height}}{cisource}{\ctikzvalof{bipoles/cisource/height}}{\ctikzvalof{bipoles/cisource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Controlled current source - American
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisourceam/height}}{cisourceAM}{\ctikzvalof{bipoles/cisourceam/height}}{\ctikzvalof{bipoles/cisourceam/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{draw}}
+ \endpgfscope
+}
+
+%% Black generic diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulldiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black Zener diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.2\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black Schottky diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullsdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{.8\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.2\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.2\pgf@circ@res@left}{.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Black tunnel diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulltdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black light emitting diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulllediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+}
+
+%% Black photodiode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullpdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black varcap
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varcap/height}}{fullvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+}
+
+%% Empty generic diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptydiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty Zener diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.2\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty Schottky diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptysdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{.8\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.2\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.2\pgf@circ@res@left}{.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty tunnel diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptytdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty light emitting diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptylediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty photodiode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptypdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty varcap
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varcap/height}}{emptyvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+}
+
+%% Closing SPST
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{cspst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@left}{.9\pgf@circ@res@up}}
+ \pgfpatharc{65}{25}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
+ %\pgfsetarrowsend{latex'}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.1\pgf@circ@res@right}{-.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.14\pgf@circ@res@right}{-.35\pgf@circ@res@up}}
+ \pgfsetarrowsend{latex'}
+ \pgfusepath{draw}
+
+}
+
+%% Opening SPST
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{ospst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@right}{.1\pgf@circ@res@down}}
+ \pgfpatharc{15}{50}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
+ %\pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.85\pgf@circ@res@left}{1.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.87\pgf@circ@res@left}{1.26\pgf@circ@res@up}}
+ \pgfsetarrowsend{latex'}
+ \pgfusepath{draw}
+
+
+}
+
+
+%% Push Button
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pushbutton/height 2}}{pushbutton}{\ctikzvalof{bipoles/pushbutton/height}}{\ctikzvalof{bipoles/pushbutton/width}}{
+
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Ammeter
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ammeter/height}}{ammeter}{\ctikzvalof{bipoles/ammeter/height}}{\ctikzvalof{bipoles/ammeter/width}}{
+ \def\pgf@circ@temp{right}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \def\pgf@circ@temp{below}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \pgf@circ@res@step=1.2\pgf@circ@res@up
+ \fi
+ \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetarrowsend{}
+
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfnode{circle}{center}{\textbf{A}}{}{}
+}
+
+%% Voltmeter
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/voltmeter/height}}{voltmeter}{\ctikzvalof{bipoles/voltmeter/height}}{\ctikzvalof{bipoles/voltmeter/width}}{
+ \def\pgf@circ@temp{right}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \def\pgf@circ@temp{below}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \pgf@circ@res@step=1.2\pgf@circ@res@up
+ \fi
+ \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetarrowsend{}
+
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfnode{circle}{center}{\textbf{V}}{}{}
+
+}
+
+%% Short circuit
+
+\pgfcircdeclarebipole{}{0}{short}{0}{0}{ }
+
+%% Open circuit
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/open/height}}{open}{\ctikzvalof{bipoles/open/height}}{\ctikzvalof{bipoles/open/width}}{
+
+}
+
+%% Generic bipole - used as resistor by some (bleah)
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/generic/height}}{generic}{\ctikzvalof{bipoles/generic/height}}{\ctikzvalof{bipoles/generic/width}}{
+
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+}
+
+
+%% fuse
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fuse/height}}{fuse}{\ctikzvalof{bipoles/fuse/height}}{\ctikzvalof{bipoles/fuse/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+}
+
+
+
+%% Generic bipole, filled - used as inductor by some (bleah)
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fullgeneric/height}}{fullgeneric}{\ctikzvalof{bipoles/fullgeneric/height}}{\ctikzvalof{bipoles/fullgeneric/width}}{
+
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw,fill}
+}
+
+
+%% Generic asymmetric bipole
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ageneric/height}}{ageneric}{\ctikzvalof{bipoles/ageneric/height}}{\ctikzvalof{bipoles/ageneric/width}}{
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+%% asymmetric fuse
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/afuse/height}}{afuse}{\ctikzvalof{bipoles/afuse/height}}{\ctikzvalof{bipoles/afuse/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+
+
+%% Memristor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/memristor/height}}{memristor}{\ctikzvalof{bipoles/memristor/height}}{\ctikzvalof{bipoles/memristor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+
+
+%% Generic empty tunable
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tgeneric/height}}{tgeneric}{\ctikzvalof{bipoles/tgeneric/height}}{\ctikzvalof{bipoles/tgeneric/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Photoresistor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/photoresistor/height 2}}{photoresistor}{\ctikzvalof{bipoles/photoresistor/height}}{\ctikzvalof{bipoles/photoresistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+%% Thermistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistor/height}}{thermistor}{\ctikzvalof{bipoles/thermistor/height}}{\ctikzvalof{bipoles/thermistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ %\pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ %\endpgfscope
+}
+
+
+%% Thermistor PTC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorptc/height 2}}{thermistorptc}{\ctikzvalof{bipoles/thermistorptc/height}}{\ctikzvalof{bipoles/thermistorptc/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Thermistor NTC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorntc/height 2}}{thermistorntc}{\ctikzvalof{bipoles/thermistorntc/height}}{\ctikzvalof{bipoles/thermistorntc/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% thermocouple
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermocouple/height 2}}{thermocouple}{\ctikzvalof{bipoles/thermocouple/height}}{\ctikzvalof{bipoles/thermocouple/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+}
+
+%% Varistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varistor/height}}{varistor}{\ctikzvalof{bipoles/varistor/height}}{\ctikzvalof{bipoles/varistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\tiny\textsf{U}}}
+}
+
+
+
+%% Generic full tunable
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tfullgeneric/height}}{tfullgeneric}{\ctikzvalof{bipoles/tfullgeneric/height}}{\ctikzvalof{bipoles/tfullgeneric/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw,fill}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Variable Cute Inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcuteinductor/height}}{vcuteinductor}{\ctikzvalof{bipoles/vcuteinductor/height}}{\ctikzvalof{bipoles/vcuteinductor/width}}{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/vcuteinductor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vcuteinductor/coils}
+
+ \pgfdecorationsegmentamplitude=\ctikzvalof{bipoles/vcuteinductor/coil height}\pgf@circ@Rlen
+ \pgfdecorationsegmentamplitude=.5\pgfdecorationsegmentamplitude
+ \pgfdecorationsegmentlength = \pgf@circ@res@step
+ \pgfdecorationsegmentaspect=.6
+
+ \pgfdecoration{{coil}{\pgfdecoratedremainingdistance}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \endpgfdecoration
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{stroke}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% variable american inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vamericaninductor/height 2}}{vamericaninductor}{\ctikzvalof{bipoles/vamericaninductor/height}}{\ctikzvalof{bipoles/vamericaninductor/width}}{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
+
+ \pgfdecorationsegmentamplitude=\ctikzvalof{bipoles/vamericaninductor/height}\pgf@circ@Rlen
+ \pgfdecorationsegmentamplitude=.45\pgfdecorationsegmentamplitude
+ \pgfdecorationsegmentamplitude=.45\pgfdecorationsegmentamplitude % per freccia
+ \pgfdecorationsegmentlength = 1.99\pgf@circ@res@step
+
+ \pgfdecoration{{bumps}{\pgfdecoratedremainingdistance}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \endpgfdecoration
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{stroke}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+%% Variable Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcapacitor/height}}{vcapacitor}{\ctikzvalof{bipoles/vcapacitor/height}}{\ctikzvalof{bipoles/vcapacitor/width}}{
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/width}\pgf@circ@Rlen
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Handling of terminals
+
+
+%% Easily usable styles
+
+\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=full}}
+
+\tikzset{reversed/.style = {\circuitikzbasekey/bipole/reversed=true}}
+
+
+%% The output routine
+
+\def\drawpoles{
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{empty} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztostart) node[ocirc] {} }
+ \else
+ \pgfextra{ \def\pgf@temp{full} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztostart) node[circ] {} }
+ \fi
+ \fi
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} \def\pgf@temp{empty} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztotarget) node[ocirc] {} }
+ \else
+ \pgfextra{ \def\pgf@temp{full} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztotarget) node[circ] {} }
+ \fi
+ \fi
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+%% Lamp
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lamp/height}}{lamp}{\ctikzvalof{bipoles/lamp/height}}{\ctikzvalof{bipoles/lamp/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tline/height}
+ }{tline}{\ctikzvalof{bipoles/tline/height}
+ }{\ctikzvalof{bipoles/tline/width}
+ }
+ {
+ \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0}}
+ {\pgfpoint{\pgf@circ@res@step}{0}}
+ {\pgfpoint{0}{-\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% SQUID added by Cor Molenaar 5 March 2010
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/squid/height}}{squid}{\ctikzvalof{bipoles/squid/height}}{\ctikzvalof{bipoles/squid/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+
+
+% Generic barrier added by Cor Molenaar 5 March 2010
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/barrier/height}}{barrier}{\ctikzvalof{bipoles/barrier/height}}{\ctikzvalof{bipoles/barrier/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
+
+ \pgfusepath{draw}
+}
+
+
+% Contributed by Danilo Piazzalunga
+
+\pgfdeclareshape{buffer}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ }
+ }
+
+
+
+
+
+\pgfdeclareshape{plain amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+
+
+ }
+ }
+
+%% Generic two port box
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/twoport/height}}{twoport}{\ctikzvalof{bipoles/twoport/height}}{\ctikzvalof{bipoles/twoport/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+}
+
+%% voltage controled oscillator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vco/width}}{vco}{\ctikzvalof{bipoles/twoport/width}}{\ctikzvalof{bipoles/vco/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw circle
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+}
+
+%% bandpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bandpass/width}}{bandpass}{\ctikzvalof{bipoles/bandpass/width}}{\ctikzvalof{bipoles/bandpass/width}}{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% highpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/highpass/width}}{highpass}{\ctikzvalof{bipoles/highpass/width}}{\ctikzvalof{bipoles/highpass/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% lowpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lowpass/width}}{lowpass}{\ctikzvalof{bipoles/lowpass/width}}{\ctikzvalof{bipoles/lowpass/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% ADC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/adc/width}}{adc}{\ctikzvalof{bipoles/adc/width}}{\ctikzvalof{bipoles/adc/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{A}
+ \def\textii{D}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{A}
+ \def\textii{D}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DAC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dac/width}}{dac}{\ctikzvalof{bipoles/dac/width}}{\ctikzvalof{bipoles/dac/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{D}
+ \def\textii{A}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{D}
+ \def\textii{A}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DSP
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dsp/width}}{dsp}{\ctikzvalof{bipoles/dsp/width}}{\ctikzvalof{bipoles/dsp/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{DSP}}
+}
+
+%% FFT
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fft/width}}{fft}{\ctikzvalof{bipoles/fft/width}}{\ctikzvalof{bipoles/fft/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{FFT}}
+}
+
+%% Amplifier
+\pgfcircdeclarebipole{}{
+ %\ifpgf@circuit@box
+ \ctikzvalof{bipoles/twoport/width}
+ %\else
+ % \ctikzvalof{bipoles/amp/width}
+ %\fi
+ }{amp}{
+ %\ifpgf@circuit@box
+ \ctikzvalof{bipoles/twoport/width}
+ %\else
+ % \ctikzvalof{bipoles/amp/width}
+ % \fi
+ }{
+ % \ifpgf@circuit@box
+ \ctikzvalof{bipoles/twoport/width}
+ % \else
+ % \ctikzvalof{bipoles/amp/width}
+ % \fi
+ }{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
+
+
+ % draw outer box
+ %\ifpgf@circuit@box
+ % \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ %\fi
+ % draw outer box
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.63\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0.75\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgfusepath{draw}
+}
+
+
+%% variable amplifier
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vamp/width}}{vamp}{\ctikzvalof{bipoles/vamp/width}}{\ctikzvalof{bipoles/vamp/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vamp/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.63\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0.75\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.7\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% pi attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piattenuator/width}}{piattenuator}{\ctikzvalof{bipoles/piattenuator/width}}{\ctikzvalof{bipoles/piattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable pi attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vpiattenuator/width}}{vpiattenuator}{\ctikzvalof{bipoles/vpiattenuator/width}}{\ctikzvalof{bipoles/vpiattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% T attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tattenuator/width}}{tattenuator}{\ctikzvalof{bipoles/tattenuator/width}}{\ctikzvalof{bipoles/tattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable T attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vtattenuator/width}}{vtattenuator}{\ctikzvalof{bipoles/vtattenuator/width}}{\ctikzvalof{bipoles/vtattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% phase shifter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{phaseshifter}{\ctikzvalof{bipoles/phaseshifter/width}}{\ctikzvalof{bipoles/phaseshifter/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+}
+
+%% variable phase shifter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{vphaseshifter}{\ctikzvalof{bipoles/vphaseshifter/width}}{\ctikzvalof{bipoles/vphaseshifter/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% detector
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/detector/width}}{detector}{\ctikzvalof{bipoles/detector/width}}{\ctikzvalof{bipoles/detector/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % draw inner stuff
+ \pgfsetlinewidth{0.8\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@fulldiode
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
+ \fi
+
+}
+
+
+
+
+%% european gas filled surge arrester
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{european gas filled surge arrester}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{\ctikzvalof{bipoles/european gas filled surge arrester/width}}{
+
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+}
+
+
+
+
+%% american gas filled surge arrester
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{american gas filled surge arrester}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
+ %\def\pgf@circ@temp{right}
+ %\ifx\tikz@res@label@pos\pgf@circ@temp
+ % \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ %\else
+% \def\pgf@circ@temp{below}
+% \ifx\tikz@res@label@pos\pgf@circ@temp
+% \pgf@circ@res@step=-1.2\pgf@circ@res@up
+% \else
+% \pgf@circ@res@step=1.2\pgf@circ@res@up
+% \fi
+% \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfnode{circle}{center}{}{}{}
+
+ \pgfscope
+ \pgfsetarrowsend{latex}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope{}
+
+ %\pgftransformshift{\pgfpoint{.25\pgf@circ@res@left}{.45\pgf@circ@res@down}}
+ %\pgfnode{circ}{center}{}{}{}
+ %\pgftransformshift{}
+ \pgfcircle{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
+ \pgfusepath{fill}
+}
+
+
+
+
+
+
+%%%---------- close: pgfcircbipoles
+%%%%%%%%%%% Springe nach pgfcirctripoles
+%%%---------- open: pgfcirctripoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Tripoles
+
+
+\pgfdeclareshape{mixer}
+{
+ \savedanchor\northwest{
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer circle
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{adder}
+{
+ \savedanchor\northwest{
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer circle
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+
+
+ \pgfdeclareshape{spdt}
+ {
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out 1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{out 2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/margin}\pgf@circ@res@left
+
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
+ {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
+ }
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Logic ports
+%%
+
+
+
+
+
+
+\long\def\pgfcircdeclarelogicport#1#2{
+ \pgfdeclareshape{american #1 port}
+ {
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in 1}{
+ \inOne
+ }
+ \anchor{in}{
+ \inOne
+ }
+ \anchor{in 2}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ #2
+
+ }
+ }
+}
+
+
+\pgfcircdeclarelogicport{and}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@down}}
+ \pgfpathcurveto
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {.5\pgf@circ@res@down}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {0pt}}
+ \pgfpathcurveto
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {.5\pgf@circ@res@up}}
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+
+\pgfcircdeclarelogicport{nand}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathcurveto
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarelogicport{nor}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+}
+
+
+
+
+\pgfcircdeclarelogicport{or}{
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarelogicport{xor}{
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/distance}\pgf@circ@res@right+}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+
+
+\pgfcircdeclarelogicport{xnor}{
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/circle width}\pgf@circ@res@right
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/distance}\pgf@circ@res@right+}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
+
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+}
+
+
+\pgfdeclareshape{american not port}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ }
+ }
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% #1 - name
+% #2 - text inside
+% #3 - number of inputs
+% #4 - is it a not
+
+\long\def\pgfcircdeclareeurologicport#1#2#3#4{
+ \pgfdeclareshape{european #1 port}
+ {
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \inOne
+ }
+ \anchor{in 1}{
+ \inOne
+ }
+ \anchor{in 2}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \def\pgf@temp{1}
+ \def\pgf@circ@temp{#3}
+ \ifx\pgftemp\pgf@circ@temp % one input
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}
+ \else % two inputs
+ \pgfpathmoveto{
+ \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathmoveto{
+ \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
+ \fi%
+ %
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
+ %
+ \edef\pgf@temp{not}
+ \edef\pgf@circ@temp{#4}
+ \ifx\pgf@temp\pgf@circ@temp % is a not
+ \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not height}\pgf@circ@res@up}}
+ \fi
+ %
+ \pgfusepath{draw}
+ %
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgftext{#2}
+ %
+ %
+ %
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+%
+%
+ }
+ }
+}
+
+
+
+\pgfcircdeclareeurologicport{and}{$\&$}{2}{}
+\pgfcircdeclareeurologicport{or}{$\ge 1$}{2}{}
+\pgfcircdeclareeurologicport{xor}{$=1$}{2}{}
+\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
+\pgfcircdeclareeurologicport{nand}{$\&$}{2}{not}
+\pgfcircdeclareeurologicport{nor}{$\ge 1$}{2}{not}
+\pgfcircdeclareeurologicport{xnor}{$=1$}{2}{not}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\long\def\pgfcircdeclaretransistor#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northeast{% upper right
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x=0pt
+ }
+% \savedanchor\northeast{%
+% \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+% \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/height}\pgf@y
+% \pgf@y=.5\pgf@y
+% \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+% \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/width}\pgf@x
+% }
+ \savedanchor\left{%center left
+ \pgf@y=0pt
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/width}\pgf@x
+ }
+ \anchor{text}{
+ \northeast
+ \pgfpoint
+ {12\pgf@circ@res@right +0.2*(\pgf@circ@res@right-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left)}
+ {0.6\pgf@y}
+ }
+ %
+ % pseudo-bipole
+ \anchor{left}{ % south
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{right}{
+ \northeast
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ }
+ \anchor{north east}{
+ \northeast
+ }
+ \anchor{north west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{south east}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+
+ #2
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ %
+ %
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \left
+ \pgf@circ@res@left = \pgf@x
+ %
+ #3
+ %
+ }
+ }
+}
+
+
+
+
+
+
+\long\def\pgfcircdeclaremos#1#2#3{
+ \pgfcircdeclaretransistor{#1}{
+ \anchor{G}{
+ \left
+ }
+ \anchor{gate}{
+ \left
+ }
+ \anchor{B}{
+ \left
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@x
+ }
+ \anchor{base}{
+ \left
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@x
+ }
+ #2
+ }
+ {#3}
+}
+
+
+
+
+
+
+
+
+
+\pgfcircdeclaremos{nmos}{
+ \anchor{D}{
+ \northeast
+ }
+ \anchor{drain}{
+ \northeast
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclaremos{pmos}{
+ \anchor{S}{
+ \northeast
+ }
+ \anchor{source}{
+ \northeast
+ }
+ \anchor{D}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{drain}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.4}{%
+ \pgfpoint%
+ {\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathcircle{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left - \pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ \pgfusepath{draw,fill}
+
+}
+
+
+
+
+
+
+
+\pgfcircdeclaretransistor{pnp}{
+ \anchor{E}{
+ \northeast
+ }
+ \anchor{emitter}{
+ \northeast
+ }
+ \anchor{B}{
+ \left
+ }
+ \anchor{base}{
+ \left
+ }
+ \anchor{C}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{collector}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate height 2}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+
+
+\pgfcircdeclaretransistor{npn}{
+ \anchor{C}{
+ \northeast
+ }
+ \anchor{collector}{
+ \northeast
+ }
+ \anchor{B}{
+ \left
+ }
+ \anchor{base}{
+ \left
+ }
+ \anchor{E}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{emitter}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+
+}
+
+
+
+\pgfcircdeclaretransistor{pigbt}{
+ \anchor{E}{
+ \northeast
+ }
+ \anchor{emitter}{
+ \northeast
+ }
+ \anchor{B}{
+ \left
+ }
+ \anchor{base}{
+ \left
+ }
+ \anchor{C}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{collector}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@down}}
+ %\pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height 2}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+
+}
+
+
+
+\pgfcircdeclaretransistor{nigbt}{
+ \anchor{C}{
+ \northeast
+ }
+ \anchor{collector}{
+ \northeast
+ }
+ \anchor{B}{
+ \left
+ }
+ \anchor{base}{
+ \left
+ }
+ \anchor{E}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{emitter}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@down}}
+ %\pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+
+}
+
+
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Contrib
+
+
+%%
+% IGFET (e.g. MOSFET)
+\long\def\pgfcircdeclarefet#1#2#3{
+ \pgfcircdeclaretransistor{#1}{
+ \anchor{B}{
+ \left
+ \pgf@x=\pgf@circ@res@right
+ }
+ \anchor{base}{
+ \left
+ \pgf@x=\pgf@circ@res@right
+ }
+ #2
+ }
+ {#3}
+}
+
+
+
+\pgfcircdeclarefet{nfet}{
+ \anchor{D}{
+ \northeast
+ }
+ \anchor{drain}{
+ \northeast
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{G}{
+ \left
+ }
+ \anchor{gate}{
+ \left
+ }
+
+}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@up*0.45}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@up*0.25}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down*0.25}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarefet{pfet}{
+ \anchor{D}{
+ \northeast
+ }
+ \anchor{drain}{
+ \northeast
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{G}{
+ \left
+ }
+ \anchor{gate}{
+ \left
+ }
+
+}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base height}\pgf@circ@res@up*0.45}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base height}\pgf@circ@res@up*0.25}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base height}\pgf@circ@res@down*0.25}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base height}\pgf@circ@res@down*0.45}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate height}\pgf@circ@res@down}}
+ %\pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgftransformrotate{180}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfcircdeclarefet{nigfete}{
+ \anchor{D}{
+ \northeast
+ }
+ \anchor{drain}{
+ \northeast
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{G}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ }
+ \anchor{gate}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
+ }
+}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ % DRAIN CONNECTION
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
+ % DRAIN
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
+
+ % GATE, ENHANCEMENT TYPE (DASHED)
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base height}\pgf@circ@res@up*0.45}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base height}\pgf@circ@res@up*0.25}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base height}\pgf@circ@res@down*0.25}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base height}\pgf@circ@res@down*0.45}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base height}\pgf@circ@res@down}}
+
+ % BULK
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ % SOURCE
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % GATE
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ % ARROW
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ % GATE CONNECTION
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+% N-CHANNEL IGFET DEPLETION TYPE
+\pgfcircdeclarefet{nigfetd}{
+ \anchor{D}{
+ \northeast
+ }
+ \anchor{drain}{
+ \northeast
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{G}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ }
+ \anchor{gate}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
+ }
+
+}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ % DRAIN CONNECTION
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@up}}
+ % DRAIN
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@up}}
+
+ % GATE, DEPLETION TYPE
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base height}\pgf@circ@res@down}}
+
+ % BULK
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ % SOURCE
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@down}}
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % GATE
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ % ARROW
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ % GATE CONNECTION
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@down}}
+ %\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfcircdeclarefet{pigfete}{
+ \anchor{D}{
+ \northeast
+ }
+ \anchor{drain}{
+ \northeast
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{G}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ }
+ \anchor{gate}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
+ }
+}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ % DRAIN CONNECTION
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
+ % DRAIN
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % GATE, DASHED, BOLD
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base height}\pgf@circ@res@up*0.45}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base height}\pgf@circ@res@up*0.25}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base height}\pgf@circ@res@down*0.25}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base height}\pgf@circ@res@down*0.45}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ % BULK
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ % SOURCE
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@down}}
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % GATE
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@down}}
+ %\pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ % ARROW
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ % Arrow has to be rotated, as this is a p-channel fet
+ \pgftransformrotate{180}
+ \pgftransformlineattime{-.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ % GATE CONNECTION (in line with source)
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@down}}
+ %\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+% P-CHANNEL IGFET DEPLETION TYPE
+\pgfcircdeclarefet{pigfetd}{
+ \anchor{D}{
+ \northeast
+ }
+ \anchor{drain}{
+ \northeast
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{G}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ }
+ \anchor{gate}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
+ }
+}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ % DRAIN CONNECTION
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@up}}
+ % DRAIN
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@up}}
+
+ \pgfusepath{draw}
+
+
+ % GATE DEPLETION TYPE
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ % BULK
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+
+ % SOURCE
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@down}}
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % GATE
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@down}}
+ %\pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ % ARROW
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ % PFET!
+ \pgftransformrotate{180}
+ \pgftransformlineattime{-.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ % GATE CONNECTION
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@down}}
+ %\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Contrib Danilo Piazzalunga
+
+
+
+
+
+
+\pgfcircdeclaretransistor{njfet}{
+ \anchor{G}{
+ \left
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/height}\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@y
+ \pgf@y=-.5\pgf@y
+ }
+ \anchor{gate}{
+ \left
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/height}\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@y
+ \pgf@y=-.5\pgf@y
+ }
+ \anchor{D}{
+ \northeast
+ }
+ \anchor{drain}{
+ \northeast
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclaretransistor{pjfet}{
+ \anchor{G}{
+ \left
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/height}\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@y
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{gate}{
+ \left
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/height}\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@y
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{S}{
+ \northeast
+ }
+ \anchor{source}{
+ \northeast
+ }
+ \anchor{D}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{drain}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.4}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+
+
+
+% ISFET
+\pgfcircdeclarefet{isfet}{
+ \anchor{D}{
+ \northeast
+ }
+ \anchor{drain}{
+ \northeast
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ % DRAIN CONNECTION
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ % DRAIN
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % GATE, DEPLETION TYPE
+ \pgfscope %% added
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth} %% added
+ \pgfusepath{draw} %% added
+ \endpgfscope %% added
+
+ % BULK
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ % SOURCE
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % GATE
+ %\pgfscope
+ %\pgfpathmoveto{\pgfpoint
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ %\pgfpathlineto{\pgfpoint
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ %\pgfsetlinewidth{2\pgflinewidth}
+ %\pgfusepath{draw}
+ %\endpgfscope
+
+ % ARROW
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfusepath{draw}
+
+ % Wavy lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+%% Black thyristor
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{anode}{
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{cathode}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/thyristor/height 2}}{thyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+
+%% Empty triac
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{anode}{
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \anchor{cathode}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/triac/height}}{triac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+
+
+
+
+
+
+
+
+\pgfcircdeclarebipole{
+ \anchor{out 1}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+ \anchor{out 2}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=.8\pgf@y
+ }
+}{\ctikzvalof{tripoles/toggleswitch/height 2}}{toggleswitch}{\ctikzvalof{tripoles/toggleswitch/height}}{\ctikzvalof{tripoles/toggleswitch/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetdash{}{0cm}
+}
+
+
+
+
+
+
+
+
+
+
+\pgfdeclareshape{op amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\scriptsize\ $-$}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\scriptsize\ $+$}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+
+
+ }
+ }
+
+
+
+
+%% Potentiometer
+\pgfcircdeclarebipole{
+ \anchor{wiper}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+ \anchor{W}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+}{\ctikzvalof{bipoles/potentiometer/height 2}}{potentiometer}{\ctikzvalof{bipoles/potentiometer/height}}{\ctikzvalof{bipoles/potentiometer/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/potentiometer/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+
+%% Generic tunable
+
+\pgfcircdeclarebipole{
+ \anchor{wiper}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+}{\ctikzvalof{bipoles/generic potentiometer/height 2}}{genericpotentiometer}{\ctikzvalof{bipoles/generic potentiometer/height}}{\ctikzvalof{bipoles/generic potentiometer/width}}{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+\pgfdeclareshape{circulator}
+{
+ \savedanchor\northwest{
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer circle
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % inner arrow
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
+ \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+
+% Wilkinson divider
+\pgfdeclareshape{wilkinson}{
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{out2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ % draw inner resisitor - european or american style is recognised
+ {
+ \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgftransformrotate{90}
+
+ % calculate size of resistor
+ \ifpgf@circuit@europeanresistor
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{genericshape}{center}{}{pgf@generic}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{resistorshape}{center}{}{pgf@resistor}{\pgfusepath{fill}}
+ \fi
+ }
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+
+
+%%%---------- close: pgfcirctripoles
+%%%%%%%%%%% Springe nach pgfcircquadpoles
+%%%---------- open: pgfcircquadpoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Quadripoles
+
+\long\def\pgfcircdeclarequadpole#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
+ }
+ \anchor{A2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{A1}{
+ \northwest
+ }
+ \anchor{B2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{base}{
+ \northwest
+ \pgf@x=0pt
+ }
+ #3
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ %\pgf@circ@Rlen=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+
+ #2
+
+ }
+ }
+}
+
+
+
+\def\pgf@circ@drawtransformerbasicanchor{
+ \pgfkeysvalueof{/tikz/circuitikz/quadpoles/trans/height}
+ \anchor{AA2}{
+ \northwest
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{AA1}{
+ \northwest
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+}
+
+\def\pgf@circ@drawtransformerbasicbody{
+ \def\stretto{.4}
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@down}%
+ }
+
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+
+ \endpgfscope
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@up}%
+ }
+
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@inductor1}{b}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf@inductor1}{a}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@inductor2}{a}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf@inductor2}{b}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+}
+
+
+
+ % contrib Kristofer M. Monisit
+
+ \pgfdeclareshape{fd op amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out +}{
+ \northwest
+ \pgf@y=.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{out -}{
+ \northwest
+ \pgf@y=-.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\scriptsize\ $-$}
+
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\scriptsize\ $+$}
+
+
+ % Negative output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@down}]{\scriptsize\ $-$}
+
+
+ % Positive output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@up}]{\scriptsize\ $+$}
+
+
+ % Draw them all!
+ \pgfusepath{draw}
+
+ % Triangle
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+
+
+
+
+\pgfcircdeclarequadpole{transformer}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+}{\pgf@circ@drawtransformerbasicanchor}
+
+\pgfcircdeclarequadpole{transformer core}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+}{\pgf@circ@drawtransformerbasicanchor}
+
+
+\pgfcircdeclarequadpole{gyrator}{
+
+ \def\stretto{.4}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{.7*\stretto\pgf@circ@res@down}}
+ \pgfpatharc{90}{270}{.7*\stretto\pgf@circ@res@down}
+
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{.7*\stretto\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{.7*\stretto\pgf@circ@res@down}
+ \pgfusepath{draw}
+
+}{}
+
+%% coupler
+% defines a general outer box for couplers
+% TikZ usage:
+% \draw (0,0) node[coupler](coup){\SI{-3}{dB}}
+% (coup.port1) to[short,-o] ++(-1,0)
+%
+
+\long\def\pgfcircdeclarecoupler#1#2{
+ \pgfdeclareshape{#1}{
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/coupler/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/coupler/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{port1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{port4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ #2
+
+ }
+ }
+}
+
+% straight coupler
+\pgfcircdeclarecoupler{coupler}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+}
+
+% "bended" coupler
+\pgfcircdeclarecoupler{coupler2}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+
+
+}
+
+%%%---------- close: pgfcircquadpoles
+%%%%%%%%%%% Springe nach pgfcircnpoles
+%%%---------- open: pgfcircnpoles.tex
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% N-poles
+
+\pgfkeys{/tikz/circuitikz,lab/.code={
+
+
+}}
+
+\long\def\pgfcircdeclarenpole#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
+ }
+ \anchor{A2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{A1}{
+ \northwest
+ }
+ \anchor{B2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{base}{
+ \northwest
+ \pgf@x=0pt
+ }
+ #3
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ %\pgf@circ@Rlen=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+
+ #2
+
+ }
+ }
+}
+
+
+
+\def\pgf@circ@drawtransformerbasicanchor{
+ \pgfkeysvalueof{/tikz/circuitikz/quadpoles/trans/height}
+ \anchor{AA2}{
+ \northwest
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{AA1}{
+ \northwest
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+}
+
+\def\pgf@circ@drawtransformerbasicbody{
+ \def\stretto{.4}
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@down}%
+ }
+
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+
+ \endpgfscope
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@up}%
+ }
+
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@inductor1}{b}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf@inductor1}{a}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@inductor2}{a}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf@inductor2}{b}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+}
+
+
+
+ % contrib Kristofer M. Monisit
+
+ \pgfdeclareshape{fd op amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out +}{
+ \northwest
+ \pgf@y=.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{out -}{
+ \northwest
+ \pgf@y=-.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\scriptsize\ $-$}
+
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\scriptsize\ $+$}
+
+
+ % Negative output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@down}]{\scriptsize\ $-$}
+
+
+ % Positive output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@up}]{\scriptsize\ $+$}
+
+
+ % Draw them all!
+ \pgfusepath{draw}
+
+ % Triangle
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+
+
+
+
+\pgfcircdeclarequadpole{transformer}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+}{\pgf@circ@drawtransformerbasicanchor}
+
+\pgfcircdeclarequadpole{transformer core}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+}{\pgf@circ@drawtransformerbasicanchor}
+
+
+\pgfcircdeclarequadpole{gyrator}{
+
+ \def\stretto{.4}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{.7*\stretto\pgf@circ@res@down}}
+ \pgfpatharc{90}{270}{.7*\stretto\pgf@circ@res@down}
+
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{.7*\stretto\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{.7*\stretto\pgf@circ@res@down}
+ \pgfusepath{draw}
+
+}{}
+
+%% coupler
+% defines a general outer box for couplers
+% TikZ usage:
+% \draw (0,0) node[coupler](coup){\SI{-3}{dB}}
+% (coup.port1) to[short,-o] ++(-1,0)
+%
+
+\long\def\pgfcircdeclarecoupler#1#2{
+ \pgfdeclareshape{#1}{
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/coupler/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/coupler/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{port1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{port4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ #2
+
+ }
+ }
+}
+
+% straight coupler
+\pgfcircdeclarecoupler{coupler}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+}
+
+% "bended" coupler
+\pgfcircdeclarecoupler{coupler2}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+
+
+}
+
+%%%---------- close: pgfcircnpoles
+
+%%%%%%%%%%% Springe nach pgfcirclabel
+%%%---------- open: pgfcirclabel.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Bipole label positioning
+
+%% Options
+\ctikzset{label/.style = { l=#1 } }
+\ctikzset{l/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
+ \ctikzsetvalof{bipole/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+
+\ctikzset{label above/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l^/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{label below/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+\ctikzset{l_/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+
+
+\def\pgf@circ@drawlabel{
+ \pgfextra{
+ \edef\pgf@temp{\ctikzvalof{label/align}}
+ \def\pgf@circ@temp{straight}
+ }
+ \ifx\pgf@temp\pgf@circ@temp %straight
+ \pgf@circ@drawreglabel
+ \else
+ \pgfextra{\def\pgf@circ@temp{rotate}}
+ \ifx\pgf@temp\pgf@circ@temp %rotate
+ \pgf@circ@drawrotlabel
+ \else % smart
+ \pgf@circ@drawsmartlabel
+ \fi
+ \fi
+}
+
+\def\pgf@circ@drawsmartlabel{
+ \pgfextra{
+ %\pgfmathadd{\pgf@circ@direction}{360}
+ \pgfmathmod{\pgf@circ@direction}{90}
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ \ifnum \pgfcircmathresult > 20
+ \ifnum \pgfcircmathresult < 70 % NON quasi retto
+ \pgf@circ@drawrotlabel
+ \else
+ \pgf@circ@drawreglabel
+ \fi
+ \else
+ \pgf@circ@drawreglabel
+ \fi
+}
+
+%% Output routing
+%% #1 - node name
+
+\def\pgf@circ@drawrotlabel{
+ \pgfextra{
+ % calcolo rotazione label
+ \def\pgf@circ@temp{\ctikzvalof{bipole/label/position}} %%% ร ncora label
+ \edef\pgfcirclabrot{\pgf@circ@direction} % primo e quarto quadrante
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 90 \ifnum \pgfcircmathresult < 270 % terzo e secondo
+ \pgfmathsubtract{\pgf@circ@direction}{180}
+ \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \pgfmathadd{\pgf@circ@temp}{180} %%%
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil} %%%
+ \fi\fi
+
+ \ifnum \ctikzvalof{mirror value} = -1
+ \pgfmathadd{\pgf@circ@temp}{180}
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ }
+ coordinate (labelcoor) at ($(\ctikzvalof{bipole/name})!2!(\ctikzvalof{bipole/name}.north)$)
+ (labelcoor) node [rotate=\pgfcirclabrot] {\pgf@circ@finallabel{}} % c'era un transform shape
+}
+
+\def\pgf@circ@drawreglabel{
+ \pgfextra{
+ \pgfmathsubtract{\pgf@circ@direction}{90}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/label/position}} %%% ร ncora label
+ \ifnum \pgf@circ@temp < 0
+ \pgfmathadd{\pgf@circ@labanc}{180}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+
+ \ifnum \ctikzvalof{mirror value} = -1
+ \pgfmathadd{\pgf@circ@labanc}{180}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ }
+ node [ anchor = \pgf@circ@labanc]
+ at (\ctikzvalof{bipole/name}.\pgf@circ@temp) {\pgf@circ@finallabel{}}
+}
+
+
+\ctikzset{text/.style = { t=#1 } }
+\ctikzset{t/.code = {
+ \ctikzsetvalof{bipoles/twoport/text}{#1}
+}}
+
+%%%---------- close: pgfcirclabel
+%%%%%%%%%%% Springe nach pgfcircvoltage
+%%%---------- open: pgfcircvoltage.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Voltage management
+
+
+\ctikzset{v^>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v^</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v_>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+
+% Default position varies whether the component is a voltage source
+% or not
+\ctikzset{v/.code = {
+ \ifpgf@circuit@bipole@isvoltage
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \fi
+ \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
+ \ctikzsetvalof{bipole/voltage/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ }
+}
+
+\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
+\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
+\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
+\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
+
+
+%% Output routine for generic bipoles
+
+\def\pgf@circ@drawvoltagegeneric{
+ \pgfextra{
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@voltage@below\pgf@circuit@bipole@voltage@belowfalse\else\pgf@circuit@bipole@voltage@belowtrue\fi
+ \fi
+
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@voltage@angle{90}
+ \else
+ \def\pgf@circ@voltage@angle{-90}
+ \fi
+
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\distacefromnode{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}} }
+ { \edef\distacefromnode{\ctikzvalof{voltage/distance from node}} }
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\bumpb{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}} }
+ { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
+ }
+
+ coordinate (pgfcirc@mid) at ($(\tikztostart) ! \distacefromnode ! (\ctikzvalof{bipole/name}.left)$)
+ coordinate (pgfcirc@Vfrom) at ($(pgfcirc@mid) ! -\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen ! \pgf@circ@voltage@angle:(\ctikzvalof{bipole/name}.left)$)
+
+ coordinate (pgfcirc@mid) at ($(\tikztotarget) ! \distacefromnode ! (\ctikzvalof{bipole/name}.right)$)
+ coordinate (pgfcirc@Vto) at ($(pgfcirc@mid) ! \ctikzvalof{voltage/distance from line}\pgf@circ@Rlen ! \pgf@circ@voltage@angle : (\ctikzvalof{bipole/name}.right)$)
+
+ \ifpgf@circuit@bipole@voltage@below
+ coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
+ coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
+ \else
+ coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
+ coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
+ \fi
+
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
+ node[currarrow, sloped, allow upside down, pos=1] {}
+ (pgfcirc@Vfrom)
+ \else
+ (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
+ node[currarrow, sloped, allow upside down, pos=1] {}
+ (pgfcirc@Vto)
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
+ \else
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
+ \fi
+ \fi
+}
+
+%% Output routine for voltage sources
+
+\def\pgf@circ@drawvoltagegenerator{
+ \ifpgf@circuit@bipole@voltage@below
+ coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-120)$)
+ coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-60)$)
+ \else
+ coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.120)$)
+ coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.60)$)
+ \fi
+
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vcont2) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont1)
+ \else
+ (pgfcirc@Vcont1) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont2)
+ \fi
+
+ \else % american voltage
+
+ \pgfextra{
+ \def\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}}
+ \def\pgf@circ@temp{battery}
+ \ifx\pgf@temp\pgf@circ@temp
+ \edef\pgf@circ@batteria{battery}
+ \else
+ \def\pgf@circ@temp{battery1}
+ \ifx\pgf@temp\pgf@circ@temp
+ \edef\pgf@circ@batteria{battery}
+ \else
+ \edef\pgf@circ@batteria{false}
+ \fi
+ \fi
+ \edef\pgf@circ@temp{battery}
+ }
+
+ \ifx\pgf@circ@batteria\pgf@circ@temp % if it is a battery, must put + and -
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vcont2) node {$-$} (pgfcirc@Vcont1) node {$+$}
+ \else
+ (pgfcirc@Vcont1) node {$-$} (pgfcirc@Vcont2) node {$+$}
+ \fi
+ \fi
+
+ \fi
+}
+
+%% Output routine
+
+\def\pgf@circ@drawvoltage{ % node name
+ \pgfextra{
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >284 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@voltage@label@where{90}
+ \fi
+
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\eudist{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}} }
+ { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
+ }
+
+ \ifpgf@circuit@bipole@isvoltage
+ \pgf@circ@drawvoltagegenerator
+ \else
+ \pgf@circ@drawvoltagegeneric
+ \fi
+ (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)
+ coordinate (Vlab) at ($(\ctikzvalof{bipole/name}.center) !
+ \ifpgf@circuit@europeanvoltage\eudist\else\ctikzvalof{voltage/american label distance}\fi !
+ (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)$)
+ node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=0]
+ at (Vlab) { \pgf@circ@finallabel{voltage/} }
+}
+
+
+
+
+
+% coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) !
+% \ctikzvalof{voltage/bump b} !
+% (\ctikzvalof{bipole/name}.-110) $)
+% coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) !
+% \ctikzvalof{voltage/bump b} !
+% (\ctikzvalof{bipole/name}.-70) $)
+% \else
+% coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) !
+% \ctikzvalof{voltage/bump b} !
+% (\ctikzvalof{bipole/name}.110) $)
+% coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) !
+% \ctikzvalof{voltage/bump b} !
+% (\ctikzvalof{bipole/name}.70) $)
+% \fi
+%%%---------- close: pgfcircvoltage
+%%%%%%%%%%% Springe nach pgfcirccurrent
+%%%---------- open: pgfcirccurrent.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Current handling
+
+%% Options
+
+
+\ctikzset{i^>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i>^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i>_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i^</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i<^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i<_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i/.code = {
+% \ifpgf@circuit@bipole@iscurrent
+% \pgfkeys{\circuitikzbasekey/bipole/current/position=above}
+% \else
+% \pgfkeys{\circuitikzbasekey/bipole/current/position=below}
+% \fi
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
+ \ctikzsetvalof{bipole/current/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}
+}
+
+\ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
+\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
+\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
+\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
+
+
+\def\pgf@circ@drawnormalcurrent{
+ \ifpgf@circuit@bipole@current@before
+ \ifpgf@circuit@bipole@current@backward
+ { (\ctikzvalof{bipole/name}.left) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\tikztostart)
+ }
+ \else
+ { (\tikztostart) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\ctikzvalof{bipole/name}.left)
+ }
+ \fi
+ \else
+ \ifpgf@circuit@bipole@current@backward
+ { (\tikztotarget) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\ctikzvalof{bipole/name}.right)
+ }
+ \else
+ { (\ctikzvalof{bipole/name}.right) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\tikztotarget)
+ }
+ \fi
+ \fi
+}
+
+%% Output routine
+%% #1 - node name
+
+\def\pgf@circ@drawcurrent{
+ \pgfextra{
+ \edef\pgf@circ@ffffff{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >284 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@bipole@current@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@current@label@where{+90}
+ \fi
+ }
+
+
+ \pgfextra{ \def\pgf@temp{short} \edef\pgf@circ@temp{\ctikzvalof{bipole/kind}} }
+
+ \ifx\pgf@circ@temp\pgf@temp % caso di corrente (centrata) su un corto
+ \ifpgf@circuit@bipole@current@backward
+ { (\tikztotarget) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\tikztostart) }
+ \else
+ { (\tikztostart) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\tikztotarget) }
+ \fi
+
+ \else % altri bipoli - e quindi tra nodo e target
+
+ \ifpgf@circuit@bipole@iscurrent
+ \ifpgf@circuit@europeancurrent
+ \pgf@circ@drawnormalcurrent
+ \else
+ \fi
+ \else
+ \pgf@circ@drawnormalcurrent
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@iscurrent
+ node [anchor=\pgf@circ@dir] at (\ctikzvalof{bipole/name}.\pgf@circ@bipole@current@label@where)
+ { \pgf@circ@finallabel{current/} }
+ \else
+ (Iarrow.\pgf@circ@bipole@current@label@where) node [anchor=\pgf@circ@dir]
+ { \pgf@circ@finallabel{current/} }
+ \fi
+
+}
+
+
+
+
+%%%---------- close: pgfcirccurrent
+%%%%%%%%%%% Springe nach pgfcircinputarrows
+%%%---------- open: pgfcircinputarrows.tex
+% Copyright 2013 by Stefan Erhardt
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Show input arrows for selected parts
+
+
+\ctikzset{>/.style = {
+ \circuitikzbasekey/inputarrow = true
+ }
+}
+
+
+
+
+
+%%%---------- close: pgfcircinputarrows
+
+
+
+
+%%%---------- close: circuitikz.code
+
+\ExecuteOptions{europeancurrents,europeanvoltages,americanports,americanresistors,cuteinductors,europeangfsurgearrester,nosiunitx,noarrowmos,smartlabels,nocompatibility}
+
+\ProcessOptions\relax
+
+\ifpgf@circ@siunitx
+ \RequirePackage{xstring}[2009/03/13]
+ %\expandafter\let\csname angstrom\endcsname\relax
+ \RequirePackage{siunitx}
+\fi
+
+%%%%%%%%%%% Springe nach circuitikz1.code
+%%%---------- open: circuitikz1.code.tex
+%%%%%%%%%%%%
+%% Dimensions
+
+% coordinate bipoli
+\newdimen\pgf@circ@res@up \newdimen\pgf@circ@res@down \newdimen\pgf@circ@res@zero
+\newdimen\pgf@circ@res@left \newdimen\pgf@circ@res@right
+\newdimen\pgf@circ@res@other
+\newdimen\pgf@circ@res@step
+
+% thickness iniziale
+\newdimen \pgfstartlinewidth
+
+\pgf@circ@Rlen = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+
+
+
+% Names
+\ctikzset{name/.style = { n=#1 } }
+\ctikzset{n/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/name=#1}
+}}
+
+% Reflect the node along
+\ctikzset{mirrored/.is choice}
+\ctikzset{mirror value/.initial=1}
+\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
+\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
+\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
+
+% Initialize paths
+\def\pgfcircresetpath{
+ \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90,
+ bipole/reversed=false, bipole/kind=,
+ bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
+ bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,
+ bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
+ bipole/current/y position=above, bipole/current/direction=forward,
+ mirrored=false
+ }
+}
+
+
+%% Generic bipole path
+\def\pgf@circ@bipole@path#1#2{
+ \pgfextra{
+ \ctikzset{bipole/kind = #1}
+
+ \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
+ \def\pgf@circ@temp{}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = #2\pgf@circ@rand} % create it
+ \fi
+
+ \def\pgf@temp{open}
+ \def\pgf@circ@temp{#1}
+ }
+ \ifpgf@circuit@bipole@reversed
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ \else
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ \fi
+ \pgfextra{
+ \pgf@circ@slope{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \edef\pgf@circ@direction{\pgfmathresult}
+ }
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)
+ node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}]
+ (\ctikzvalof{bipole/name}) {}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ \else
+ (\ctikzvalof{bipole/name}start.center) -- (\ctikzvalof{bipole/name}.left)
+ (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+ \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabel\fi
+ \drawpoles
+ \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
+ \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
+ % reset
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ (\tikztotarget) \tikztonodes % e si continua
+}
+
+
+%% Path definitions
+
+\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
+\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
+\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
+\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
+\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
+\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
+\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
+\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
+\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
+\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
+\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
+\def\pgf@circ@battery1@path#1{\pgf@circ@bipole@path{battery1}{#1}}
+\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
+\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
+\def\pgf@circ@inductor@path#1{%
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@europeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@cuteinductor@path{#1}%
+ \else%
+ \pgf@circ@americaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@vinductor@path#1{
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@veuropeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@vcuteinductor@path{#1}%
+ \else%
+ \pgf@circ@vamericaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
+\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
+\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
+\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
+\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
+\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
+\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
+\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
+\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
+\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
+\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
+\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
+\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
+\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
+\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
+\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
+\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
+\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
+\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
+\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
+\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
+\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
+\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
+\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
+\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
+\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
+\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
+\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
+\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
+\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
+\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
+\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
+\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
+\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
+\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
+\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
+\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
+\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
+\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
+\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
+\def\pgf@circ@empty@path#1{}
+\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
+\def\pgf@circ@thyristor@path#1{\pgf@circ@bipole@path{thyristor}{#1}}
+\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
+\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
+\def\pgf@circ@triac@path#1{\pgf@circ@bipole@path{triac}{#1}}
+\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
+\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
+\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
+\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
+\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
+\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
+
+\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
+\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
+\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
+\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
+\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
+\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
+\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
+\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
+\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
+\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
+\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
+\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
+\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
+\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
+\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
+\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
+\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
+\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
+
+
+%% Styles
+
+%% Aggiungere per thyristor e tripoli semplici
+
+%\def\ctikzsetbipole#1#2{%
+% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
+%}
+%\ctikzsetbipole{resistor}{\pgf@circ@resistor@path}
+
+\tikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
+\tikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
+\tikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
+\tikzset{ammeter/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path, l=#1}}
+\tikzset{voltmeter/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path, l=#1}}
+\tikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
+\tikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
+\tikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
+\tikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
+\tikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
+\tikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
+\tikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
+\tikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
+\tikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
+\tikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
+\tikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
+\tikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
+\tikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
+\tikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
+\tikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\tikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery1@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\tikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
+\tikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
+\tikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
+\tikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
+\tikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
+\tikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
+\tikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
+\tikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
+\tikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
+\tikzset{transmission line/.style = {tline = #1}}
+\tikzset{TL/.style = {tline = #1}}
+\tikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\tikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\tikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\tikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\tikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\tikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\tikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\tikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\tikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, v=#1 }}
+\tikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, v=#1 }}
+\tikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\tikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\tikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+
+\tikzset{voltage source/.style = {\ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\tikzset{current source/.style = {\ifpgf@circuit@europeancurrent european \else american \fi current source, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\tikzset{controlled voltage source/.style = {\ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\tikzset{controlled current source/.style = {\ifpgf@circuit@europeancurrent european \else american \fi controlled current source, \circuitikzbasekey/bipole/is current=true, i=#1}}
+
+
+\tikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
+\tikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
+\tikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
+\tikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
+\tikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
+\tikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
+\tikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
+
+\tikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
+
+\tikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
+\tikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
+\tikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
+\tikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
+\tikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
+
+\tikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
+\tikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
+\tikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
+\tikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
+\tikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
+\tikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
+\tikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
+\tikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
+\tikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
+\tikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
+\tikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
+\tikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
+\tikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
+\tikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
+\tikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
+\tikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
+\tikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
+\tikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
+
+
+
+\tikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
+\tikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
+\tikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
+\tikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
+\tikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
+\tikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
+\tikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
+
+\tikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
+\tikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\tikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\tikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\tikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\tikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
+\tikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+
+ \tikzset{Schottky diode/.style = {\ifpgf@circuit@fulldiode full \else empty \fi Schottky diode}}
+ \tikzset{Zener diode/.style = {\ifpgf@circuit@fulldiode full \else empty \fi Zener diode}}
+ \tikzset{tunnel diode/.style = {\ifpgf@circuit@fulldiode full \else empty \fi tunnel diode}}
+ \tikzset{photodiode/.style = {\ifpgf@circuit@fulldiode full \else empty \fi photodiode}}
+ \tikzset{led/.style = {\ifpgf@circuit@fulldiode full \else empty \fi led}}
+ \tikzset{varcap/.style = {\ifpgf@circuit@fulldiode full \else empty \fi varcap}}
+ \tikzset{diode/.style = {\ifpgf@circuit@fulldiode full \else empty \fi diode}}
+
+\tikzset{thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thyristor@path}}
+\tikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
+\tikzset{triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@triac@path}}
+
+\tikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
+\tikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
+\tikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\tikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
+
+\tikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
+\tikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
+
+% short forms
+\tikzset{vsource/.style = {voltage source = #1}}
+\tikzset{isource/.style = {current source = #1}}
+\tikzset{cisource/.style = {controlled current source = #1}}
+\tikzset{cvsource/.style = {controlled voltage source = #1}}
+\tikzset{vsourcesin/.style = {sinusoidal voltage source = #1}}
+\tikzset{vsourcesquare/.style = {square voltage source = #1}}
+\tikzset{isourcesin/.style = {sinusoidal current source = #1}}
+\tikzset{cisourcesin/.style = {controlled sinusoidal current source = #1}}
+\tikzset{cvsourcesin/.style = {controlled sinusoidal voltage source = #1}}
+
+\tikzset{controlled vsource/.style = {controlled voltage source = #1}}
+\tikzset{controlled isource/.style = {controlled current source = #1}}
+\tikzset{controlled vsourcesin/.style = {controlled sinusoidal voltage source = #1}}
+\tikzset{controlled isourcesin/.style = {controlled sinusoidal current source = #1}}
+
+\tikzset{R/.style= {resistor = #1}}
+\tikzset{vR/.style= {variable resistor = #1}}
+\tikzset{phR/.style= {photoresistor = #1}}
+\tikzset{thR/.style= {thermistor = #1}}
+\tikzset{thRp/.style= {thermistor ptc= #1}}
+\tikzset{thRn/.style= {thermistor ntc= #1}}
+\tikzset{pR/.style= {potentiometer = #1}}
+\tikzset{C/.style = {capacitor = #1}}
+\tikzset{pC/.style = {polar capacitor = #1}}
+\tikzset{vC/.style = {variable capacitor = #1}}
+\tikzset{L/.style = {inductor = #1}}
+\tikzset{vL/.style = {variable inductor = #1}}
+\tikzset{V/.style = {voltage source = #1}}
+\tikzset{cV/.style = {controlled voltage source = #1}}
+\tikzset{sV/.style = {sinusoidal voltage source = #1}}
+\tikzset{sqV/.style = {square voltage source = #1}}
+\tikzset{csV/.style = {controlled sinusoidal voltage source = #1}}
+\def\pgf@temp#1{
+ \tikzset{V#1/.style = {voltage source, v#1=##1} }
+ \tikzset{cV#1/.style = {controlled voltage source, v#1=##1} }
+ \tikzset{sV#1/.style = {sinusoidal voltage source, v#1=##1} }
+ \tikzset{csV#1/.style = {controlled sinusoidal voltage source, v#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+\tikzset{I/.style = {current source = #1}}
+\tikzset{cI/.style = {controlled current source = #1}}
+\tikzset{sI/.style = {sinusoidal current source = #1}}
+\tikzset{csI/.style = {controlled sinusoidal current source = #1}}
+\def\pgf@temp#1{
+ \tikzset{I#1/.style = {current source, i#1=##1} }
+ \tikzset{cI#1/.style = {controlled current source, i#1=##1} }
+ \tikzset{sI#1/.style = {sinusoidal current source, i#1=##1} }
+ \tikzset{csI#1/.style = {controlled sinusoidal current source, i#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+\tikzset{Do/.style = {empty diode}}
+\tikzset{tDo/.style = {empty tunnel diode}}
+\tikzset{zDo/.style = {empty Zener diode}}
+\tikzset{sDo/.style = {empty Schottky diode}}
+\tikzset{pDo/.style = {empty photodiode}}
+\tikzset{leDo/.style = {empty led}}
+\tikzset{VCo/.style = {empty varcap}}
+\tikzset{D*/.style = {full diode}}
+\tikzset{tD*/.style = {full tunnel diode}}
+\tikzset{zD*/.style = {full Zener diode}}
+\tikzset{sD*/.style = {full Schottky diode}}
+\tikzset{pD*/.style = {full photodiode}}
+\tikzset{leD*/.style = {full led}}
+\tikzset{VC*/.style = {full varcap}}
+\tikzset{D/.style = {diode}}
+\tikzset{tD/.style = {tunnel diode}}
+\tikzset{zD/.style = {Zener diode}}
+\tikzset{sD/.style = {Schottky diode}}
+\tikzset{pD/.style = {photodiode}}
+\tikzset{leD/.style = {led}}
+\tikzset{VC/.style = {varcap}}
+
+\tikzset{Tr/.style = {triac}}
+\tikzset{Mr/.style = {memristor}}
+\tikzset{Ty/.style = {thyristor}}
+
+\tikzset{cspst/.style = {closing switch = #1}}
+\tikzset{ospst/.style = {opening switch = #1}}
+
+\tikzset{afuse/.style = {asymmetric fuse=#1}}
+
+
+\def\inheritlogicport#1#2{
+ \pgfdeclareshape{#2 port}{
+ \inheritsavedanchors[from=#1 #2 port]
+ \inheritbackgroundpath[from=#1 #2 port]
+ \inheritanchor[from=#1 #2 port]{in}
+ \inheritanchor[from=#1 #2 port]{in 1}
+ \inheritanchor[from=#1 #2 port]{in 2}
+ \inheritanchor[from=#1 #2 port]{out}
+ \inheritanchor[from=#1 #2 port]{center}
+ \inheritanchor[from=#1 #2 port]{left}
+ }
+}
+
+\ifpgf@circuit@europeanlogicport
+ \inheritlogicport{european}{and}
+ \inheritlogicport{european}{or}
+ \inheritlogicport{european}{xor}
+ \inheritlogicport{european}{not}
+ \inheritlogicport{european}{nand}
+ \inheritlogicport{european}{nor}
+ \inheritlogicport{european}{xnor}
+\else
+ \inheritlogicport{american}{and}
+ \inheritlogicport{american}{or}
+ \inheritlogicport{american}{xor}
+ \inheritlogicport{american}{not}
+ \inheritlogicport{american}{nand}
+ \inheritlogicport{american}{nor}
+ \inheritlogicport{american}{xnor}
+\fi
+
+% Transistor like bipoles
+
+\def\pgf@circ@trans@path#1#2{
+ \pgfextra{
+ \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
+ \def\pgf@circ@temp{#2}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
+ \fi
+ }
+ \ifpgf@circuit@bipole@reversed
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ \else
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ \fi
+ \pgfextra{
+ \pgf@circ@slope{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \pgfmathadd{\pgfmathresult}{-90}
+ \edef\pgf@circ@direction{\pgfmathresult}
+ }
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)
+ node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
+ (\ctikzvalof{bipole/name}) {} node {\ctikzvalof{bipole/label/name}}
+ (\ctikzvalof{bipole/name}start.center) -- (\ctikzvalof{bipole/name}.left)
+ (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ (\tikztotarget) \tikztonodes % e si continua
+}
+
+
+\def\pgf@circ@definetranspath#1{
+ \tikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
+}
+
+\pgf@circ@definetranspath{nmos}
+\pgf@circ@definetranspath{pmos}
+\pgf@circ@definetranspath{npn}
+\pgf@circ@definetranspath{pnp}
+\pgf@circ@definetranspath{nfet}
+\pgf@circ@definetranspath{nigfete}
+\pgf@circ@definetranspath{nigfetd}
+\pgf@circ@definetranspath{pfet}
+\pgf@circ@definetranspath{pigfete}
+\pgf@circ@definetranspath{pigfetd}
+\pgf@circ@definetranspath{njfet}
+\pgf@circ@definetranspath{pjfet}
+\pgf@circ@definetranspath{pigbt}
+\pgf@circ@definetranspath{nigbt}
+%%%---------- close: circuitikz1.code
+
+\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
+
+
+\endinput
+
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.4.sty b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.4.sty
index bb803ed36c..c62d59b0d7 100644
--- a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.4.sty
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.4.sty
@@ -1,11 +1,14 @@
-% Copyright 2007-2009 by Massimo Redaelli
+% Copyright 2018-2021 by Romano Giannetti
+% Copyright 2015-2021 by Stefan Lindner
+% Copyright 2013-2021 by Stefan Erhardt
+% Copyright 2007-2021 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
%
-% See the file doc/LICENSE for more details.
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
%%%%%
@@ -23,10105 +26,6 @@
\ProvidesPackage{circuitikz-0.4}%
[\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]
-%% Version 2.0 of pgf/TikZ is required
-\RequirePackage{tikz}
-\usetikzlibrary{calc}
-\usepgflibrary{decorations.pathmorphing,arrows}
+\input{circuitikz-0.4-body.tex}
-\DeclareOption{european}{
- \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
- \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester = european}
-}
-
-\DeclareOption{american}{
- \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester = american}
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{fulldiodes}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiodes}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{europeanvoltages}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{americanvoltages}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrents}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrents}{
- \ctikzset{current = american}
-}
-
-\DeclareOption{europeanvoltages}{
- \ctikzset{voltage = european}
-}
-
-\DeclareOption{americanresistors}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistors}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductors}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductors}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductors}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanports}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanports}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{americangfsurgearrester}{
- \ctikzset{gas filled surge arrester = american}
-}
-
-\DeclareOption{europeangfsurgearrester}{
- \ctikzset{gas filled surge arrester = european}
-}
-
-
-\DeclareOption{siunitx}{
- \pgf@circ@siunitxtrue
-}
-
-\DeclareOption{nosiunitx}{
- \pgf@circ@siunitxfalse
-}
-
-\DeclareOption{arrowmos}{
- \pgf@circuit@mos@arrowstrue
-}
-
-\DeclareOption{noarrowmos}{
- \pgf@circuit@mos@arrowsfalse
-}
-
-\DeclareOption{straightlabels}{
- \ctikzset{label/align = straight}
-}
-
-\DeclareOption{rotatelabels}{
- \ctikzset{label/align = rotate}
-}
-
-\DeclareOption{smartlabels}{
- \ctikzset{label/align = smart}
-}
-
-
-
-\DeclareOption{fulldiode}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiode}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{europeanvoltage}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{americanvoltage}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrent}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrent}{
- \ctikzset{current = american}
-}
-
-\DeclareOption{europeanvoltage}{
- \ctikzset{voltage = european}
-}
-
-\DeclareOption{americanresistor}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistor}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductor}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductor}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductor}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanport}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanport}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{europeanport}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{betterproportions}{
- \ctikzset{monopoles/ground/width/.initial=.15}
-
- \ctikzset{bipoles/resistor/height/.initial=.23}
- \ctikzset{bipoles/resistor/width/.initial=.6}
- \ctikzset{bipoles/capacitor/height/.initial=.4}
- \ctikzset{bipoles/capacitor/width/.initial=.1}
- \ctikzset{bipoles/potentiometer/height/.initial=.6}
- \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/potentiometer/width/.initial=.6}
- \ctikzset{bipoles/photoresistor/height/.initial=.6}
- \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
- \ctikzset{bipoles/photoresistor/width/.initial=.6}
- \ctikzset{bipoles/thermistor/main/.initial=.7}
- \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistor/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/main/.initial=.7}
- \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
- \ctikzset{bipoles/thermistorptc/width/.initial=.6}
- \ctikzset{bipoles/thermistorptc/main/.initial=.7}
- \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/main/.initial=.7}
- \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/width/.initial=.6}
- \ctikzset{bipoles/vresistor/height/.initial=.45}
- \ctikzset{bipoles/vresistor/width/.initial=.6}
- \ctikzset{bipoles/cuteinductor/height/.initial=.23}
- \ctikzset{bipoles/cuteinductor/width/.initial=.6}
- \ctikzset{bipoles/cuteinductor/coils/.initial=6}
- \ctikzset{bipoles/americaninductor/height/.initial=.23}
- \ctikzset{bipoles/americaninductor/height 2/.initial=.1}
- \ctikzset{bipoles/americaninductor/width/.initial=.6}
- \ctikzset{bipoles/americaninductor/coils/.initial=4}
- \ctikzset{bipoles/vcuteinductor/height/.initial=.6}
- \ctikzset{bipoles/vcuteinductor/coil height/.initial=.23}
- \ctikzset{bipoles/vcuteinductor/width/.initial=.6}
- \ctikzset{bipoles/vcuteinductor/coils/.initial=6}
- \ctikzset{bipoles/vamericaninductor/height/.initial=.45}
- \ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
- \ctikzset{bipoles/vamericaninductor/width/.initial=.6}
- \ctikzset{bipoles/vamericaninductor/coils/.initial=4}
- \ctikzset{bipoles/generic/height/.initial=.23}
- \ctikzset{bipoles/generic/width/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
- \ctikzset{bipoles/ageneric/height/.initial=.23}
- \ctikzset{bipoles/ageneric/width/.initial=.6}
- \ctikzset{bipoles/memristor/height/.initial=.23}
- \ctikzset{bipoles/memristor/wave height/.initial=.375}
- \ctikzset{bipoles/memristor/width/.initial=.60}
- \ctikzset{bipoles/tgeneric/height/.initial=.525}
- \ctikzset{bipoles/tgeneric/width/.initial=.6}
- \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
- \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
- \ctikzset{bipoles/fullgeneric/height/.initial=.23}
- \ctikzset{bipoles/fullgeneric/width/.initial=.6}
- \ctikzset{bipoles/diode/height/.initial=.3}
- \ctikzset{bipoles/diode/width/.initial=.25}
-
- \ctikzset{tripoles/thyristor/height/.initial=.66}
- \ctikzset{tripoles/thyristor/height 2/.initial=.3}
- \ctikzset{tripoles/thyristor/width/.initial=.6}
- \ctikzset{tripoles/thyristor/diode height/.initial=.3}
- \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
- \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
- \ctikzset{tripoles/triac/height/.initial=.66}
- \ctikzset{tripoles/triac/width/.initial=.6}
- \ctikzset{tripoles/triac/diode width left/.initial=.3}
- \ctikzset{tripoles/triac/diode width right/.initial=.3}
-}
-
-%%%%%%%%%
-
-
-
-%%%%%%%%%%% Springe nach circuitikz.code
-%%%---------- open: circuitikz.code.tex
-
-%% Options
-
-
-
-
-%% Keys
-
-\long\def\pgf@circ@comment#1{}
-
-\def\circuitikzbasekey{/tikz/circuitikz}
-
-\pgfkeys{\circuitikzbasekey/.is family}
-
-\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
-\let\ctikzset\circuitikzset
-\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
-\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
-
-\newif\ifpgf@circuit@inputarrow
-\ctikzset{inputarrow/.is choice}
-\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
-
-\ctikzset{bipoles/.is family}
-\ctikzset{bipoles/border margin/.initial=1.1}
-\ctikzset{bipoles/thickness/.initial=2}
-\ctikzset{bipoles/length/.initial=1.4cm}
-\ctikzset{nodes width/.initial=.04}
-\newdimen\pgf@circ@Rlen
-\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1}}
-
-
-\ctikzset{monopoles/.is family}
-\ctikzset{monopoles/ground/width/.initial=.25}
-\ctikzset{monopoles/chassis/width/.initial=.25}
-\ctikzset{monopoles/alternative chassis/width/.initial=.25}
-\ctikzset{monopoles/equipotentiality/width/.initial=.25}
-\ctikzset{monopoles/tlinestub/width/.initial=.25}
-\ctikzset{monopoles/antenna/width/.initial=.25}
-\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/width/.initial=.25}
-\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/rxantenna/width/.initial=.25}
-\ctikzset{monopoles/tground/thickness/.initial=3}
-\ctikzset{monopoles/vcc/width/.initial=.2}
-\ctikzset{monopoles/match/width/.initial=.4}
-\ctikzset{monopoles/oscillator/width/.initial=.7}
-
-\ctikzset{bipoles/resistor/height/.initial=.3}
-\ctikzset{bipoles/resistor/width/.initial=.8}
-\ctikzset{bipoles/potentiometer/height/.initial=.8}
-\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
-\ctikzset{bipoles/potentiometer/width/.initial=.8}
-\ctikzset{bipoles/photoresistor/height/.initial=.6}
-\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
-\ctikzset{bipoles/photoresistor/width/.initial=.8}
-\ctikzset{bipoles/thermistor/main/.initial=.7}
-\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/width/.initial=.8}
-\ctikzset{bipoles/thermistorntc/main/.initial=.7}
-\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistorptc/width/.initial=.8}
-\ctikzset{bipoles/thermistorptc/main/.initial=.7}
-\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistor/width/.initial=.8}
-\ctikzset{bipoles/varistor/main/.initial=.7}
-\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/varistor/width/.initial=.8}
-\ctikzset{bipoles/vresistor/height/.initial=.6}
-\ctikzset{bipoles/vresistor/width/.initial=.8}
-\ctikzset{bipoles/cuteinductor/height/.initial=.3}
-\ctikzset{bipoles/cuteinductor/width/.initial=.8}
-\ctikzset{bipoles/cuteinductor/coils/.initial=6}
-\ctikzset{bipoles/americaninductor/height/.initial=.3}
-\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
-\ctikzset{bipoles/americaninductor/width/.initial=.8}
-\ctikzset{bipoles/americaninductor/coils/.initial=4}
-\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/coil height/.initial=.3}
-\ctikzset{bipoles/vcuteinductor/width/.initial=.8}
-\ctikzset{bipoles/vcuteinductor/coils/.initial=6}
-\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
-\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
-\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
-\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
-\ctikzset{bipoles/isource/height/.initial=.60}
-\ctikzset{bipoles/isource/width/.initial=.60}
-\ctikzset{bipoles/isourceam/height/.initial=.60}
-\ctikzset{bipoles/isourceam/width/.initial=.60}
-\ctikzset{bipoles/vsource/height/.initial=.60}
-\ctikzset{bipoles/vsource/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/height/.initial=.60}
-\ctikzset{bipoles/vsourceam/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/margin/.initial=.7}
-\ctikzset{bipoles/isourcesin/height/.initial=.60}
-\ctikzset{bipoles/isourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesin/height/.initial=.60}
-\ctikzset{bipoles/vsourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
-\ctikzset{bipoles/cisource/height/.initial=.7}
-\ctikzset{bipoles/cisource/width/.initial=.7}
-\ctikzset{bipoles/cisourceam/height/.initial=.7}
-\ctikzset{bipoles/cisourceam/width/.initial=.7}
-\ctikzset{bipoles/cvsource/height/.initial=.7}
-\ctikzset{bipoles/cvsource/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/height/.initial=.7}
-\ctikzset{bipoles/cvsourceam/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
-\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
-\ctikzset{bipoles/cisourcesin/width/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
-\ctikzset{bipoles/capacitor/height/.initial=.6}
-\ctikzset{bipoles/capacitor/width/.initial=.2}
-\ctikzset{bipoles/pcapacitor/height/.initial=.6}
-\ctikzset{bipoles/pcapacitor/width/.initial=.2}
-\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
-\ctikzset{bipoles/vcapacitor/height/.initial=.6}
-\ctikzset{bipoles/vcapacitor/width/.initial=.5}
-\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
-\ctikzset{bipoles/battery/height/.initial=.6}
-\ctikzset{bipoles/battery/width/.initial=.3}
-\ctikzset{bipoles/battery1/height/.initial=.6}
-\ctikzset{bipoles/battery1/width/.initial=.3}
-\ctikzset{bipoles/diode/height/.initial=.50}
-\ctikzset{bipoles/diode/width/.initial=.40}
-\ctikzset{bipoles/varcap/height/.initial=.50}
-\ctikzset{bipoles/varcap/width/.initial=.45}
-\ctikzset{bipoles/interr/height/.initial=.35}
-\ctikzset{bipoles/interr/width/.initial=.35}
-\ctikzset{bipoles/interr/height 2/.initial=.1}
-\ctikzset{bipoles/generic/height/.initial=.30}
-\ctikzset{bipoles/generic/width/.initial=.80}
-\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
-\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
-\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
-\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
-\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
-\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
-\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
-\ctikzset{bipoles/fuse/height/.initial=.20}
-\ctikzset{bipoles/fuse/width/.initial=.50}
-\ctikzset{bipoles/afuse/height/.initial=.20}
-\ctikzset{bipoles/afuse/width/.initial=.50}
-\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
-\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
-\ctikzset{bipoles/ageneric/height/.initial=.30}
-\ctikzset{bipoles/ageneric/width/.initial=.80}
-\ctikzset{bipoles/memristor/height/.initial=.30}
-\ctikzset{bipoles/memristor/wave height/.initial=.5}
-\ctikzset{bipoles/memristor/width/.initial=.80}
-\ctikzset{bipoles/tgeneric/height/.initial=.70}
-\ctikzset{bipoles/tgeneric/width/.initial=.80}
-\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
-\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
-\ctikzset{bipoles/fullgeneric/height/.initial=.30}
-\ctikzset{bipoles/fullgeneric/width/.initial=.80}
-\ctikzset{bipoles/open/height/.initial=.25}
-\ctikzset{bipoles/open/width/.initial=.8}
-\ctikzset{bipoles/ammeter/height/.initial=.60}
-\ctikzset{bipoles/ammeter/width/.initial=.60}
-\ctikzset{bipoles/voltmeter/height/.initial=.60}
-\ctikzset{bipoles/voltmeter/width/.initial=.60}
-\ctikzset{bipoles/buffer/height/.initial=1}
-\ctikzset{bipoles/buffer/width/.initial=1}
-\ctikzset{bipoles/not port/width/.initial=1}
-\ctikzset{bipoles/not port/height/.initial=.8}
-\ctikzset{bipoles/not port/circle width/.initial=.15}
-\ctikzset{bipoles/lamp/height/.initial=.60}
-\ctikzset{bipoles/lamp/width/.initial=.60}
-\ctikzset{bipoles/tline/height/.initial=.3}
-\ctikzset{bipoles/tline/width/.initial=.8}
-\ctikzset{bipoles/squid/height/.initial=.60}
-\ctikzset{bipoles/squid/width/.initial=.60}
-\ctikzset{bipoles/barrier/height/.initial=.60}
-\ctikzset{bipoles/barrier/width/.initial=.60}
-\ctikzset{bipoles/thermocouple/height/.initial=.250}
-\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
-\ctikzset{bipoles/thermocouple/width/.initial=.140}
-\ctikzset{bipoles/pushbutton/height/.initial=.5}
-\ctikzset{bipoles/pushbutton/height 2/.initial=.0}
-\ctikzset{bipoles/pushbutton/width/.initial=.50}
-\ctikzset{bipoles/twoport/width/.initial=.7}
-\ctikzset{bipoles/twoport/height/.initial=.7}
-\ctikzset{bipoles/twoport/text/.initial=}
-\ctikzset{bipoles/vco/width/.initial=.7}
-\ctikzset{bipoles/bandpass/width/.initial=.7}
-\ctikzset{bipoles/highpass/width/.initial=.7}
-\ctikzset{bipoles/lowpass/width/.initial=.7}
-\ctikzset{bipoles/adc/width/.initial=.7}
-\ctikzset{bipoles/dac/width/.initial=.7}
-\ctikzset{bipoles/dsp/width/.initial=.7}
-\ctikzset{bipoles/fft/width/.initial=.7}
-\ctikzset{bipoles/amp/width/.initial=.7}
-\ctikzset{bipoles/vamp/width/.initial=.7}
-\ctikzset{bipoles/piattenuator/width/.initial=.7}
-\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
-\ctikzset{bipoles/tattenuator/width/.initial=.7}
-\ctikzset{bipoles/vtattenuator/width/.initial=.7}
-\ctikzset{bipoles/phaseshifter/width/.initial=.7}
-\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
-\ctikzset{bipoles/detector/width/.initial=.7}
-
-\newif\ifpgf@circuit@mos@arrows
-\ctikzset{tripoles/mos style/.is choice}
-\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
-\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
-\ctikzset{tripoles/nmos/width/.initial=.7}
-\ctikzset{tripoles/nmos/gate height/.initial=.35}
-\ctikzset{tripoles/nmos/base height/.initial=.5}
-\ctikzset{tripoles/nmos/height/.initial=1.1}
-\ctikzset{tripoles/nmos/base width/.initial=.5}
-\ctikzset{tripoles/nmos/gate width/.initial=.62}
-\ctikzset{tripoles/pmos/width/.initial=.7}
-\ctikzset{tripoles/pmos/gate height/.initial=.35}
-\ctikzset{tripoles/pmos/base height/.initial=.5}
-\ctikzset{tripoles/pmos/height/.initial=1.1}
-\ctikzset{tripoles/pmos/base width/.initial=.5}
-\ctikzset{tripoles/pmos/gate width/.initial=.62}
-
-\ctikzset{tripoles/nfet/width/.initial=.7}
-\ctikzset{tripoles/nfet/gate height/.initial=.35}
-\ctikzset{tripoles/nfet/base height/.initial=.5}
-\ctikzset{tripoles/nfet/height/.initial=1.1}
-\ctikzset{tripoles/nfet/base width/.initial=.5}
-\ctikzset{tripoles/nfet/gate width/.initial=.62}
-
-\ctikzset{tripoles/pfet/width/.initial=.7}
-\ctikzset{tripoles/pfet/gate height/.initial=.35}
-\ctikzset{tripoles/pfet/base height/.initial=.5}
-\ctikzset{tripoles/pfet/height/.initial=1.1}
-\ctikzset{tripoles/pfet/base width/.initial=.5}
-\ctikzset{tripoles/pfet/gate width/.initial=.62}
-
-\ctikzset{tripoles/nigfete/width/.initial=.7}
-\ctikzset{tripoles/nigfete/gate height/.initial=.35}
-\ctikzset{tripoles/nigfete/base height/.initial=.5}
-\ctikzset{tripoles/nigfete/height/.initial=1.1}
-\ctikzset{tripoles/nigfete/base width/.initial=.5}
-\ctikzset{tripoles/nigfete/gate width/.initial=.62}
-
-\ctikzset{tripoles/nigfetd/width/.initial=.7}
-\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetd/base height/.initial=.5}
-\ctikzset{tripoles/nigfetd/height/.initial=1.1}
-\ctikzset{tripoles/nigfetd/base width/.initial=.5}
-\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
-
-\ctikzset{tripoles/pigfete/width/.initial=.7}
-\ctikzset{tripoles/pigfete/gate height/.initial=.35}
-\ctikzset{tripoles/pigfete/base height/.initial=.5}
-\ctikzset{tripoles/pigfete/height/.initial=1.1}
-\ctikzset{tripoles/pigfete/base width/.initial=.5}
-\ctikzset{tripoles/pigfete/gate width/.initial=.62}
-
-\ctikzset{tripoles/pigfetd/width/.initial=.7}
-\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetd/base height/.initial=.5}
-\ctikzset{tripoles/pigfetd/height/.initial=1.1}
-\ctikzset{tripoles/pigfetd/base width/.initial=.5}
-\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
-
-\ctikzset{tripoles/npn/width/.initial=.6}
-\ctikzset{tripoles/npn/gate height/.initial=.45}
-\ctikzset{tripoles/npn/gate height 2/.initial=.15}
-\ctikzset{tripoles/npn/base height/.initial=.4}
-\ctikzset{tripoles/npn/height/.initial=1.1}
-\ctikzset{tripoles/npn/gate width/.initial=.5}
-
-
-
-\ctikzset{tripoles/pnp/width/.initial=.6}
-\ctikzset{tripoles/pnp/gate height/.initial=.45}
-\ctikzset{tripoles/pnp/gate height 2/.initial=.15}
-\ctikzset{tripoles/pnp/base height/.initial=.4}
-\ctikzset{tripoles/pnp/height/.initial=1.1}
-\ctikzset{tripoles/pnp/gate width/.initial=.5}
-
-\ctikzset{tripoles/pigbt/width/.initial=.6}
-\ctikzset{tripoles/pigbt/gate height/.initial=.45}
-\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/pigbt/base height/.initial=.4}
-\ctikzset{tripoles/pigbt/height/.initial=1.1}
-\ctikzset{tripoles/pigbt/gate width/.initial=.62}
-\ctikzset{tripoles/pigbt/base width/.initial=.5}
-\ctikzset{tripoles/nigbt/width/.initial=.6}
-\ctikzset{tripoles/nigbt/gate height/.initial=.45}
-\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/nigbt/base height/.initial=.4}
-\ctikzset{tripoles/nigbt/height/.initial=1.1}
-\ctikzset{tripoles/nigbt/gate width/.initial=.62}
-\ctikzset{tripoles/nigbt/base width/.initial=.5}
-
-\ctikzset{tripoles/njfet/width/.initial=.7}
-\ctikzset{tripoles/njfet/gate height/.initial=.5}
-\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/njfet/gate width/.initial=.5}
-\ctikzset{tripoles/njfet/height/.initial=1.1}
-\ctikzset{tripoles/pjfet/width/.initial=.7}
-\ctikzset{tripoles/pjfet/gate height/.initial=.5}
-\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/pjfet/gate width/.initial=.5}
-\ctikzset{tripoles/pjfet/height/.initial=1.1}
-
-\ctikzset{tripoles/isfet/width/.initial=1}
-\ctikzset{tripoles/isfet/gate height/.initial=.35}
-\ctikzset{tripoles/isfet/base height/.initial=.5}
-\ctikzset{tripoles/isfet/height/.initial=1.1}
-\ctikzset{tripoles/isfet/base width/.initial=.3}
-\ctikzset{tripoles/isfet/gate width/.initial=.5}
-\ctikzset{tripoles/isfet/wave width/.initial=.16}
-\ctikzset{tripoles/isfet/wave amp/.initial=.06}
-\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
-\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
-
-\newif\ifpgf@circuit@europeanlogicport
-\ctikzset{logic ports/.is choice}
-\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue } }
-\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse } }
-
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-
-\ctikzset{tripoles/american and port/width/.initial=1.1}
-\ctikzset{tripoles/american and port/height/.initial=.8}
-\ctikzset{tripoles/american and port/port width/.initial=.7}
-\ctikzset{tripoles/american and port/input height/.initial=.5}
-\ctikzset{tripoles/american nand port/width/.initial=1.1}
-\ctikzset{tripoles/american nand port/height/.initial=.8}
-\ctikzset{tripoles/american nand port/port width/.initial=.7}
-\ctikzset{tripoles/american nand port/circle width/.initial=.15}
-\ctikzset{tripoles/american nand port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/width/.initial=1.1}
-\ctikzset{tripoles/american or port/height/.initial=.8}
-\ctikzset{tripoles/american or port/port width/.initial=.7}
-\ctikzset{tripoles/american or port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/input skip/.initial=.25}
-\ctikzset{tripoles/american or port/aaa/.initial=.6}
-\ctikzset{tripoles/american or port/bbb/.initial=.4}
-\ctikzset{tripoles/american or port/ccc/.initial=.5}
-\ctikzset{tripoles/american or port/ddd/.initial=.0}
-\ctikzset{tripoles/american nor port/width/.initial=1.1}
-\ctikzset{tripoles/american nor port/height/.initial=.8}
-\ctikzset{tripoles/american nor port/port width/.initial=.7}
-\ctikzset{tripoles/american nor port/input height/.initial=.5}
-\ctikzset{tripoles/american nor port/input skip/.initial=.25}
-\ctikzset{tripoles/american nor port/circle width/.initial=.15}
-\ctikzset{tripoles/american nor port/aaa/.initial=.6}
-\ctikzset{tripoles/american nor port/bbb/.initial=.4}
-\ctikzset{tripoles/american nor port/ccc/.initial=.5}
-\ctikzset{tripoles/american nor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xor port/width/.initial=1.1}
-\ctikzset{tripoles/american xor port/height/.initial=.8}
-\ctikzset{tripoles/american xor port/port width/.initial=.7}
-\ctikzset{tripoles/american xor port/input height/.initial=.5}
-\ctikzset{tripoles/american xor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xor port/distance/.initial=.1}
-\ctikzset{tripoles/american xor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xnor port/width/.initial=1.1}
-\ctikzset{tripoles/american xnor port/height/.initial=.8}
-\ctikzset{tripoles/american xnor port/port width/.initial=.7}
-\ctikzset{tripoles/american xnor port/input height/.initial=.5}
-\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xnor port/distance/.initial=.1}
-\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
-\ctikzset{tripoles/european and port/width/.initial=1.4}
-\ctikzset{tripoles/european and port/height/.initial=.65}
-\ctikzset{tripoles/european and port/reserved/.initial=.6}
-\ctikzset{tripoles/european and port/input height/.initial=.6}
-\ctikzset{tripoles/european or port/width/.initial=1.4}
-\ctikzset{tripoles/european or port/height/.initial=.65}
-\ctikzset{tripoles/european or port/reserved/.initial=.6}
-\ctikzset{tripoles/european or port/input height/.initial=.6}
-\ctikzset{tripoles/european xor port/width/.initial=1.4}
-\ctikzset{tripoles/european xor port/height/.initial=.65}
-\ctikzset{tripoles/european xor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xor port/input height/.initial=.6}
-\ctikzset{tripoles/european nand port/width/.initial=1.4}
-\ctikzset{tripoles/european nand port/not height/.initial=.3}
-\ctikzset{tripoles/european nand port/not width/.initial=.8}
-\ctikzset{tripoles/european nand port/height/.initial=.65}
-\ctikzset{tripoles/european nand port/reserved/.initial=.6}
-\ctikzset{tripoles/european nand port/input height/.initial=.6}
-\ctikzset{tripoles/european not port/width/.initial=1.4}
-\ctikzset{tripoles/european not port/not height/.initial=.3}
-\ctikzset{tripoles/european not port/not width/.initial=.8}
-\ctikzset{tripoles/european not port/height/.initial=.65}
-\ctikzset{tripoles/european not port/reserved/.initial=.6}
-\ctikzset{tripoles/european not port/input height/.initial=0}
-\ctikzset{tripoles/european xnor port/width/.initial=1.4}
-\ctikzset{tripoles/european xnor port/not height/.initial=.3}
-\ctikzset{tripoles/european xnor port/not width/.initial=.8}
-\ctikzset{tripoles/european xnor port/height/.initial=.65}
-\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xnor port/input height/.initial=.6}
-\ctikzset{tripoles/european nor port/width/.initial=1.4}
-\ctikzset{tripoles/european nor port/not height/.initial=.3}
-\ctikzset{tripoles/european nor port/not width/.initial=.8}
-\ctikzset{tripoles/european nor port/height/.initial=.65}
-\ctikzset{tripoles/european nor port/reserved/.initial=.6}
-\ctikzset{tripoles/european nor port/input height/.initial=.6}
-\ctikzset{tripoles/op amp/width/.initial=1.7}
-\ctikzset{tripoles/op amp/port width/.initial=.7}
-\ctikzset{tripoles/op amp/height/.initial=1.4}
-\ctikzset{tripoles/op amp/input height/.initial=.5}
-\ctikzset{tripoles/op amp/up pos/.initial=.45}
-\ctikzset{tripoles/plain amp/width/.initial=1.7}
-\ctikzset{tripoles/plain amp/port width/.initial=.7}
-\ctikzset{tripoles/plain amp/height/.initial=1.4}
-\ctikzset{tripoles/plain amp/input height/.initial=.5}
-\ctikzset{tripoles/plain amp/up pos/.initial=.45}
-
-\ctikzset{tripoles/thyristor/height/.initial=1.10}
-\ctikzset{tripoles/thyristor/height 2/.initial=.5}
-\ctikzset{tripoles/thyristor/width/.initial=1.0}
-\ctikzset{tripoles/thyristor/diode height/.initial=.5}
-\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
-\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
-\ctikzset{tripoles/triac/height/.initial=1.1}
-\ctikzset{tripoles/triac/width/.initial=1}
-\ctikzset{tripoles/triac/diode width left/.initial=.3}
-\ctikzset{tripoles/triac/diode width right/.initial=.3}
-
-\ctikzset{tripoles/spdt/width/.initial=.85}
-\ctikzset{tripoles/spdt/height/.initial=.45}
-\ctikzset{tripoles/spdt/margin/.initial=.45}
-
-\ctikzset{tripoles/toggleswitch/height/.initial=.8}
-\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
-\ctikzset{tripoles/toggleswitch/width/.initial=.80}
-
-\ctikzset{tripoles/mixer/width/.initial=0.7}
-\ctikzset{tripoles/adder/width/.initial=0.7}
-\ctikzset{tripoles/circulator/width/.initial=.7}
-
-\ctikzset{tripoles/wilkinson/height/.initial=1.3}
-\ctikzset{tripoles/wilkinson/width/.initial=1.3}
-
-\ctikzset{quadpoles/transformer/width/.initial=1.5}
-\ctikzset{quadpoles/transformer/width1/.initial=.4}
-\ctikzset{quadpoles/transformer/height/.initial=1.5}
-\ctikzset{quadpoles/transformer/height1/.initial=.8}
-\ctikzset{quadpoles/transformer core/width/.initial=1.5}
-\ctikzset{quadpoles/transformer core/height/.initial=1.5}
-\ctikzset{quadpoles/transformer core/core height/.initial=.5}
-\ctikzset{quadpoles/transformer core/core width/.initial=.05}
-\ctikzset{quadpoles/gyrator/width/.initial=1.5}
-\ctikzset{quadpoles/gyrator/height/.initial=1.5}
-\ctikzset{quadpoles/coupler/width/.initial=1.3}
-\ctikzset{quadpoles/coupler/height/.initial=1.3}
-
-\ctikzset{bipole/.is family}
-\ctikzset{bipole/kind/.initial = }
-\ctikzset{bipole/name/.initial = }
-\newif\ifpgf@circuit@bipole@reversed
-\ctikzset{bipole/reversed/.is if=pgf@circuit@bipole@reversed}
-\newif\ifpgf@circuit@bipole@isvoltage
-\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
-\newif\ifpgf@circuit@bipole@iscurrent
-\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
-
-\ctikzset{bipole/voltage/.is family}
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-\newif\ifpgf@circuit@bipole@voltage@below
-\ctikzset{bipole/voltage/position/.is choice}
-\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
-\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
-
-\ctikzset{bipole/voltage/label/unit/.initial=}
-\ctikzset{bipole/voltage/label/name/.initial=}
-
-\ctikzset{bipole/current/.is family}
-\newif\ifpgf@circuit@bipole@current@backward
-\ctikzset{bipole/current/direction/.is choice}
-\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
-\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
-\newif\ifpgf@circuit@bipole@current@before
-\ctikzset{bipole/current/x position/.is choice}
-\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
-\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
-\newif\ifpgf@circuit@bipole@current@below
-\ctikzset{bipole/current/y position/.is choice}
-\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
-\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
-
-\ctikzset{bipole/current/label/unit/.initial=}
-\ctikzset{bipole/current/label/name/.initial=}
-
-\ctikzset{bipole/label/.is family}
-\ctikzset{bipole/label/position/.initial=90}
-\ctikzset{bipole/label/unit/.initial=}
-\ctikzset{bipole/label/name/.initial=}
-\ctikzset{bipole/nodes/.is family}
-\ctikzset{bipole/nodes/left/.is choice}
-\ctikzset{bipole/nodes/left/none/.code={\ctikzsetvalof{bipole/nodes/left}{none}}}
-\ctikzset{bipole/nodes/left/empty/.code={\ctikzsetvalof{bipole/nodes/left}{empty}}}
-\ctikzset{bipole/nodes/left/full/.code={\ctikzsetvalof{bipole/nodes/left}{full}}}
-\ctikzset{bipole/nodes/right/.is choice}
-\ctikzset{bipole/nodes/right/none/.code={\ctikzsetvalof{bipole/nodes/right}{none}}}
-\ctikzset{bipole/nodes/right/empty/.code={\ctikzsetvalof{bipole/nodes/right}{empty}}}
-\ctikzset{bipole/nodes/right/full/.code={\ctikzsetvalof{bipole/nodes/right}{full}}}
-
-
-\newif\ifpgf@circuit@europeanresistor
-\ctikzset{resistor/.is choice}
-\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
-\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
-
-\ctikzset{inductor/.is choice}
-\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
-\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
-\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
-
-\newif\ifpgf@circuit@fulldiode
-\ctikzset{diode/.is if=pgf@circuit@fulldiode}
-\ctikzset{diode/.is choice}
-\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse }
-\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
-\ctikzset{thickness/.initial=2}
-\ctikzset{color/.initial=black}
-\pgfkeys{/tikz/color/.add code={}{\ctikzset{color=#1}}}
-
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circ@siunitx@res
-
-\ctikzset{voltage/.is family}
-\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
-\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
-\ctikzset{voltage/bump a/.initial=1.2}
-\ctikzset{voltage/bump b/.initial=1.5}
-\ctikzset{voltage/european label distance/.initial=1.4}
-\ctikzset{voltage/american label distance/.initial=1.1}
-% special cases
-\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
-\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
-\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
-\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
-\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
-%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
-%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
-
-\ctikzset{current/.is family}
-\ctikzset{current/distance/.initial = .5}
-
-\tikzset{american currents/.style = { \circuitikzbasekey/current = american } }
-\tikzset{european currents/.style = { \circuitikzbasekey/current = european } }
-\tikzset{american voltages/.style = { \circuitikzbasekey/voltage = american } }
-\tikzset{european voltages/.style = { \circuitikzbasekey/voltage = european } }
-\tikzset{american resistors/.style = { \circuitikzbasekey/resistor = american } }
-\tikzset{european resistors/.style = { \circuitikzbasekey/resistor = european } }
-
-\newif\ifpgf@circuit@europeangfsurgearrester
-\ctikzset{gas filled surge arrester/.is choice}
-\ctikzset{gas filled surge arrester/european/.code= {\pgf@circuit@europeangfsurgearrestertrue } }
-\ctikzset{gas filled surge arrester/american/.code= {\pgf@circuit@europeangfsurgearresterfalse } }
-
-\tikzset{american gas filled surge arrester/.style = { \circuitikzbasekey/gas filled surge arrester = american } }
-\tikzset{european gas filled surge arrester/.style = { \circuitikzbasekey/gas filled surge arrester = european } }
-\tikzset{american inductors/.style = { \circuitikzbasekey/inductor = american } }
-\tikzset{european inductors/.style = { \circuitikzbasekey/inductor = european } }
-\tikzset{cute inductors/.style = { \circuitikzbasekey/inductor = cute } }
-\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full } }
-\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty } }
-\tikzset{american ports/.style = { \circuitikzbasekey/logic ports = american } }
-\tikzset{european ports/.style = { \circuitikzbasekey/logic ports = european } }
-\tikzset{european/.style = { european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester } }
-\tikzset{american/.style = { american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester } }
-\tikzset{cute/.style = { european currents, european voltages, american resistors, cute inductors, american ports } }
-
-% I should try to make the tree clearer (this voltaege conflicts with the options above)
-
-\newif\ifpgf@circuit@europeanvoltage
-\ctikzset{voltage/.is choice}
-\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse } }
-\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue } }
-
-\newif\ifpgf@circuit@europeancurrent
-\ctikzset{current/.is choice}
-\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse }
-\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue }
-
-\ctikzset{label/align/.is choice}
-\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
-\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
-\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
-%% dependencies
-
-
-
-
-%%%%%%%%%% new
-\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
-
-
-
-
-
-%%%%%%%%%%% Springe nach pgfcircutils
-%%%---------- open: pgfcircutils.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%\def\pgf@circ@handleSI#1{%
- % \pgf@circ@siunitx@resfalse
-%
- % \edef\len{\stringlength[e]{#1}}
- %\testmatchingchar[e]{#1}{\len}{>}%
- %\ifmatchingchar%
- % \ifnum\findchars{#1}{<}=0
- % \def\pgf@circ@handleSI@val{\substring{#1}{1}{\findchars{#1}{<}-1}}
- %\def\pgf@circ@handleSI@unit{\substring{#1}{\findchars{#1}{<}-1}+1}{\stringlength{#1}}
- %\pgf@circ@siunitx@restrue
-% \else
-% \fi
- %\else
- %\fi
-%}
-
-\def\pgf@circ@handleSI#1{
- \noexpandarg
- \def\pgf@temp{}
- \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
- \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
-
- \ifnum\pgf@circ@handleSI@unit@len=0
- \pgf@circ@siunitx@resfalse
- \else
- \IfEndWith{#1}{>}{
- \pgf@circ@siunitx@restrue
- \noexpandarg
- \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
- %\typeout{si |#1|}
- }{
- \pgf@circ@siunitx@resfalse
- %\typeout{no si |#1|}
- }
- \fi
-}
-
-\def\pgf@circ@finallabel#1{%
- \edef\pgf@temp{}%
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1label/unit}}%
- \ifx\pgf@temp\pgf@circ@temp%
- \ctikzvalof{bipole/#1label/name}%
- \else%
- $\SI{\ctikzvalof{bipole/#1label/name}}{\ctikzvalof{bipole/#1label/unit}}$%
- \fi%
-}
-
-\def\pgf@circ@ifkeyempty#1{
- \pgfextra{
- \ctikzset{#1/.get=\pgf@circ@temp}
- \edef\pgf@temp{}
- }
- \ifx\pgf@circ@temp\pgf@temp
-}
-
-
-%%%---------- close: pgfcircutils
-%%%%%%%%%%% Springe nach pgfcircmath
-%%%---------- open: pgfcircmath.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Math routines
-
-\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
-
-% angle between 0 and 360
-\def\pgf@circ@slope#1#2{%
- \pgf@process{#1}%
- \pgf@xa=\pgf@x%
- \pgf@ya=\pgf@y%
- \pgf@process{#2}%
- \advance\pgf@x by-\pgf@xa%
- \advance\pgf@y by-\pgf@ya%
- \ifdim\pgf@x<0.1pt
- \ifdim\pgf@x>-0.1pt % vertical
- \ifdim\pgf@y<0pt
- \def\pgfmathresult{-90.0}
- \else
- \def\pgfmathresult{+90.0}
- \fi
- \else % oblique with dx < 0
- \pgfmathdivide{\pgf@y}{\pgf@x}
- \pgfmathatan{\pgfmathresult}
- \ifdim\pgf@x<0pt
- \pgfmathsubtract{\pgfmathresult}{+180}
- \fi
- \fi
- \else % oblique with dx > 0
- \pgfmathdivide{\pgf@y}{\pgf@x}
- \pgfmathatan{\pgfmathresult}
- \ifdim\pgf@x<0pt
- \pgfmathsubtract{\pgfmathresult}{+180}
- \fi
- \fi
- \pgf@x=\pgfmathresult pt
- \ifdim\pgf@x<0pt
- \pgfmathadd{\pgfmathresult}{+360}
- \fi
- }
-
-
-%%%---------- close: pgfcircmath
-
-%%%%%%%%%%% Springe nach pgfcircshapes
-%%%---------- open: pgfcircshapes.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Other shapes
-
-
-%% Nothing
-
-\pgfdeclareshape{emptyshape}{
- \savedanchor{\northeast}{%
- \pgf@x=.5\wd\pgfnodeparttextbox%
- \pgf@y=.5\ht\pgfnodeparttextbox%
- }
- \anchor{north}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{east}{%
- \northeast
- \pgf@y=0cm
- }
- \anchor{south}{%
- \northeast
- \pgf@y=-\pgf@y
- \pgf@x=0cm
- }
- \anchor{west}{
- \northeast
- \pgf@y=0cm
- \pgf@x=-\pgf@x
- }
- \anchor{text}{%
- \pgfpointorigin
- }
- \anchor{center}{
- \pgfpointorigin
- }
-}
-
-%% Full terminal
-
-\pgfdeclareshape{circ}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
-}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}}
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Empty terminal
-
-\pgfdeclareshape{ocirc}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
-}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}}
- }
-
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetfillcolor{white}
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Current arrow
-
-\pgfdeclareshape{currarrow}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \divide \pgf@circ@res@step by 16
-
- \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
-
- \endpgfscope
- }
-
-}
-
-%% Current arrow
-
-\pgfdeclareshape{inputarrow}{
- \savedanchor{\tip}{
- \pgfpointorigin
- }
- \anchor{center}{
- \tip
- }
- \anchor{tip}{
- \tip
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \divide \pgf@circ@res@step by 16
-
- \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{fill}
-
- \endpgfscope
- }
-
-}
-
-%%%---------- close: pgfcircshapes
-%%%%%%%%%%% Springe nach pgfcircmonopoles
-%%%---------- open: pgfcircmonopoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Monopoles
-
-%% Ground symbol
-
-\pgfdeclareshape{ground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-
-}
-
-
-
-\pgfdeclareshape{rground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{tground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- %\pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{sground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
- \pgfpathclose
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-
-}
-
-% noiseless ground
-\pgfdeclareshape{nground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{1.3\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpatharc{0}{180}{1.3\pgf@circ@res@step}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \endpgfscope
- }
-}
-
-% protective ground
-\pgfdeclareshape{pground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathcircle{\pgfpoint{0pt}{-\pgf@circ@res@step}} {1.2\pgf@circ@res@step}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \endpgfscope
- }
-}
-
-% chassis ground
-\pgfdeclareshape{cground}{
-\anchor{center}{
- \pgfpointorigin
-}
-\behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/chassis/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-1.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% Contributed by Leonardo Azzinnari
-\pgfdeclareshape{tlinestub}{
- \anchor{center}{\pgfpointorigin}
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
-
- \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-
-
-
-\pgfdeclareshape{antenna}{
-\anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
- \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=6\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
-
- % \pgfpathmoveto{\pgfpointorigin}
- % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- % \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgftransformxshift{ -4\pgf@circ@res@step }
-
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
- }
-
-
-\pgfdeclareshape{txantenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
- \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=6\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
-% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
- }
-
-
-\pgfdeclareshape{rxantenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
- \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=6\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
-% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
-}
-
-% Vcc
-\pgfdeclareshape{vcc}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgf@x=0pt
- \pgf@y=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgf@y=2\pgf@y
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-
-}
-
-% match
-\pgfdeclareshape{match}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
- \pgf@x=1.5\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \pgf@y=-1.5\ht\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
- \pgfusepath{fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-
-}
-
-% oscillator
-\pgfdeclareshape{oscillator}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{north}{
- \pgf@x=\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
- \pgf@x=-0.5\pgf@x
- \pgf@y=\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
- \pgf@y=0.5\pgf@y
- }
- \anchor{south}{
- \pgf@x=\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
- \pgf@x=-0.5\pgf@x
- \pgf@y=\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
- \pgf@y=-0.5\pgf@y
- }
- \anchor{east}{
- \pgfpointorigin
- \pgf@x=-\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
- }
- \anchor{west}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgf@x=\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
- \pgf@x=-2\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \pgf@y=-\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/oscillator/width}\pgf@circ@Rlen
- \pgf@circ@res@step=.5\pgf@circ@res@step
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfstartlinewidth=\pgflinewidth
-
- % draw circle
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{-\pgf@circ@res@step}{0}} {\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-1.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-}
-
-%%%---------- close: pgfcircmonopoles
-%%%%%%%%%%% Springe nach pgfcircbipoles
-%%%---------- open: pgfcircbipoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%% Generic macro for defining a bipole shape
-% #1 - additional anchors
-% #2 - lower y-size of the bipole (from the center).
-% #3 - #shape is the name of the shape
-% #4 - upper y-size of the bipole (from the center)
-% #5 - width of the bipole
-% #6 - macros drawing the bipole
-
-
-\long\def\pgfcircdeclarebipole#1#2#3#4#5#6{
- \pgfdeclareshape{#3shape}{
-
- \savedanchor{\northeast}{
- \pgf@y=#4\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\northeastborder}{
- \pgf@y=#4\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwestborder}{
- \pgf@y=-#2\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=-#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwest}{
- \pgf@y=-#2\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\centerpoint}{
- \pgf@circ@res@down=-#2\pgf@circ@Rlen
- \pgf@circ@res@up=#4\pgf@circ@Rlen
- \pgfpointorigin
- \pgf@y=\pgf@circ@res@up
- \advance\pgf@y by\pgf@circ@res@down
- \pgf@y=.5\pgf@y
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{n}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@x=0cm
- }
- \anchor{ne}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- }
- \anchor{nw}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@x=-\pgf@x
- }
- \anchor{e}{%
- \ifpgf@circuit@bipole@reversed\else\southwest\northeast\fi
- \pgf@y=0cm
- }
- \anchor{s}{%
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@x=0cm
- }
- \anchor{se}{%
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@x=-\pgf@x
- }
- \anchor{sw}{%
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- }
- \anchor{w}{
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \anchor{north}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@x=0cm
- }
- \anchor{east}{%
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
- \anchor{south}{%
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@x=0cm
- }
- \anchor{west}{
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \anchor{right}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
- \anchor{above}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@x=0cm
- }
- \anchor{left}{%
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \anchor{below}{%
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@x=0cm
- }
- \anchor{a}{%
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
- \anchor{b} {
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \savedanchor{\textanchor}{%
- \pgf@y=\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \anchor{text}{%
- \textanchor
- }
- \anchorborder{%
- \def\pgf@temp{false}
- \ifpgf@circuit@bipole@reversed\pgf@temp
- \pgf@circ@res@left=-\pgf@x
- \pgf@circ@res@right=-\pgf@y
- \else
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@right=\pgf@y
- \fi
- \ifdim\pgf@circ@res@right>0cm
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
- \else
- \southwestborder
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
- \fi
- }
-
- #1
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@zero = 0cm
- \pgf@circ@res@left = -\pgf@x
- \pgf@circ@res@right = \pgf@x
- \southwest
- \pgf@circ@res@down = \pgf@y
-
- \pgfstartlinewidth=\pgflinewidth
-
- #6
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- }
- }
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Standard bipole shapes declarations
-
-%% Resistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/resistor/height}}{resistor}{\ctikzvalof{bipoles/resistor/height}}{\ctikzvalof{bipoles/resistor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 12
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-
-%% Variable resistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vresistor/height}}{vresistor}{\ctikzvalof{bipoles/vresistor/height}}{\ctikzvalof{bipoles/vresistor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vresistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 12
- \def\myfrac{.5}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\myfrac\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\myfrac\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\myfrac\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\myfrac\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\myfrac\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\myfrac\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-%% Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/capacitor/height}}{capacitor}{\ctikzvalof{bipoles/capacitor/height}}{\ctikzvalof{bipoles/capacitor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/capacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-%% Polar Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pcapacitor/height}}{polarcapacitor}{\ctikzvalof{bipoles/pcapacitor/height}}{\ctikzvalof{bipoles/pcapacitor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/pcapacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgftransformrotate{-90}
- \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
-}
-
-%% Battery
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery/height}}{battery}{\ctikzvalof{bipoles/battery/height}}{\ctikzvalof{bipoles/battery/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 6
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-
-%% Battery 1
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery1/height}}{battery1}{\ctikzvalof{bipoles/battery1/height}}{\ctikzvalof{bipoles/battery1/width}}{
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
-
-
-
-
- \pgfusepath{draw}
-}
-
-
-
-%% cute inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cuteinductor/height}}{cuteinductor}{\ctikzvalof{bipoles/cuteinductor/height}}{\ctikzvalof{bipoles/cuteinductor/width}}{
- \pgf@circ@res@step=\ctikzvalof{bipoles/cuteinductor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/cuteinductor/coils}
-
- \pgfdecorationsegmentamplitude=\ctikzvalof{bipoles/cuteinductor/height}\pgf@circ@Rlen
- \pgfdecorationsegmentamplitude=.5\pgfdecorationsegmentamplitude
- \pgfdecorationsegmentlength = \pgf@circ@res@step
- \pgfdecorationsegmentaspect=.6
-
- \pgfdecoration{{coil}{\pgfdecoratedremainingdistance}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \endpgfdecoration
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{stroke}
-}
-
-
-
-%% american inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/americaninductor/height 2}}{americaninductor}{\ctikzvalof{bipoles/americaninductor/height}}{\ctikzvalof{bipoles/americaninductor/width}}{
- \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
-
- \pgfdecorationsegmentamplitude=\ctikzvalof{bipoles/americaninductor/height}\pgf@circ@Rlen
- \pgfdecorationsegmentamplitude=.45\pgfdecorationsegmentamplitude
- \pgfdecorationsegmentlength = 1.99\pgf@circ@res@step
-
- \pgfdecoration{{bumps}{\pgfdecoratedremainingdistance}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \endpgfdecoration
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{stroke}
-}
-
-
-
-
-
-%% Independent voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsource/height}}{vsource}{\ctikzvalof{bipoles/vsource/height}}{\ctikzvalof{bipoles/vsource/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-%% Independent voltage source - American style
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourceam/height}}{vsourceAM}{\ctikzvalof{bipoles/vsourceam/height}}{\ctikzvalof{bipoles/vsourceam/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
-
-
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
-
- \pgfusepath{draw}
-}
-
-
-
-%% Independent sinusoidal voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesin/height}}{vsourcesin}{\ctikzvalof{bipoles/vsourcesin/height}}{\ctikzvalof{bipoles/vsourcesin/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-% contributed by Alistair Kwan
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesquare/height}}{vsourcesquare}{\ctikzvalof{bipoles/vsourcesquare/height}}{\ctikzvalof{bipoles/vsourcesquare/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% Independent current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isource}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% Independent current source - American
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isourceam/height}}{isourceAM}{\ctikzvalof{bipoles/isourceam/height}}{\ctikzvalof{bipoles/isourceam/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-
-
-
-%% Independent sinusoidal current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isourcesin}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-
-%% Controlled voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsource/height}}{cvsource}{\ctikzvalof{bipoles/cvsource/height}}{\ctikzvalof{bipoles/cvsource/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% Controlled voltage source - American
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourceam/height}}{cvsourceAM}{\ctikzvalof{bipoles/cvsourceam/height}}{\ctikzvalof{bipoles/cvsourceam/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$-$}
- \pgfusepath{draw}
-}
-
-
-%% Controlled sinusoidal voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cvsourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-%% Controlled sinusoidal current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cisourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-%% Controlled current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisource/height}}{cisource}{\ctikzvalof{bipoles/cisource/height}}{\ctikzvalof{bipoles/cisource/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% Controlled current source - American
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisourceam/height}}{cisourceAM}{\ctikzvalof{bipoles/cisourceam/height}}{\ctikzvalof{bipoles/cisourceam/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{draw}}
- \endpgfscope
-}
-
-%% Black generic diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulldiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black Zener diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.2\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black Schottky diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullsdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{.8\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.2\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.2\pgf@circ@res@left}{.8\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Black tunnel diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulltdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black light emitting diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulllediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-}
-
-%% Black photodiode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullpdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black varcap
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varcap/height}}{fullvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \endpgfscope
-}
-
-%% Empty generic diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptydiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty Zener diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.2\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty Schottky diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptysdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{.8\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.2\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.2\pgf@circ@res@left}{.8\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty tunnel diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptytdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty light emitting diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptylediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty photodiode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptypdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty varcap
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varcap/height}}{emptyvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \endpgfscope
-}
-
-%% Closing SPST
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{cspst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@left}{.9\pgf@circ@res@up}}
- \pgfpatharc{65}{25}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
- %\pgfsetarrowsend{latex'}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.1\pgf@circ@res@right}{-.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.14\pgf@circ@res@right}{-.35\pgf@circ@res@up}}
- \pgfsetarrowsend{latex'}
- \pgfusepath{draw}
-
-}
-
-%% Opening SPST
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{ospst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@right}{.1\pgf@circ@res@down}}
- \pgfpatharc{15}{50}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
- %\pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.85\pgf@circ@res@left}{1.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.87\pgf@circ@res@left}{1.26\pgf@circ@res@up}}
- \pgfsetarrowsend{latex'}
- \pgfusepath{draw}
-
-
-}
-
-
-%% Push Button
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pushbutton/height 2}}{pushbutton}{\ctikzvalof{bipoles/pushbutton/height}}{\ctikzvalof{bipoles/pushbutton/width}}{
-
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% Ammeter
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ammeter/height}}{ammeter}{\ctikzvalof{bipoles/ammeter/height}}{\ctikzvalof{bipoles/ammeter/width}}{
- \def\pgf@circ@temp{right}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \def\pgf@circ@temp{below}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \pgf@circ@res@step=1.2\pgf@circ@res@up
- \fi
- \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetarrowsend{}
-
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfnode{circle}{center}{\textbf{A}}{}{}
-}
-
-%% Voltmeter
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/voltmeter/height}}{voltmeter}{\ctikzvalof{bipoles/voltmeter/height}}{\ctikzvalof{bipoles/voltmeter/width}}{
- \def\pgf@circ@temp{right}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \def\pgf@circ@temp{below}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \pgf@circ@res@step=1.2\pgf@circ@res@up
- \fi
- \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetarrowsend{}
-
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfnode{circle}{center}{\textbf{V}}{}{}
-
-}
-
-%% Short circuit
-
-\pgfcircdeclarebipole{}{0}{short}{0}{0}{ }
-
-%% Open circuit
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/open/height}}{open}{\ctikzvalof{bipoles/open/height}}{\ctikzvalof{bipoles/open/width}}{
-
-}
-
-%% Generic bipole - used as resistor by some (bleah)
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/generic/height}}{generic}{\ctikzvalof{bipoles/generic/height}}{\ctikzvalof{bipoles/generic/width}}{
-
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-}
-
-
-%% fuse
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fuse/height}}{fuse}{\ctikzvalof{bipoles/fuse/height}}{\ctikzvalof{bipoles/fuse/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-}
-
-
-
-%% Generic bipole, filled - used as inductor by some (bleah)
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fullgeneric/height}}{fullgeneric}{\ctikzvalof{bipoles/fullgeneric/height}}{\ctikzvalof{bipoles/fullgeneric/width}}{
-
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw,fill}
-}
-
-
-%% Generic asymmetric bipole
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ageneric/height}}{ageneric}{\ctikzvalof{bipoles/ageneric/height}}{\ctikzvalof{bipoles/ageneric/width}}{
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-%% asymmetric fuse
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/afuse/height}}{afuse}{\ctikzvalof{bipoles/afuse/height}}{\ctikzvalof{bipoles/afuse/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-
-
-%% Memristor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/memristor/height}}{memristor}{\ctikzvalof{bipoles/memristor/height}}{\ctikzvalof{bipoles/memristor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-
-
-%% Generic empty tunable
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tgeneric/height}}{tgeneric}{\ctikzvalof{bipoles/tgeneric/height}}{\ctikzvalof{bipoles/tgeneric/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Photoresistor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/photoresistor/height 2}}{photoresistor}{\ctikzvalof{bipoles/photoresistor/height}}{\ctikzvalof{bipoles/photoresistor/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-%% Thermistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistor/height}}{thermistor}{\ctikzvalof{bipoles/thermistor/height}}{\ctikzvalof{bipoles/thermistor/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- %\pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- %\endpgfscope
-}
-
-
-%% Thermistor PTC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorptc/height 2}}{thermistorptc}{\ctikzvalof{bipoles/thermistorptc/height}}{\ctikzvalof{bipoles/thermistorptc/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Thermistor NTC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorntc/height 2}}{thermistorntc}{\ctikzvalof{bipoles/thermistorntc/height}}{\ctikzvalof{bipoles/thermistorntc/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% thermocouple
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermocouple/height 2}}{thermocouple}{\ctikzvalof{bipoles/thermocouple/height}}{\ctikzvalof{bipoles/thermocouple/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-}
-
-%% Varistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varistor/height}}{varistor}{\ctikzvalof{bipoles/varistor/height}}{\ctikzvalof{bipoles/varistor/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\tiny\textsf{U}}}
-}
-
-
-
-%% Generic full tunable
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tfullgeneric/height}}{tfullgeneric}{\ctikzvalof{bipoles/tfullgeneric/height}}{\ctikzvalof{bipoles/tfullgeneric/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw,fill}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% Variable Cute Inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcuteinductor/height}}{vcuteinductor}{\ctikzvalof{bipoles/vcuteinductor/height}}{\ctikzvalof{bipoles/vcuteinductor/width}}{
- \pgf@circ@res@step=\ctikzvalof{bipoles/vcuteinductor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vcuteinductor/coils}
-
- \pgfdecorationsegmentamplitude=\ctikzvalof{bipoles/vcuteinductor/coil height}\pgf@circ@Rlen
- \pgfdecorationsegmentamplitude=.5\pgfdecorationsegmentamplitude
- \pgfdecorationsegmentlength = \pgf@circ@res@step
- \pgfdecorationsegmentaspect=.6
-
- \pgfdecoration{{coil}{\pgfdecoratedremainingdistance}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \endpgfdecoration
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{stroke}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% variable american inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vamericaninductor/height 2}}{vamericaninductor}{\ctikzvalof{bipoles/vamericaninductor/height}}{\ctikzvalof{bipoles/vamericaninductor/width}}{
- \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
-
- \pgfdecorationsegmentamplitude=\ctikzvalof{bipoles/vamericaninductor/height}\pgf@circ@Rlen
- \pgfdecorationsegmentamplitude=.45\pgfdecorationsegmentamplitude
- \pgfdecorationsegmentamplitude=.45\pgfdecorationsegmentamplitude % per freccia
- \pgfdecorationsegmentlength = 1.99\pgf@circ@res@step
-
- \pgfdecoration{{bumps}{\pgfdecoratedremainingdistance}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \endpgfdecoration
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{stroke}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-%% Variable Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcapacitor/height}}{vcapacitor}{\ctikzvalof{bipoles/vcapacitor/height}}{\ctikzvalof{bipoles/vcapacitor/width}}{
- %\pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/width}\pgf@circ@Rlen
- \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Handling of terminals
-
-
-%% Easily usable styles
-
-\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=full}}
-
-\tikzset{reversed/.style = {\circuitikzbasekey/bipole/reversed=true}}
-
-
-%% The output routine
-
-\def\drawpoles{
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{empty} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztostart) node[ocirc] {} }
- \else
- \pgfextra{ \def\pgf@temp{full} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztostart) node[circ] {} }
- \fi
- \fi
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} \def\pgf@temp{empty} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztotarget) node[ocirc] {} }
- \else
- \pgfextra{ \def\pgf@temp{full} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztotarget) node[circ] {} }
- \fi
- \fi
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-%% Lamp
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lamp/height}}{lamp}{\ctikzvalof{bipoles/lamp/height}}{\ctikzvalof{bipoles/lamp/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tline/height}
- }{tline}{\ctikzvalof{bipoles/tline/height}
- }{\ctikzvalof{bipoles/tline/width}
- }
- {
- \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0}}
- {\pgfpoint{\pgf@circ@res@step}{0}}
- {\pgfpoint{0}{-\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% SQUID added by Cor Molenaar 5 March 2010
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/squid/height}}{squid}{\ctikzvalof{bipoles/squid/height}}{\ctikzvalof{bipoles/squid/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-
-
-% Generic barrier added by Cor Molenaar 5 March 2010
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/barrier/height}}{barrier}{\ctikzvalof{bipoles/barrier/height}}{\ctikzvalof{bipoles/barrier/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
-
- \pgfusepath{draw}
-}
-
-
-% Contributed by Danilo Piazzalunga
-
-\pgfdeclareshape{buffer}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- }
- }
-
-
-
-
-
-\pgfdeclareshape{plain amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
-
-
-
- }
- }
-
-%% Generic two port box
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/twoport/height}}{twoport}{\ctikzvalof{bipoles/twoport/height}}{\ctikzvalof{bipoles/twoport/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
-}
-
-%% voltage controled oscillator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vco/width}}{vco}{\ctikzvalof{bipoles/twoport/width}}{\ctikzvalof{bipoles/vco/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw circle
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
-}
-
-%% bandpass filter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bandpass/width}}{bandpass}{\ctikzvalof{bipoles/bandpass/width}}{\ctikzvalof{bipoles/bandpass/width}}{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% highpass filter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/highpass/width}}{highpass}{\ctikzvalof{bipoles/highpass/width}}{\ctikzvalof{bipoles/highpass/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% lowpass filter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lowpass/width}}{lowpass}{\ctikzvalof{bipoles/lowpass/width}}{\ctikzvalof{bipoles/lowpass/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% ADC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/adc/width}}{adc}{\ctikzvalof{bipoles/adc/width}}{\ctikzvalof{bipoles/adc/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{A}
- \def\textii{D}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{A}
- \def\textii{D}
- \fi\fi
-
- % draw inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DAC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dac/width}}{dac}{\ctikzvalof{bipoles/dac/width}}{\ctikzvalof{bipoles/dac/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{D}
- \def\textii{A}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{D}
- \def\textii{A}
- \fi\fi
-
- % draw inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DSP
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dsp/width}}{dsp}{\ctikzvalof{bipoles/dsp/width}}{\ctikzvalof{bipoles/dsp/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{DSP}}
-}
-
-%% FFT
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fft/width}}{fft}{\ctikzvalof{bipoles/fft/width}}{\ctikzvalof{bipoles/fft/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{FFT}}
-}
-
-%% Amplifier
-\pgfcircdeclarebipole{}{
- %\ifpgf@circuit@box
- \ctikzvalof{bipoles/twoport/width}
- %\else
- % \ctikzvalof{bipoles/amp/width}
- %\fi
- }{amp}{
- %\ifpgf@circuit@box
- \ctikzvalof{bipoles/twoport/width}
- %\else
- % \ctikzvalof{bipoles/amp/width}
- % \fi
- }{
- % \ifpgf@circuit@box
- \ctikzvalof{bipoles/twoport/width}
- % \else
- % \ctikzvalof{bipoles/amp/width}
- % \fi
- }{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
-
-
- % draw outer box
- %\ifpgf@circuit@box
- % \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- %\fi
- % draw outer box
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.63\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0.75\pgf@circ@res@down}}
- \pgfpathclose
- \pgfusepath{draw}
-}
-
-
-%% variable amplifier
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vamp/width}}{vamp}{\ctikzvalof{bipoles/vamp/width}}{\ctikzvalof{bipoles/vamp/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vamp/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.63\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0.75\pgf@circ@res@down}}
- \pgfpathclose
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.7\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% pi attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piattenuator/width}}{piattenuator}{\ctikzvalof{bipoles/piattenuator/width}}{\ctikzvalof{bipoles/piattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable pi attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vpiattenuator/width}}{vpiattenuator}{\ctikzvalof{bipoles/vpiattenuator/width}}{\ctikzvalof{bipoles/vpiattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% T attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tattenuator/width}}{tattenuator}{\ctikzvalof{bipoles/tattenuator/width}}{\ctikzvalof{bipoles/tattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable T attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vtattenuator/width}}{vtattenuator}{\ctikzvalof{bipoles/vtattenuator/width}}{\ctikzvalof{bipoles/vtattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% phase shifter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{phaseshifter}{\ctikzvalof{bipoles/phaseshifter/width}}{\ctikzvalof{bipoles/phaseshifter/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-}
-
-%% variable phase shifter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{vphaseshifter}{\ctikzvalof{bipoles/vphaseshifter/width}}{\ctikzvalof{bipoles/vphaseshifter/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% detector
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/detector/width}}{detector}{\ctikzvalof{bipoles/detector/width}}{\ctikzvalof{bipoles/detector/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % draw inner stuff
- \pgfsetlinewidth{0.8\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@fulldiode
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
- \else
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
- \fi
-
-}
-
-
-
-
-%% european gas filled surge arrester
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{european gas filled surge arrester}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{\ctikzvalof{bipoles/european gas filled surge arrester/width}}{
-
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
-}
-
-
-
-
-%% american gas filled surge arrester
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{american gas filled surge arrester}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
- %\def\pgf@circ@temp{right}
- %\ifx\tikz@res@label@pos\pgf@circ@temp
- % \pgf@circ@res@step=-1.2\pgf@circ@res@up
- %\else
-% \def\pgf@circ@temp{below}
-% \ifx\tikz@res@label@pos\pgf@circ@temp
-% \pgf@circ@res@step=-1.2\pgf@circ@res@up
-% \else
-% \pgf@circ@res@step=1.2\pgf@circ@res@up
-% \fi
-% \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfnode{circle}{center}{}{}{}
-
- \pgfscope
- \pgfsetarrowsend{latex}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope{}
-
- %\pgftransformshift{\pgfpoint{.25\pgf@circ@res@left}{.45\pgf@circ@res@down}}
- %\pgfnode{circ}{center}{}{}{}
- %\pgftransformshift{}
- \pgfcircle{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
- \pgfusepath{fill}
-}
-
-
-
-
-
-
-%%%---------- close: pgfcircbipoles
-%%%%%%%%%%% Springe nach pgfcirctripoles
-%%%---------- open: pgfcirctripoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Tripoles
-
-
-\pgfdeclareshape{mixer}
-{
- \savedanchor\northwest{
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer circle
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % draw inner stuff
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{adder}
-{
- \savedanchor\northwest{
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer circle
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % draw inner stuff
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-
-
- \pgfdeclareshape{spdt}
- {
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out 1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{out 2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/margin}\pgf@circ@res@left
-
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
- \endpgfscope
-
-
- \pgfscope
- \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
- \pgfpathlineto{
- \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
- {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
- }
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
- }
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% Logic ports
-%%
-
-
-
-
-
-
-\long\def\pgfcircdeclarelogicport#1#2{
- \pgfdeclareshape{american #1 port}
- {
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{in 1}{
- \inOne
- }
- \anchor{in}{
- \inOne
- }
- \anchor{in 2}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-.8\pgf@x
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- #2
-
- }
- }
-}
-
-
-\pgfcircdeclarelogicport{and}{
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@down}}
- \pgfpathcurveto
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {.5\pgf@circ@res@down}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {0pt}}
- \pgfpathcurveto
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {.5\pgf@circ@res@up}}
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-
-\pgfcircdeclarelogicport{nand}{
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{2\pgflinewidth}
-
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathcurveto
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclarelogicport{nor}{
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
-
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-}
-
-
-
-
-\pgfcircdeclarelogicport{or}{
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclarelogicport{xor}{
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/distance}\pgf@circ@res@right+}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-
-
-\pgfcircdeclarelogicport{xnor}{
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/circle width}\pgf@circ@res@right
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/distance}\pgf@circ@res@right+}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
-
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-}
-
-
-\pgfdeclareshape{american not port}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- }
- }
-
-
-
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% #1 - name
-% #2 - text inside
-% #3 - number of inputs
-% #4 - is it a not
-
-\long\def\pgfcircdeclareeurologicport#1#2#3#4{
- \pgfdeclareshape{european #1 port}
- {
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \inOne
- }
- \anchor{in 1}{
- \inOne
- }
- \anchor{in 2}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-.8\pgf@x
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \def\pgf@temp{1}
- \def\pgf@circ@temp{#3}
- \ifx\pgftemp\pgf@circ@temp % one input
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}
- \else % two inputs
- \pgfpathmoveto{
- \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
- %
- \pgfpathmoveto{
- \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
- \fi%
- %
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
- %
- \edef\pgf@temp{not}
- \edef\pgf@circ@temp{#4}
- \ifx\pgf@temp\pgf@circ@temp % is a not
- \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not height}\pgf@circ@res@up}}
- \fi
- %
- \pgfusepath{draw}
- %
- \pgfpathmoveto{\pgfpointorigin}
- \pgftext{#2}
- %
- %
- %
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathrectanglecorners
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-%
-%
- }
- }
-}
-
-
-
-\pgfcircdeclareeurologicport{and}{$\&$}{2}{}
-\pgfcircdeclareeurologicport{or}{$\ge 1$}{2}{}
-\pgfcircdeclareeurologicport{xor}{$=1$}{2}{}
-\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
-\pgfcircdeclareeurologicport{nand}{$\&$}{2}{not}
-\pgfcircdeclareeurologicport{nor}{$\ge 1$}{2}{not}
-\pgfcircdeclareeurologicport{xnor}{$=1$}{2}{not}
-
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-\long\def\pgfcircdeclaretransistor#1#2#3{
- \pgfdeclareshape{#1}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northeast{% upper right
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x=0pt
- }
-% \savedanchor\northeast{%
-% \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
-% \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/height}\pgf@y
-% \pgf@y=.5\pgf@y
-% \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
-% \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/width}\pgf@x
-% }
- \savedanchor\left{%center left
- \pgf@y=0pt
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/width}\pgf@x
- }
- \anchor{text}{
- \northeast
- \pgfpoint
- {12\pgf@circ@res@right +0.2*(\pgf@circ@res@right-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left)}
- {0.6\pgf@y}
- }
- %
- % pseudo-bipole
- \anchor{left}{ % south
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{right}{
- \northeast
- }
- \anchor{north}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \anchor{south}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{south west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- }
- \anchor{north east}{
- \northeast
- }
- \anchor{north west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{south east}{
- \northeast
- \pgf@y=-\pgf@y
- }
-
- #2
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- %
- %
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = \pgf@x
- \left
- \pgf@circ@res@left = \pgf@x
- %
- #3
- %
- }
- }
-}
-
-
-
-
-
-
-\long\def\pgfcircdeclaremos#1#2#3{
- \pgfcircdeclaretransistor{#1}{
- \anchor{G}{
- \left
- }
- \anchor{gate}{
- \left
- }
- \anchor{B}{
- \left
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@x
- }
- \anchor{base}{
- \left
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@x
- }
- #2
- }
- {#3}
-}
-
-
-
-
-
-
-
-
-
-\pgfcircdeclaremos{nmos}{
- \anchor{D}{
- \northeast
- }
- \anchor{drain}{
- \northeast
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\pgf@y
- }
-}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclaremos{pmos}{
- \anchor{S}{
- \northeast
- }
- \anchor{source}{
- \northeast
- }
- \anchor{D}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{drain}{
- \northeast
- \pgf@y=-\pgf@y
- }
-}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.4}{%
- \pgfpoint%
- {\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathcircle{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left - \pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- {\pgf@circ@res@up+\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- \pgfusepath{draw,fill}
-
-}
-
-
-
-
-
-
-
-\pgfcircdeclaretransistor{pnp}{
- \anchor{E}{
- \northeast
- }
- \anchor{emitter}{
- \northeast
- }
- \anchor{B}{
- \left
- }
- \anchor{base}{
- \left
- }
- \anchor{C}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{collector}{
- \northeast
- \pgf@y=-\pgf@y
- }
-}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate height 2}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pnp/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-
-
-
-\pgfcircdeclaretransistor{npn}{
- \anchor{C}{
- \northeast
- }
- \anchor{collector}{
- \northeast
- }
- \anchor{B}{
- \left
- }
- \anchor{base}{
- \left
- }
- \anchor{E}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{emitter}{
- \northeast
- \pgf@y=-\pgf@y
- }
-}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/npn/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
-
-
-}
-
-
-
-\pgfcircdeclaretransistor{pigbt}{
- \anchor{E}{
- \northeast
- }
- \anchor{emitter}{
- \northeast
- }
- \anchor{B}{
- \left
- }
- \anchor{base}{
- \left
- }
- \anchor{C}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{collector}{
- \northeast
- \pgf@y=-\pgf@y
- }
-}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@down}}
- %\pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height 2}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
-
-
-}
-
-
-
-\pgfcircdeclaretransistor{nigbt}{
- \anchor{C}{
- \northeast
- }
- \anchor{collector}{
- \northeast
- }
- \anchor{B}{
- \left
- }
- \anchor{base}{
- \left
- }
- \anchor{E}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{emitter}{
- \northeast
- \pgf@y=-\pgf@y
- }
-}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base height}\pgf@circ@res@down}}
- %\pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigbt/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
-
-
-}
-
-
-
-
-
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% Contrib
-
-
-%%
-% IGFET (e.g. MOSFET)
-\long\def\pgfcircdeclarefet#1#2#3{
- \pgfcircdeclaretransistor{#1}{
- \anchor{B}{
- \left
- \pgf@x=\pgf@circ@res@right
- }
- \anchor{base}{
- \left
- \pgf@x=\pgf@circ@res@right
- }
- #2
- }
- {#3}
-}
-
-
-
-\pgfcircdeclarefet{nfet}{
- \anchor{D}{
- \northeast
- }
- \anchor{drain}{
- \northeast
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{G}{
- \left
- }
- \anchor{gate}{
- \left
- }
-
-}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@up*0.45}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@up*0.25}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down*0.25}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclarefet{pfet}{
- \anchor{D}{
- \northeast
- }
- \anchor{drain}{
- \northeast
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{G}{
- \left
- }
- \anchor{gate}{
- \left
- }
-
-}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base height}\pgf@circ@res@up*0.45}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base height}\pgf@circ@res@up*0.25}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base height}\pgf@circ@res@down*0.25}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base height}\pgf@circ@res@down*0.45}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate height}\pgf@circ@res@down}}
- %\pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgftransformrotate{180}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pfet/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfcircdeclarefet{nigfete}{
- \anchor{D}{
- \northeast
- }
- \anchor{drain}{
- \northeast
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{G}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- }
- \anchor{gate}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
- }
-}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- % DRAIN CONNECTION
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
- % DRAIN
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
-
- % GATE, ENHANCEMENT TYPE (DASHED)
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base height}\pgf@circ@res@up*0.45}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base height}\pgf@circ@res@up*0.25}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base height}\pgf@circ@res@down*0.25}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base height}\pgf@circ@res@down*0.45}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base height}\pgf@circ@res@down}}
-
- % BULK
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- % SOURCE
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % GATE
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- % ARROW
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- % GATE CONNECTION
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-% N-CHANNEL IGFET DEPLETION TYPE
-\pgfcircdeclarefet{nigfetd}{
- \anchor{D}{
- \northeast
- }
- \anchor{drain}{
- \northeast
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{G}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- }
- \anchor{gate}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
- }
-
-}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- % DRAIN CONNECTION
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@up}}
- % DRAIN
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@up}}
-
- % GATE, DEPLETION TYPE
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base height}\pgf@circ@res@down}}
-
- % BULK
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- % SOURCE
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@down}}
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % GATE
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- % ARROW
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- % GATE CONNECTION
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@down}}
- %\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetd/gate height}\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfcircdeclarefet{pigfete}{
- \anchor{D}{
- \northeast
- }
- \anchor{drain}{
- \northeast
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{G}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- }
- \anchor{gate}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
- }
-}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- % DRAIN CONNECTION
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
- % DRAIN
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % GATE, DASHED, BOLD
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base height}\pgf@circ@res@up*0.45}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base height}\pgf@circ@res@up*0.25}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base height}\pgf@circ@res@down*0.25}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base height}\pgf@circ@res@down*0.45}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- % BULK
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- % SOURCE
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@down}}
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % GATE
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@down}}
- %\pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- % ARROW
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- % Arrow has to be rotated, as this is a p-channel fet
- \pgftransformrotate{180}
- \pgftransformlineattime{-.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- % GATE CONNECTION (in line with source)
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@down}}
- %\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-% P-CHANNEL IGFET DEPLETION TYPE
-\pgfcircdeclarefet{pigfetd}{
- \anchor{D}{
- \northeast
- }
- \anchor{drain}{
- \northeast
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{G}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- }
- \anchor{gate}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@y
- }
-}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- % DRAIN CONNECTION
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@up}}
- % DRAIN
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@up}}
-
- \pgfusepath{draw}
-
-
- % GATE DEPLETION TYPE
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- % BULK
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
-
- % SOURCE
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@down}}
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % GATE
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@down}}
- %\pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- % ARROW
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- % PFET!
- \pgftransformrotate{180}
- \pgftransformlineattime{-.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- % GATE CONNECTION
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@down}}
- %\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfetd/gate height}\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% Contrib Danilo Piazzalunga
-
-
-
-
-
-
-\pgfcircdeclaretransistor{njfet}{
- \anchor{G}{
- \left
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/height}\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@y
- \pgf@y=-.5\pgf@y
- }
- \anchor{gate}{
- \left
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/height}\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@y
- \pgf@y=-.5\pgf@y
- }
- \anchor{D}{
- \northeast
- }
- \anchor{drain}{
- \northeast
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\pgf@y
- }
-}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint{\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclaretransistor{pjfet}{
- \anchor{G}{
- \left
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/height}\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@y
- \pgf@y=.5\pgf@y
- }
- \anchor{gate}{
- \left
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/height}\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@y
- \pgf@y=.5\pgf@y
- }
- \anchor{S}{
- \northeast
- }
- \anchor{source}{
- \northeast
- }
- \anchor{D}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{drain}{
- \northeast
- \pgf@y=-\pgf@y
- }
-}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.4}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-
-
-
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-
-
-
-
-% ISFET
-\pgfcircdeclarefet{isfet}{
- \anchor{D}{
- \northeast
- }
- \anchor{drain}{
- \northeast
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\pgf@y
- }
-}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- % DRAIN CONNECTION
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- % DRAIN
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % GATE, DEPLETION TYPE
- \pgfscope %% added
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth} %% added
- \pgfusepath{draw} %% added
- \endpgfscope %% added
-
- % BULK
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- % SOURCE
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % GATE
- %\pgfscope
- %\pgfpathmoveto{\pgfpoint
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- %\pgfpathlineto{\pgfpoint
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- %\pgfsetlinewidth{2\pgflinewidth}
- %\pgfusepath{draw}
- %\endpgfscope
-
- % ARROW
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfusepath{draw}
-
- % Wavy lines
- \pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-%% Black thyristor
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{anode}{
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \anchor{G}{
- \northeast
- }
- \anchor{cathode}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/thyristor/height 2}}{thyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-
-%% Empty triac
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{G}{
- \northeast
- }
- \anchor{anode}{
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \anchor{cathode}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/triac/height}}{triac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-
-
-
-
-
-
-
-
-\pgfcircdeclarebipole{
- \anchor{out 1}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
- \anchor{out 2}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=.8\pgf@y
- }
-}{\ctikzvalof{tripoles/toggleswitch/height 2}}{toggleswitch}{\ctikzvalof{tripoles/toggleswitch/height}}{\ctikzvalof{tripoles/toggleswitch/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetdash{}{0cm}
-}
-
-
-
-
-
-
-
-
-
-
-\pgfdeclareshape{op amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\scriptsize\ $-$}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\scriptsize\ $+$}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
-
-
-
- }
- }
-
-
-
-
-%% Potentiometer
-\pgfcircdeclarebipole{
- \anchor{wiper}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
- \anchor{W}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
-}{\ctikzvalof{bipoles/potentiometer/height 2}}{potentiometer}{\ctikzvalof{bipoles/potentiometer/height}}{\ctikzvalof{bipoles/potentiometer/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/potentiometer/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 12
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-
-%% Generic tunable
-
-\pgfcircdeclarebipole{
- \anchor{wiper}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
-}{\ctikzvalof{bipoles/generic potentiometer/height 2}}{genericpotentiometer}{\ctikzvalof{bipoles/generic potentiometer/height}}{\ctikzvalof{bipoles/generic potentiometer/width}}{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-\pgfdeclareshape{circulator}
-{
- \savedanchor\northwest{
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{3}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer circle
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % inner arrow
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
- \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-
-% Wilkinson divider
-\pgfdeclareshape{wilkinson}{
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=.5\pgf@x
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{out2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % draw inner stuff
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- % draw inner resisitor - european or american style is recognised
- {
- \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgftransformrotate{90}
-
- % calculate size of resistor
- \ifpgf@circuit@europeanresistor
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{genericshape}{center}{}{pgf@generic}{\pgfusepath{fill}}
- \else
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{resistorshape}{center}{}{pgf@resistor}{\pgfusepath{fill}}
- \fi
- }
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-
-
-%%%---------- close: pgfcirctripoles
-%%%%%%%%%%% Springe nach pgfcircquadpoles
-%%%---------- open: pgfcircquadpoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Quadripoles
-
-\long\def\pgfcircdeclarequadpole#1#2#3{
- \pgfdeclareshape{#1}
- {
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=.5\pgf@x
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
- }
- \anchor{A2}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{B1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{A1}{
- \northwest
- }
- \anchor{B2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{base}{
- \northwest
- \pgf@x=0pt
- }
- #3
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- %\pgf@circ@Rlen=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
-
- #2
-
- }
- }
-}
-
-
-
-\def\pgf@circ@drawtransformerbasicanchor{
- \pgfkeysvalueof{/tikz/circuitikz/quadpoles/trans/height}
- \anchor{AA2}{
- \northwest
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{AA1}{
- \northwest
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
-}
-
-\def\pgf@circ@drawtransformerbasicbody{
- \def\stretto{.4}
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@down}%
- }
-
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
-
- \endpgfscope
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@up}%
- }
-
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@inductor1}{b}}
-
- \pgfpathmoveto{\pgfpointanchor{pgf@inductor1}{a}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@inductor2}{a}}
-
- \pgfpathmoveto{\pgfpointanchor{pgf@inductor2}{b}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
-}
-
-
-
- % contrib Kristofer M. Monisit
-
- \pgfdeclareshape{fd op amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out +}{
- \northwest
- \pgf@y=.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{out -}{
- \northwest
- \pgf@y=-.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\scriptsize\ $-$}
-
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\scriptsize\ $+$}
-
-
- % Negative output terminal
- \pgfpathmoveto{\pgfpoint
- {0.7\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@down}]{\scriptsize\ $-$}
-
-
- % Positive output terminal
- \pgfpathmoveto{\pgfpoint
- {0.7\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@up}]{\scriptsize\ $+$}
-
-
- % Draw them all!
- \pgfusepath{draw}
-
- % Triangle
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- }
- }
-
-
-
-
-\pgfcircdeclarequadpole{transformer}{
-
- \pgf@circ@drawtransformerbasicbody
-
-}{\pgf@circ@drawtransformerbasicanchor}
-
-\pgfcircdeclarequadpole{transformer core}{
-
- \pgf@circ@drawtransformerbasicbody
-
- \pgfmoveto{\pgfpoint%
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgfmoveto{\pgfpoint%
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
-}{\pgf@circ@drawtransformerbasicanchor}
-
-
-\pgfcircdeclarequadpole{gyrator}{
-
- \def\stretto{.4}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{.7*\stretto\pgf@circ@res@down}}
- \pgfpatharc{90}{270}{.7*\stretto\pgf@circ@res@down}
-
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{.7*\stretto\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{.7*\stretto\pgf@circ@res@down}
- \pgfusepath{draw}
-
-}{}
-
-%% coupler
-% defines a general outer box for couplers
-% TikZ usage:
-% \draw (0,0) node[coupler](coup){\SI{-3}{dB}}
-% (coup.port1) to[short,-o] ++(-1,0)
-%
-
-\long\def\pgfcircdeclarecoupler#1#2{
- \pgfdeclareshape{#1}{
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/coupler/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=.5\pgf@x
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/coupler/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{port1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{port4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
- \anchor{1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % draw inner stuff
- #2
-
- }
- }
-}
-
-% straight coupler
-\pgfcircdeclarecoupler{coupler}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
-}
-
-% "bended" coupler
-\pgfcircdeclarecoupler{coupler2}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
-
-
-}
-
-%%%---------- close: pgfcircquadpoles
-%%%%%%%%%%% Springe nach pgfcircnpoles
-%%%---------- open: pgfcircnpoles.tex
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% N-poles
-
-\pgfkeys{/tikz/circuitikz,lab/.code={
-
-
-}}
-
-\long\def\pgfcircdeclarenpole#1#2#3{
- \pgfdeclareshape{#1}
- {
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=.5\pgf@x
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
- }
- \anchor{A2}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{B1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{A1}{
- \northwest
- }
- \anchor{B2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{base}{
- \northwest
- \pgf@x=0pt
- }
- #3
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- %\pgf@circ@Rlen=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
-
- #2
-
- }
- }
-}
-
-
-
-\def\pgf@circ@drawtransformerbasicanchor{
- \pgfkeysvalueof{/tikz/circuitikz/quadpoles/trans/height}
- \anchor{AA2}{
- \northwest
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{AA1}{
- \northwest
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
-}
-
-\def\pgf@circ@drawtransformerbasicbody{
- \def\stretto{.4}
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@down}%
- }
-
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
-
- \endpgfscope
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@up}%
- }
-
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@inductor1}{b}}
-
- \pgfpathmoveto{\pgfpointanchor{pgf@inductor1}{a}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@inductor2}{a}}
-
- \pgfpathmoveto{\pgfpointanchor{pgf@inductor2}{b}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
-}
-
-
-
- % contrib Kristofer M. Monisit
-
- \pgfdeclareshape{fd op amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out +}{
- \northwest
- \pgf@y=.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{out -}{
- \northwest
- \pgf@y=-.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\scriptsize\ $-$}
-
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\scriptsize\ $+$}
-
-
- % Negative output terminal
- \pgfpathmoveto{\pgfpoint
- {0.7\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@down}]{\scriptsize\ $-$}
-
-
- % Positive output terminal
- \pgfpathmoveto{\pgfpoint
- {0.7\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@up}]{\scriptsize\ $+$}
-
-
- % Draw them all!
- \pgfusepath{draw}
-
- % Triangle
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- }
- }
-
-
-
-
-\pgfcircdeclarequadpole{transformer}{
-
- \pgf@circ@drawtransformerbasicbody
-
-}{\pgf@circ@drawtransformerbasicanchor}
-
-\pgfcircdeclarequadpole{transformer core}{
-
- \pgf@circ@drawtransformerbasicbody
-
- \pgfmoveto{\pgfpoint%
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgfmoveto{\pgfpoint%
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
-}{\pgf@circ@drawtransformerbasicanchor}
-
-
-\pgfcircdeclarequadpole{gyrator}{
-
- \def\stretto{.4}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{.7*\stretto\pgf@circ@res@down}}
- \pgfpatharc{90}{270}{.7*\stretto\pgf@circ@res@down}
-
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{.7*\stretto\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{.7*\stretto\pgf@circ@res@down}
- \pgfusepath{draw}
-
-}{}
-
-%% coupler
-% defines a general outer box for couplers
-% TikZ usage:
-% \draw (0,0) node[coupler](coup){\SI{-3}{dB}}
-% (coup.port1) to[short,-o] ++(-1,0)
-%
-
-\long\def\pgfcircdeclarecoupler#1#2{
- \pgfdeclareshape{#1}{
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/coupler/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=.5\pgf@x
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/coupler/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{port1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{port4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
- \anchor{1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % draw inner stuff
- #2
-
- }
- }
-}
-
-% straight coupler
-\pgfcircdeclarecoupler{coupler}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
-}
-
-% "bended" coupler
-\pgfcircdeclarecoupler{coupler2}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
-
-
-}
-
-%%%---------- close: pgfcircnpoles
-
-%%%%%%%%%%% Springe nach pgfcirclabel
-%%%---------- open: pgfcirclabel.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Bipole label positioning
-
-%% Options
-\ctikzset{label/.style = { l=#1 } }
-\ctikzset{l/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
- \ctikzsetvalof{bipole/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-
-\ctikzset{label above/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l^/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-
-\ctikzset{label below/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-\ctikzset{l_/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-
-
-\def\pgf@circ@drawlabel{
- \pgfextra{
- \edef\pgf@temp{\ctikzvalof{label/align}}
- \def\pgf@circ@temp{straight}
- }
- \ifx\pgf@temp\pgf@circ@temp %straight
- \pgf@circ@drawreglabel
- \else
- \pgfextra{\def\pgf@circ@temp{rotate}}
- \ifx\pgf@temp\pgf@circ@temp %rotate
- \pgf@circ@drawrotlabel
- \else % smart
- \pgf@circ@drawsmartlabel
- \fi
- \fi
-}
-
-\def\pgf@circ@drawsmartlabel{
- \pgfextra{
- %\pgfmathadd{\pgf@circ@direction}{360}
- \pgfmathmod{\pgf@circ@direction}{90}
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- \ifnum \pgfcircmathresult > 20
- \ifnum \pgfcircmathresult < 70 % NON quasi retto
- \pgf@circ@drawrotlabel
- \else
- \pgf@circ@drawreglabel
- \fi
- \else
- \pgf@circ@drawreglabel
- \fi
-}
-
-%% Output routing
-%% #1 - node name
-
-\def\pgf@circ@drawrotlabel{
- \pgfextra{
- % calcolo rotazione label
- \def\pgf@circ@temp{\ctikzvalof{bipole/label/position}} %%% ร ncora label
- \edef\pgfcirclabrot{\pgf@circ@direction} % primo e quarto quadrante
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 90 \ifnum \pgfcircmathresult < 270 % terzo e secondo
- \pgfmathsubtract{\pgf@circ@direction}{180}
- \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \pgfmathadd{\pgf@circ@temp}{180} %%%
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil} %%%
- \fi\fi
-
- \ifnum \ctikzvalof{mirror value} = -1
- \pgfmathadd{\pgf@circ@temp}{180}
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- }
- coordinate (labelcoor) at ($(\ctikzvalof{bipole/name})!2!(\ctikzvalof{bipole/name}.north)$)
- (labelcoor) node [rotate=\pgfcirclabrot] {\pgf@circ@finallabel{}} % c'era un transform shape
-}
-
-\def\pgf@circ@drawreglabel{
- \pgfextra{
- \pgfmathsubtract{\pgf@circ@direction}{90}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
-
- \edef\pgf@circ@temp{\ctikzvalof{bipole/label/position}} %%% ร ncora label
- \ifnum \pgf@circ@temp < 0
- \pgfmathadd{\pgf@circ@labanc}{180}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
-
- \ifnum \ctikzvalof{mirror value} = -1
- \pgfmathadd{\pgf@circ@labanc}{180}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- }
- node [ anchor = \pgf@circ@labanc]
- at (\ctikzvalof{bipole/name}.\pgf@circ@temp) {\pgf@circ@finallabel{}}
-}
-
-
-\ctikzset{text/.style = { t=#1 } }
-\ctikzset{t/.code = {
- \ctikzsetvalof{bipoles/twoport/text}{#1}
-}}
-
-%%%---------- close: pgfcirclabel
-%%%%%%%%%%% Springe nach pgfcircvoltage
-%%%---------- open: pgfcircvoltage.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Voltage management
-
-
-\ctikzset{v^>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v^</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v_>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-\ctikzset{v_</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-
-% Default position varies whether the component is a voltage source
-% or not
-\ctikzset{v/.code = {
- \ifpgf@circuit@bipole@isvoltage
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \fi
- \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
- \ctikzsetvalof{bipole/voltage/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- }
-}
-
-\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
-\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
-\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
-\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
-
-
-%% Output routine for generic bipoles
-
-\def\pgf@circ@drawvoltagegeneric{
- \pgfextra{
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@voltage@below\pgf@circuit@bipole@voltage@belowfalse\else\pgf@circuit@bipole@voltage@belowtrue\fi
- \fi
-
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@voltage@angle{90}
- \else
- \def\pgf@circ@voltage@angle{-90}
- \fi
-
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\distacefromnode{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}} }
- { \edef\distacefromnode{\ctikzvalof{voltage/distance from node}} }
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\bumpb{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}} }
- { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
- }
-
- coordinate (pgfcirc@mid) at ($(\tikztostart) ! \distacefromnode ! (\ctikzvalof{bipole/name}.left)$)
- coordinate (pgfcirc@Vfrom) at ($(pgfcirc@mid) ! -\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen ! \pgf@circ@voltage@angle:(\ctikzvalof{bipole/name}.left)$)
-
- coordinate (pgfcirc@mid) at ($(\tikztotarget) ! \distacefromnode ! (\ctikzvalof{bipole/name}.right)$)
- coordinate (pgfcirc@Vto) at ($(pgfcirc@mid) ! \ctikzvalof{voltage/distance from line}\pgf@circ@Rlen ! \pgf@circ@voltage@angle : (\ctikzvalof{bipole/name}.right)$)
-
- \ifpgf@circuit@bipole@voltage@below
- coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
- coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
- \else
- coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
- coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
- \fi
-
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
- node[currarrow, sloped, allow upside down, pos=1] {}
- (pgfcirc@Vfrom)
- \else
- (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
- node[currarrow, sloped, allow upside down, pos=1] {}
- (pgfcirc@Vto)
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
- \else
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
- \fi
- \fi
-}
-
-%% Output routine for voltage sources
-
-\def\pgf@circ@drawvoltagegenerator{
- \ifpgf@circuit@bipole@voltage@below
- coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-120)$)
- coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-60)$)
- \else
- coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.120)$)
- coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.60)$)
- \fi
-
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vcont2) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont1)
- \else
- (pgfcirc@Vcont1) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont2)
- \fi
-
- \else % american voltage
-
- \pgfextra{
- \def\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}}
- \def\pgf@circ@temp{battery}
- \ifx\pgf@temp\pgf@circ@temp
- \edef\pgf@circ@batteria{battery}
- \else
- \def\pgf@circ@temp{battery1}
- \ifx\pgf@temp\pgf@circ@temp
- \edef\pgf@circ@batteria{battery}
- \else
- \edef\pgf@circ@batteria{false}
- \fi
- \fi
- \edef\pgf@circ@temp{battery}
- }
-
- \ifx\pgf@circ@batteria\pgf@circ@temp % if it is a battery, must put + and -
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vcont2) node {$-$} (pgfcirc@Vcont1) node {$+$}
- \else
- (pgfcirc@Vcont1) node {$-$} (pgfcirc@Vcont2) node {$+$}
- \fi
- \fi
-
- \fi
-}
-
-%% Output routine
-
-\def\pgf@circ@drawvoltage{ % node name
- \pgfextra{
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{east}
- \else \def\pgf@circ@bipole@voltage@label@anchor{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >284 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
-
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@where{-90}
- \else
- \def\pgf@circ@bipole@voltage@label@where{90}
- \fi
-
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\eudist{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}} }
- { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
- }
-
- \ifpgf@circuit@bipole@isvoltage
- \pgf@circ@drawvoltagegenerator
- \else
- \pgf@circ@drawvoltagegeneric
- \fi
- (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)
- coordinate (Vlab) at ($(\ctikzvalof{bipole/name}.center) !
- \ifpgf@circuit@europeanvoltage\eudist\else\ctikzvalof{voltage/american label distance}\fi !
- (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)$)
- node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=0]
- at (Vlab) { \pgf@circ@finallabel{voltage/} }
-}
-
-
-
-
-
-% coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) !
-% \ctikzvalof{voltage/bump b} !
-% (\ctikzvalof{bipole/name}.-110) $)
-% coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) !
-% \ctikzvalof{voltage/bump b} !
-% (\ctikzvalof{bipole/name}.-70) $)
-% \else
-% coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) !
-% \ctikzvalof{voltage/bump b} !
-% (\ctikzvalof{bipole/name}.110) $)
-% coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) !
-% \ctikzvalof{voltage/bump b} !
-% (\ctikzvalof{bipole/name}.70) $)
-% \fi
-%%%---------- close: pgfcircvoltage
-%%%%%%%%%%% Springe nach pgfcirccurrent
-%%%---------- open: pgfcirccurrent.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Current handling
-
-%% Options
-
-
-\ctikzset{i^>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i>^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i>_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i^</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i<^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i<_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i/.code = {
-% \ifpgf@circuit@bipole@iscurrent
-% \pgfkeys{\circuitikzbasekey/bipole/current/position=above}
-% \else
-% \pgfkeys{\circuitikzbasekey/bipole/current/position=below}
-% \fi
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above }
- \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
- \ctikzsetvalof{bipole/current/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}
-}
-
-\ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
-\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
-\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
-\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
-
-
-\def\pgf@circ@drawnormalcurrent{
- \ifpgf@circuit@bipole@current@before
- \ifpgf@circuit@bipole@current@backward
- { (\ctikzvalof{bipole/name}.left) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\tikztostart)
- }
- \else
- { (\tikztostart) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\ctikzvalof{bipole/name}.left)
- }
- \fi
- \else
- \ifpgf@circuit@bipole@current@backward
- { (\tikztotarget) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\ctikzvalof{bipole/name}.right)
- }
- \else
- { (\ctikzvalof{bipole/name}.right) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\tikztotarget)
- }
- \fi
- \fi
-}
-
-%% Output routine
-%% #1 - node name
-
-\def\pgf@circ@drawcurrent{
- \pgfextra{
- \edef\pgf@circ@ffffff{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >284 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- \ifnum\pgfcircmathresult >355
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
-
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@bipole@current@label@where{-90}
- \else
- \def\pgf@circ@bipole@current@label@where{+90}
- \fi
- }
-
-
- \pgfextra{ \def\pgf@temp{short} \edef\pgf@circ@temp{\ctikzvalof{bipole/kind}} }
-
- \ifx\pgf@circ@temp\pgf@temp % caso di corrente (centrata) su un corto
- \ifpgf@circuit@bipole@current@backward
- { (\tikztotarget) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\tikztostart) }
- \else
- { (\tikztostart) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\tikztotarget) }
- \fi
-
- \else % altri bipoli - e quindi tra nodo e target
-
- \ifpgf@circuit@bipole@iscurrent
- \ifpgf@circuit@europeancurrent
- \pgf@circ@drawnormalcurrent
- \else
- \fi
- \else
- \pgf@circ@drawnormalcurrent
- \fi
- \fi
-
- \ifpgf@circuit@bipole@iscurrent
- node [anchor=\pgf@circ@dir] at (\ctikzvalof{bipole/name}.\pgf@circ@bipole@current@label@where)
- { \pgf@circ@finallabel{current/} }
- \else
- (Iarrow.\pgf@circ@bipole@current@label@where) node [anchor=\pgf@circ@dir]
- { \pgf@circ@finallabel{current/} }
- \fi
-
-}
-
-
-
-
-%%%---------- close: pgfcirccurrent
-%%%%%%%%%%% Springe nach pgfcircinputarrows
-%%%---------- open: pgfcircinputarrows.tex
-% Copyright 2013 by Stefan Erhardt
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Show input arrows for selected parts
-
-
-\ctikzset{>/.style = {
- \circuitikzbasekey/inputarrow = true
- }
-}
-
-
-
-
-
-%%%---------- close: pgfcircinputarrows
-
-
-
-
-%%%---------- close: circuitikz.code
-
-\ExecuteOptions{europeancurrents,europeanvoltages,americanports,americanresistors,cuteinductors,europeangfsurgearrester,nosiunitx,noarrowmos,smartlabels,nocompatibility}
-
-\ProcessOptions\relax
-
-\ifpgf@circ@siunitx
- \RequirePackage{xstring}[2009/03/13]
- %\expandafter\let\csname angstrom\endcsname\relax
- \RequirePackage{siunitx}
-\fi
-
-%%%%%%%%%%% Springe nach circuitikz1.code
-%%%---------- open: circuitikz1.code.tex
-%%%%%%%%%%%%
-%% Dimensions
-
-% coordinate bipoli
-\newdimen\pgf@circ@res@up \newdimen\pgf@circ@res@down \newdimen\pgf@circ@res@zero
-\newdimen\pgf@circ@res@left \newdimen\pgf@circ@res@right
-\newdimen\pgf@circ@res@other
-\newdimen\pgf@circ@res@step
-
-% thickness iniziale
-\newdimen \pgfstartlinewidth
-
-\pgf@circ@Rlen = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
-
-
-
-% Names
-\ctikzset{name/.style = { n=#1 } }
-\ctikzset{n/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/name=#1}
-}}
-
-% Reflect the node along
-\ctikzset{mirrored/.is choice}
-\ctikzset{mirror value/.initial=1}
-\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
-\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
-\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
-
-% Initialize paths
-\def\pgfcircresetpath{
- \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90,
- bipole/reversed=false, bipole/kind=,
- bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
- bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,
- bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
- bipole/current/y position=above, bipole/current/direction=forward,
- mirrored=false
- }
-}
-
-
-%% Generic bipole path
-\def\pgf@circ@bipole@path#1#2{
- \pgfextra{
- \ctikzset{bipole/kind = #1}
-
- \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
- \def\pgf@circ@temp{}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = #2\pgf@circ@rand} % create it
- \fi
-
- \def\pgf@temp{open}
- \def\pgf@circ@temp{#1}
- }
- \ifpgf@circuit@bipole@reversed
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- \else
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- \fi
- \pgfextra{
- \pgf@circ@slope{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \edef\pgf@circ@direction{\pgfmathresult}
- }
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)
- node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}]
- (\ctikzvalof{bipole/name}) {}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- \else
- (\ctikzvalof{bipole/name}start.center) -- (\ctikzvalof{bipole/name}.left)
- (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
- \fi
- \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabel\fi
- \drawpoles
- \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
- \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
- % reset
- \pgfextra{
- \pgfcircresetpath
- }
- (\tikztotarget) \tikztonodes % e si continua
-}
-
-
-%% Path definitions
-
-\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
-\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
-\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
-\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
-\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
-\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
-\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
-\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
-\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
-\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
-\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
-\def\pgf@circ@battery1@path#1{\pgf@circ@bipole@path{battery1}{#1}}
-\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
-\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
-\def\pgf@circ@inductor@path#1{%
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@europeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@cuteinductor@path{#1}%
- \else%
- \pgf@circ@americaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@vinductor@path#1{
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@veuropeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@vcuteinductor@path{#1}%
- \else%
- \pgf@circ@vamericaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
-\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
-\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
-\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
-\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
-\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
-\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
-\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
-\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
-\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
-\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
-\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
-\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
-\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
-\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
-\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
-\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
-\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
-\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
-\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
-\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
-\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
-\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
-\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
-\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
-\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
-\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
-\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
-\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
-\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
-\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
-\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
-\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
-\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
-\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
-\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
-\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
-\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
-\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
-\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
-\def\pgf@circ@empty@path#1{}
-\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
-\def\pgf@circ@thyristor@path#1{\pgf@circ@bipole@path{thyristor}{#1}}
-\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
-\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
-\def\pgf@circ@triac@path#1{\pgf@circ@bipole@path{triac}{#1}}
-\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
-\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
-\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
-\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
-\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
-\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
-
-\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
-\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
-\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
-\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
-\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
-\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
-\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
-\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
-\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
-\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
-\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
-\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
-\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
-\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
-\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
-\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
-\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
-\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
-
-
-%% Styles
-
-%% Aggiungere per thyristor e tripoli semplici
-
-%\def\ctikzsetbipole#1#2{%
-% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
-%}
-%\ctikzsetbipole{resistor}{\pgf@circ@resistor@path}
-
-\tikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
-\tikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
-\tikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
-\tikzset{ammeter/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path, l=#1}}
-\tikzset{voltmeter/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path, l=#1}}
-\tikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
-\tikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
-\tikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
-\tikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
-\tikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
-\tikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
-\tikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
-\tikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
-\tikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
-\tikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
-\tikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
-\tikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
-\tikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
-\tikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
-\tikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\tikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery1@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\tikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
-\tikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
-\tikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
-\tikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
-\tikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
-\tikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
-\tikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
-\tikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
-\tikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
-\tikzset{transmission line/.style = {tline = #1}}
-\tikzset{TL/.style = {tline = #1}}
-\tikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\tikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\tikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\tikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\tikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\tikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\tikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\tikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\tikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, v=#1 }}
-\tikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, v=#1 }}
-\tikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\tikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\tikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-
-\tikzset{voltage source/.style = {\ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\tikzset{current source/.style = {\ifpgf@circuit@europeancurrent european \else american \fi current source, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\tikzset{controlled voltage source/.style = {\ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\tikzset{controlled current source/.style = {\ifpgf@circuit@europeancurrent european \else american \fi controlled current source, \circuitikzbasekey/bipole/is current=true, i=#1}}
-
-
-\tikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
-\tikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
-\tikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
-\tikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
-\tikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
-\tikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
-\tikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
-
-\tikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
-
-\tikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
-\tikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
-\tikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
-\tikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
-\tikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
-
-\tikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
-\tikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
-\tikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
-\tikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
-\tikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
-\tikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
-\tikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
-\tikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
-\tikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
-\tikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
-\tikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
-\tikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
-\tikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
-\tikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
-\tikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
-\tikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
-\tikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
-\tikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
-
-
-
-\tikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
-\tikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
-\tikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
-\tikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
-\tikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
-\tikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
-\tikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
-
-\tikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
-\tikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\tikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\tikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\tikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\tikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
-\tikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-
- \tikzset{Schottky diode/.style = {\ifpgf@circuit@fulldiode full \else empty \fi Schottky diode}}
- \tikzset{Zener diode/.style = {\ifpgf@circuit@fulldiode full \else empty \fi Zener diode}}
- \tikzset{tunnel diode/.style = {\ifpgf@circuit@fulldiode full \else empty \fi tunnel diode}}
- \tikzset{photodiode/.style = {\ifpgf@circuit@fulldiode full \else empty \fi photodiode}}
- \tikzset{led/.style = {\ifpgf@circuit@fulldiode full \else empty \fi led}}
- \tikzset{varcap/.style = {\ifpgf@circuit@fulldiode full \else empty \fi varcap}}
- \tikzset{diode/.style = {\ifpgf@circuit@fulldiode full \else empty \fi diode}}
-
-\tikzset{thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thyristor@path}}
-\tikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
-\tikzset{triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@triac@path}}
-
-\tikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
-\tikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
-\tikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\tikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
-
-\tikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
-\tikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
-
-% short forms
-\tikzset{vsource/.style = {voltage source = #1}}
-\tikzset{isource/.style = {current source = #1}}
-\tikzset{cisource/.style = {controlled current source = #1}}
-\tikzset{cvsource/.style = {controlled voltage source = #1}}
-\tikzset{vsourcesin/.style = {sinusoidal voltage source = #1}}
-\tikzset{vsourcesquare/.style = {square voltage source = #1}}
-\tikzset{isourcesin/.style = {sinusoidal current source = #1}}
-\tikzset{cisourcesin/.style = {controlled sinusoidal current source = #1}}
-\tikzset{cvsourcesin/.style = {controlled sinusoidal voltage source = #1}}
-
-\tikzset{controlled vsource/.style = {controlled voltage source = #1}}
-\tikzset{controlled isource/.style = {controlled current source = #1}}
-\tikzset{controlled vsourcesin/.style = {controlled sinusoidal voltage source = #1}}
-\tikzset{controlled isourcesin/.style = {controlled sinusoidal current source = #1}}
-
-\tikzset{R/.style= {resistor = #1}}
-\tikzset{vR/.style= {variable resistor = #1}}
-\tikzset{phR/.style= {photoresistor = #1}}
-\tikzset{thR/.style= {thermistor = #1}}
-\tikzset{thRp/.style= {thermistor ptc= #1}}
-\tikzset{thRn/.style= {thermistor ntc= #1}}
-\tikzset{pR/.style= {potentiometer = #1}}
-\tikzset{C/.style = {capacitor = #1}}
-\tikzset{pC/.style = {polar capacitor = #1}}
-\tikzset{vC/.style = {variable capacitor = #1}}
-\tikzset{L/.style = {inductor = #1}}
-\tikzset{vL/.style = {variable inductor = #1}}
-\tikzset{V/.style = {voltage source = #1}}
-\tikzset{cV/.style = {controlled voltage source = #1}}
-\tikzset{sV/.style = {sinusoidal voltage source = #1}}
-\tikzset{sqV/.style = {square voltage source = #1}}
-\tikzset{csV/.style = {controlled sinusoidal voltage source = #1}}
-\def\pgf@temp#1{
- \tikzset{V#1/.style = {voltage source, v#1=##1} }
- \tikzset{cV#1/.style = {controlled voltage source, v#1=##1} }
- \tikzset{sV#1/.style = {sinusoidal voltage source, v#1=##1} }
- \tikzset{csV#1/.style = {controlled sinusoidal voltage source, v#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-\tikzset{I/.style = {current source = #1}}
-\tikzset{cI/.style = {controlled current source = #1}}
-\tikzset{sI/.style = {sinusoidal current source = #1}}
-\tikzset{csI/.style = {controlled sinusoidal current source = #1}}
-\def\pgf@temp#1{
- \tikzset{I#1/.style = {current source, i#1=##1} }
- \tikzset{cI#1/.style = {controlled current source, i#1=##1} }
- \tikzset{sI#1/.style = {sinusoidal current source, i#1=##1} }
- \tikzset{csI#1/.style = {controlled sinusoidal current source, i#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-\tikzset{Do/.style = {empty diode}}
-\tikzset{tDo/.style = {empty tunnel diode}}
-\tikzset{zDo/.style = {empty Zener diode}}
-\tikzset{sDo/.style = {empty Schottky diode}}
-\tikzset{pDo/.style = {empty photodiode}}
-\tikzset{leDo/.style = {empty led}}
-\tikzset{VCo/.style = {empty varcap}}
-\tikzset{D*/.style = {full diode}}
-\tikzset{tD*/.style = {full tunnel diode}}
-\tikzset{zD*/.style = {full Zener diode}}
-\tikzset{sD*/.style = {full Schottky diode}}
-\tikzset{pD*/.style = {full photodiode}}
-\tikzset{leD*/.style = {full led}}
-\tikzset{VC*/.style = {full varcap}}
-\tikzset{D/.style = {diode}}
-\tikzset{tD/.style = {tunnel diode}}
-\tikzset{zD/.style = {Zener diode}}
-\tikzset{sD/.style = {Schottky diode}}
-\tikzset{pD/.style = {photodiode}}
-\tikzset{leD/.style = {led}}
-\tikzset{VC/.style = {varcap}}
-
-\tikzset{Tr/.style = {triac}}
-\tikzset{Mr/.style = {memristor}}
-\tikzset{Ty/.style = {thyristor}}
-
-\tikzset{cspst/.style = {closing switch = #1}}
-\tikzset{ospst/.style = {opening switch = #1}}
-
-\tikzset{afuse/.style = {asymmetric fuse=#1}}
-
-
-\def\inheritlogicport#1#2{
- \pgfdeclareshape{#2 port}{
- \inheritsavedanchors[from=#1 #2 port]
- \inheritbackgroundpath[from=#1 #2 port]
- \inheritanchor[from=#1 #2 port]{in}
- \inheritanchor[from=#1 #2 port]{in 1}
- \inheritanchor[from=#1 #2 port]{in 2}
- \inheritanchor[from=#1 #2 port]{out}
- \inheritanchor[from=#1 #2 port]{center}
- \inheritanchor[from=#1 #2 port]{left}
- }
-}
-
-\ifpgf@circuit@europeanlogicport
- \inheritlogicport{european}{and}
- \inheritlogicport{european}{or}
- \inheritlogicport{european}{xor}
- \inheritlogicport{european}{not}
- \inheritlogicport{european}{nand}
- \inheritlogicport{european}{nor}
- \inheritlogicport{european}{xnor}
-\else
- \inheritlogicport{american}{and}
- \inheritlogicport{american}{or}
- \inheritlogicport{american}{xor}
- \inheritlogicport{american}{not}
- \inheritlogicport{american}{nand}
- \inheritlogicport{american}{nor}
- \inheritlogicport{american}{xnor}
-\fi
-
-% Transistor like bipoles
-
-\def\pgf@circ@trans@path#1#2{
- \pgfextra{
- \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
- \def\pgf@circ@temp{#2}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
- \fi
- }
- \ifpgf@circuit@bipole@reversed
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- \else
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- \fi
- \pgfextra{
- \pgf@circ@slope{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \pgfmathadd{\pgfmathresult}{-90}
- \edef\pgf@circ@direction{\pgfmathresult}
- }
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)
- node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
- (\ctikzvalof{bipole/name}) {} node {\ctikzvalof{bipole/label/name}}
- (\ctikzvalof{bipole/name}start.center) -- (\ctikzvalof{bipole/name}.left)
- (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
- \pgfextra{
- \pgfcircresetpath
- }
- (\tikztotarget) \tikztonodes % e si continua
-}
-
-
-\def\pgf@circ@definetranspath#1{
- \tikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
-}
-
-\pgf@circ@definetranspath{nmos}
-\pgf@circ@definetranspath{pmos}
-\pgf@circ@definetranspath{npn}
-\pgf@circ@definetranspath{pnp}
-\pgf@circ@definetranspath{nfet}
-\pgf@circ@definetranspath{nigfete}
-\pgf@circ@definetranspath{nigfetd}
-\pgf@circ@definetranspath{pfet}
-\pgf@circ@definetranspath{pigfete}
-\pgf@circ@definetranspath{pigfetd}
-\pgf@circ@definetranspath{njfet}
-\pgf@circ@definetranspath{pjfet}
-\pgf@circ@definetranspath{pigbt}
-\pgf@circ@definetranspath{nigbt}
-%%%---------- close: circuitikz1.code
-
-\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
-
-
-\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.6-body.tex b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.6-body.tex
new file mode 100644
index 0000000000..5da4ae0d4b
--- /dev/null
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.6-body.tex
@@ -0,0 +1,10290 @@
+% Copyright 2018-2021 by Romano Giannetti
+% Copyright 2015-2021 by Stefan Lindner
+% Copyright 2013-2021 by Stefan Erhardt
+% Copyright 2007-2021 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+
+%%%%%
+%%%%%
+%%%%%
+%%%%% Se c'รจ l'opzione symbol, fallback to siunitx with warning
+%%%%%
+%%%%%
+
+\NeedsTeXFormat{LaTeX2e}
+
+\def\pgfcircversion{0.6}
+\def\pgfcircversiondate{2016/06/06}
+
+%% Version 2.0 of pgf/TikZ is required
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+\usepgflibrary{arrows}
+
+
+% The options are listed in the manual in this order
+
+\DeclareOption{europeanvoltage}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{americanvoltage}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrent}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrent}{
+ \ctikzset{current = american}
+}
+
+\DeclareOption{europeanvoltage}{
+ \ctikzset{voltage = european}
+}
+
+\DeclareOption{americanresistor}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistor}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductor}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductor}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductor}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanport}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanport}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{europeanport}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{european}{
+ \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
+ \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester = european}
+}
+
+\DeclareOption{american}{
+ \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester = american}
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{fulldiodes}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiodes}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{europeanvoltages}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{americanvoltages}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrents}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrents}{
+ \ctikzset{current = american}
+}
+
+\DeclareOption{europeanvoltages}{
+ \ctikzset{voltage = european}
+}
+
+\DeclareOption{americanresistors}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistors}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductors}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductors}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductors}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanports}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanports}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{americangfsurgearrester}{
+ \ctikzset{gas filled surge arrester = american}
+}
+
+\DeclareOption{europeangfsurgearrester}{
+ \ctikzset{gas filled surge arrester = european}
+}
+
+\DeclareOption{siunitx}{
+ \pgf@circ@siunitxtrue
+}
+
+\DeclareOption{nosiunitx}{
+ \pgf@circ@siunitxfalse
+}
+
+\DeclareOption{fulldiode}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiode}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{strokediode}{
+ \ctikzset{diode = stroke}
+}
+
+\DeclareOption{arrowmos}{
+ \pgf@circuit@mos@arrowstrue
+}
+
+\DeclareOption{noarrowmos}{
+ \pgf@circuit@mos@arrowsfalse
+}
+
+\DeclareOption{fetbodydiode}{
+ \pgf@circuit@fet@bodydiodetrue
+}
+
+\DeclareOption{nofetbodydiode}{
+ \pgf@circuit@fet@bodydiodefalse
+}
+
+\DeclareOption{fetsolderdot}{
+ \pgf@circuit@fet@solderdottrue
+}
+
+\DeclareOption{nofetsolderdot}{
+ \pgf@circuit@fet@solderdotfalse
+}
+
+\DeclareOption{emptypmoscircle}{
+ \pgf@circuit@pmos@emptycircletrue
+}
+
+
+\DeclareOption{lazymos}{
+ \ctikzset{tripoles/nmos/width=.5}
+ \ctikzset{tripoles/nmos/gate height=.35}
+ \ctikzset{tripoles/nmos/base height=.35}
+ \ctikzset{tripoles/nmos/height/.initial=1.2}
+ \ctikzset{tripoles/nmos/base width=.5}
+ \ctikzset{tripoles/nmos/gate width=.65}
+
+ \ctikzset{tripoles/pmos/width=.5}
+ \ctikzset{tripoles/pmos/gate height=.35}
+ \ctikzset{tripoles/pmos/base height=.35}
+ \ctikzset{tripoles/pmos/height/.initial=1.2}
+ \ctikzset{tripoles/pmos/base width=.5}
+ \ctikzset{tripoles/pmos/gate width=.65}
+
+ \pgf@circuit@pmos@emptycircletrue
+}
+
+\DeclareOption{straightlabels}{
+ \ctikzset{label/align = straight}
+}
+
+\DeclareOption{rotatelabels}{
+ \ctikzset{label/align = rotate}
+}
+
+\DeclareOption{smartlabels}{
+ \ctikzset{label/align = smart}
+}
+
+\DeclareOption{compatibility}{
+ \pgf@circuit@compattrue
+}
+
+\DeclareOption{oldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectiontrue
+}
+\DeclareOption{nooldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectionfalse
+}
+
+\DeclareOption{betterproportions}{
+ \ctikzset{monopoles/ground/width/.initial=.15}
+
+ \ctikzset{bipoles/resistor/height/.initial=.23}
+ \ctikzset{bipoles/resistor/width/.initial=.6}
+ \ctikzset{bipoles/capacitor/height/.initial=.4}
+ \ctikzset{bipoles/capacitor/width/.initial=.1}
+ \ctikzset{bipoles/potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
+ \ctikzset{bipoles/photoresistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistor/main/.initial=.7}
+ \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
+ \ctikzset{bipoles/thermistorptc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorptc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/main/.initial=.7}
+ \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/width/.initial=.6}
+ \ctikzset{bipoles/vresistor/height/.initial=.45}
+ \ctikzset{bipoles/vresistor/width/.initial=.6}
+ \ctikzset{bipoles/generic/height/.initial=.23}
+ \ctikzset{bipoles/generic/width/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/ageneric/height/.initial=.23}
+ \ctikzset{bipoles/ageneric/width/.initial=.6}
+ \ctikzset{bipoles/memristor/height/.initial=.23}
+ \ctikzset{bipoles/memristor/wave height/.initial=.375}
+ \ctikzset{bipoles/memristor/width/.initial=.60}
+ \ctikzset{bipoles/tgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tgeneric/width/.initial=.6}
+ \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
+ \ctikzset{bipoles/fullgeneric/height/.initial=.23}
+ \ctikzset{bipoles/fullgeneric/width/.initial=.6}
+ \ctikzset{bipoles/diode/height/.initial=.3}
+ \ctikzset{bipoles/diode/width/.initial=.25}
+
+ \ctikzset{tripoles/thyristor/height/.initial=.66}
+ \ctikzset{tripoles/thyristor/height 2/.initial=.3}
+ \ctikzset{tripoles/thyristor/width/.initial=.6}
+ \ctikzset{tripoles/thyristor/diode height/.initial=.3}
+ \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+ \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+ \ctikzset{tripoles/triac/height/.initial=.66}
+ \ctikzset{tripoles/triac/width/.initial=.6}
+ \ctikzset{tripoles/triac/diode width left/.initial=.3}
+ \ctikzset{tripoles/triac/diode width right/.initial=.3}
+}
+
+%%%%%%%%%
+%%%%%%%%%%% Springe nach tex/pgfcirc.defines
+%%%---------- open: tex/pgfcirc.defines.tex
+
+%% Options
+
+%%%%%%%%%%%%
+%% Dimensions
+
+% coordinates
+\newdimen\pgf@circ@res@up
+\newdimen\pgf@circ@res@down
+\newdimen\pgf@circ@res@zero
+\newdimen\pgf@circ@res@left
+\newdimen\pgf@circ@res@right
+\newdimen\pgf@circ@res@other
+\newdimen\pgf@circ@res@step
+\newdimen\pgf@circ@res@temp
+% inital thickness
+\newdimen \pgfstartlinewidth
+%% Keys
+
+\long\def\pgf@circ@comment#1{}
+
+\def\circuitikzbasekey{/tikz/circuitikz}
+
+\pgfkeys{\circuitikzbasekey/.is family}
+
+\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
+\let\ctikzset\circuitikzset
+\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
+\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circuit@compat
+\newif\ifpgf@circ@oldvoltagedirection
+
+% Option ">" for twoports
+\newif\ifpgf@circuit@inputarrow
+\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/.is choice}
+\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
+
+% Option "boxed" for nodes and twoports
+\newif\ifpgf@circuit@boxed
+\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
+
+% Option "dashed" for nodes and twoports
+\newif\ifpgf@circuit@dashed
+\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
+\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}
+
+% Option "t=*" for nodes
+\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
+
+
+
+\ctikzset{bipoles/.is family}
+\ctikzset{bipoles/border margin/.initial=1.1}
+\ctikzset{bipoles/thickness/.initial=2}
+\ctikzset{bipoles/length/.initial=1.4cm}
+\ctikzset{nodes width/.initial=.04}
+\newdimen\pgf@circ@Rlen
+\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1}}
+
+\ctikzset{monopoles/.is family}
+\ctikzset{monopoles/ground/width/.initial=.25}
+\ctikzset{monopoles/tground/thickness/.initial=3}
+\ctikzset{monopoles/vcc/width/.initial=.2}
+\ctikzset{monopoles/match/width/.initial=.4}
+\ctikzset{monopoles/chassis/width/.initial=.25}
+\ctikzset{monopoles/alternative chassis/width/.initial=.25}
+\ctikzset{monopoles/equipotentiality/width/.initial=.25}
+\ctikzset{monopoles/tlinestub/width/.initial=.25}
+\ctikzset{monopoles/antenna/width/.initial=.25}
+\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/width/.initial=.25}
+\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/rxantenna/width/.initial=.25}
+
+\ctikzset{bipoles/resistor/height/.initial=.3}
+\ctikzset{bipoles/resistor/width/.initial=.8}
+\ctikzset{bipoles/potentiometer/height/.initial=.8}
+\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
+\ctikzset{bipoles/potentiometer/width/.initial=.8}
+\ctikzset{bipoles/photoresistor/height/.initial=.6}
+\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
+\ctikzset{bipoles/photoresistor/width/.initial=.8}
+\ctikzset{bipoles/thermistor/main/.initial=.7}
+\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/width/.initial=.8}
+\ctikzset{bipoles/thermistorntc/main/.initial=.7}
+\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistorptc/width/.initial=.8}
+\ctikzset{bipoles/thermistorptc/main/.initial=.7}
+\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistor/width/.initial=.8}
+\ctikzset{bipoles/varistor/main/.initial=.7}
+\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/varistor/width/.initial=.8}
+\ctikzset{bipoles/vresistor/height/.initial=.6}
+\ctikzset{bipoles/vresistor/width/.initial=.8}
+\ctikzset{bipoles/cuteinductor/height/.initial=.3}
+\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
+\ctikzset{bipoles/cuteinductor/width/.initial=.6}
+\ctikzset{bipoles/cuteinductor/coils/.initial=5}
+\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+\ctikzset{bipoles/americaninductor/height/.initial=.3}
+\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
+\ctikzset{bipoles/americaninductor/width/.initial=.8}
+\ctikzset{bipoles/americaninductor/coils/.initial=4}
+\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
+\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
+\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
+\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
+\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
+\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
+\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/esource/height/.initial=.60}
+\ctikzset{bipoles/esource/width/.initial=.60}
+\ctikzset{bipoles/pvsource/height/.initial=.60}
+\ctikzset{bipoles/pvsource/width/.initial=.60}
+\ctikzset{bipoles/isource/height/.initial=.60}
+\ctikzset{bipoles/isource/width/.initial=.60}
+\ctikzset{bipoles/oosource/height/.initial=.60}
+\ctikzset{bipoles/oosource/width/.initial=.60}
+\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/dcisource/height/.initial=.60}
+\ctikzset{bipoles/dcisource/width/.initial=.60}
+\ctikzset{bipoles/dcvsource/height/.initial=.60}
+\ctikzset{bipoles/dcvsource/width/.initial=.60}
+\ctikzset{bipoles/vsourcetri/height/.initial=.60}
+\ctikzset{bipoles/vsourcetri/width/.initial=.60}
+\ctikzset{bipoles/isourceam/height/.initial=.60}
+\ctikzset{bipoles/isourceam/width/.initial=.60}
+\ctikzset{bipoles/vsource/height/.initial=.60}
+\ctikzset{bipoles/vsource/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/height/.initial=.60}
+\ctikzset{bipoles/vsourceam/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/margin/.initial=.7}
+\ctikzset{bipoles/isourcesin/height/.initial=.60}
+\ctikzset{bipoles/isourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesin/height/.initial=.60}
+\ctikzset{bipoles/vsourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
+\ctikzset{bipoles/cisource/height/.initial=.7}
+\ctikzset{bipoles/cisource/width/.initial=.7}
+\ctikzset{bipoles/cisourceam/height/.initial=.7}
+\ctikzset{bipoles/cisourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsource/height/.initial=.7}
+\ctikzset{bipoles/cvsource/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/height/.initial=.7}
+\ctikzset{bipoles/cvsourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
+\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
+\ctikzset{bipoles/cisourcesin/width/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
+\ctikzset{bipoles/capacitor/height/.initial=.6}
+\ctikzset{bipoles/capacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/height/.initial=.5}
+\ctikzset{bipoles/ecapacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/font/.initial= \fontsize{6}{0}\selectfont\boldmath}
+\ctikzset{bipoles/pcapacitor/height/.initial=.6}
+\ctikzset{bipoles/pcapacitor/width/.initial=.2}
+\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
+\ctikzset{bipoles/vcapacitor/height/.initial=.6}
+\ctikzset{bipoles/vcapacitor/width/.initial=.5}
+\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
+\ctikzset{bipoles/piezoelectric/height/.initial=.7}
+\ctikzset{bipoles/piezoelectric/width/.initial=.5}
+\ctikzset{bipoles/battery/height/.initial=.6}
+\ctikzset{bipoles/battery/width/.initial=.3}
+\ctikzset{bipoles/battery1/height/.initial=.6}
+\ctikzset{bipoles/battery1/width/.initial=.3}
+\ctikzset{bipoles/diode/height/.initial=.50}
+\ctikzset{bipoles/diode/width/.initial=.40}
+\ctikzset{bipoles/varcap/height/.initial=.50}
+\ctikzset{bipoles/varcap/width/.initial=.45}
+\ctikzset{bipoles/interr/height/.initial=.35}
+\ctikzset{bipoles/interr/width/.initial=.35}
+\ctikzset{bipoles/interr/height 2/.initial=.1}
+\ctikzset{bipoles/generic/height/.initial=.30}
+\ctikzset{bipoles/generic/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
+\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
+\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
+\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
+\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
+\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
+\ctikzset{bipoles/fuse/height/.initial=.20}
+\ctikzset{bipoles/fuse/width/.initial=.50}
+\ctikzset{bipoles/afuse/height/.initial=.20}
+\ctikzset{bipoles/afuse/width/.initial=.50}
+\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
+\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
+\ctikzset{bipoles/ageneric/height/.initial=.30}
+\ctikzset{bipoles/ageneric/width/.initial=.80}
+\ctikzset{bipoles/memristor/height/.initial=.30}
+\ctikzset{bipoles/memristor/wave height/.initial=.5}
+\ctikzset{bipoles/memristor/width/.initial=.80}
+\ctikzset{bipoles/tgeneric/height/.initial=.70}
+\ctikzset{bipoles/tgeneric/width/.initial=.80}
+\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
+\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
+\ctikzset{bipoles/fullgeneric/height/.initial=.30}
+\ctikzset{bipoles/fullgeneric/width/.initial=.80}
+\ctikzset{bipoles/open/height/.initial=.25}
+\ctikzset{bipoles/open/width/.initial=.8}
+\ctikzset{bipoles/ammeter/height/.initial=.60}
+\ctikzset{bipoles/ammeter/width/.initial=.60}
+\ctikzset{bipoles/ohmmeter/height/.initial=.60}
+\ctikzset{bipoles/ohmmeter/width/.initial=.60}
+\ctikzset{bipoles/voltmeter/height/.initial=.60}
+\ctikzset{bipoles/voltmeter/width/.initial=.60}
+\ctikzset{bipoles/buffer/height/.initial=1}
+\ctikzset{bipoles/buffer/width/.initial=1}
+\ctikzset{bipoles/not port/width/.initial=1}
+\ctikzset{bipoles/not port/height/.initial=.8}
+\ctikzset{bipoles/not port/circle width/.initial=.15}
+\ctikzset{bipoles/lamp/height/.initial=.60}
+\ctikzset{bipoles/lamp/width/.initial=.60}
+\ctikzset{bipoles/tline/height/.initial=.3}
+\ctikzset{bipoles/tline/width/.initial=.8}
+\ctikzset{bipoles/squid/height/.initial=.60}
+\ctikzset{bipoles/squid/width/.initial=.60}
+\ctikzset{bipoles/barrier/height/.initial=.60}
+\ctikzset{bipoles/barrier/width/.initial=.60}
+\ctikzset{bipoles/thermocouple/height/.initial=.250}
+\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
+\ctikzset{bipoles/thermocouple/width/.initial=.140}
+\ctikzset{bipoles/pushbutton/height/.initial=.5}
+\ctikzset{bipoles/pushbutton/height 2/.initial=.0}
+\ctikzset{bipoles/pushbutton/width/.initial=.50}
+
+\ctikzset{bipoles/twoport/width/.initial=.7}
+\ctikzset{bipoles/twoport/height/.initial=.7}
+\ctikzset{bipoles/twoport/text/.initial=}
+\ctikzset{bipoles/vco/width/.initial=.7}
+\ctikzset{bipoles/bandpass/width/.initial=.7}
+\ctikzset{bipoles/highpass/width/.initial=.7}
+\ctikzset{bipoles/lowpass/width/.initial=.7}
+\ctikzset{bipoles/adc/width/.initial=.7}
+\ctikzset{bipoles/dac/width/.initial=.7}
+\ctikzset{bipoles/dsp/width/.initial=.7}
+\ctikzset{bipoles/fft/width/.initial=.7}
+\ctikzset{bipoles/amp/width/.initial=.7}
+\ctikzset{bipoles/vamp/width/.initial=.7}
+\ctikzset{bipoles/piattenuator/width/.initial=.7}
+\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
+\ctikzset{bipoles/tattenuator/width/.initial=.7}
+\ctikzset{bipoles/vtattenuator/width/.initial=.7}
+\ctikzset{bipoles/phaseshifter/width/.initial=.7}
+\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
+\ctikzset{bipoles/detector/width/.initial=.7}
+
+
+\newif\ifpgf@circuit@trans@depletiontype
+\pgf@circuit@trans@depletiontypefalse
+
+\newif\ifpgf@circuit@mos@arrows
+\ctikzset{tripoles/mos style/.is choice}
+\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
+\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
+
+% Option solderdot for fet
+\newif\ifpgf@circuit@fet@solderdot
+\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+
+% Option bodydiode for fet
+\newif\ifpgf@circuit@fet@bodydiode
+\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+
+% Option draw fet without gate connection
+\newif\ifpgf@circuit@bpt@drawgate
+\pgf@circuit@bpt@drawgatetrue
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+
+% Option draw bpt without base connection
+\newif\ifpgf@circuit@bpt@drawbase
+\pgf@circuit@bpt@drawbasetrue
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+
+% Option draw bpt with optical input
+\newif\ifpgf@circuit@bpt@drawphoto
+\pgf@circuit@bpt@drawphotofalse
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+
+% Option draw pmos with empty circle
+\newif\ifpgf@circuit@pmos@emptycircle
+\newif\ifpgf@circuit@pmos@emptycircle
+\pgf@circuit@pmos@emptycirclefalse
+\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+
+
+\newif\ifpgf@circuit@trans@ntype
+\pgf@circuit@trans@ntypetrue %default true
+%\newif\ifpgf@circuit@trans@ptype
+%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
+\ctikzset{tripoles/nmos/width/.initial=.7}
+\ctikzset{tripoles/nmos/gate height/.initial=.35}
+\ctikzset{tripoles/nmos/base height/.initial=.5}
+\ctikzset{tripoles/nmos/conn height/.initial=0}
+\ctikzset{tripoles/nmos/height/.initial=1.1}
+\ctikzset{tripoles/nmos/base width/.initial=.5}
+\ctikzset{tripoles/nmos/gate width/.initial=.62}
+\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nmos/curr direction/.initial=1}
+
+\ctikzset{tripoles/pmos/width/.initial=.7}
+\ctikzset{tripoles/pmos/gate height/.initial=.35}
+\ctikzset{tripoles/pmos/base height/.initial=.5}
+\ctikzset{tripoles/pmos/conn height/.initial=0}
+\ctikzset{tripoles/pmos/height/.initial=1.1}
+\ctikzset{tripoles/pmos/base width/.initial=.5}
+\ctikzset{tripoles/pmos/gate width/.initial=.62}
+\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pmos/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nfet/width/.initial=.7}
+\ctikzset{tripoles/nfet/gate height/.initial=.35}
+\ctikzset{tripoles/nfet/base height/.initial=.5}
+\ctikzset{tripoles/nfet/conn height/.initial=0}
+\ctikzset{tripoles/nfet/height/.initial=1.1}
+\ctikzset{tripoles/nfet/base width/.initial=.5}
+\ctikzset{tripoles/nfet/gate width/.initial=.62}
+\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pfet/width/.initial=.7}
+\ctikzset{tripoles/pfet/gate height/.initial=.35}
+\ctikzset{tripoles/pfet/base height/.initial=.5}
+\ctikzset{tripoles/pfet/conn height/.initial=0}
+\ctikzset{tripoles/pfet/height/.initial=1.1}
+\ctikzset{tripoles/pfet/base width/.initial=.5}
+\ctikzset{tripoles/pfet/gate width/.initial=.62}
+\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigfete/width/.initial=.7}
+\ctikzset{tripoles/nigfete/gate height/.initial=.35}
+\ctikzset{tripoles/nigfete/base height/.initial=.5}
+\ctikzset{tripoles/nigfete/conn height/.initial=.35}
+\ctikzset{tripoles/nigfete/height/.initial=1.1}
+\ctikzset{tripoles/nigfete/base width/.initial=.5}
+\ctikzset{tripoles/nigfete/gate width/.initial=.62}
+\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfete/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetd/width/.initial=.7}
+\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetd/base height/.initial=.5}
+\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetd/height/.initial=1.1}
+\ctikzset{tripoles/nigfetd/base width/.initial=.5}
+\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
+
+\ctikzset{tripoles/pigfete/width/.initial=.7}
+\ctikzset{tripoles/pigfete/gate height/.initial=.35}
+\ctikzset{tripoles/pigfete/base height/.initial=.5}
+\ctikzset{tripoles/pigfete/conn height/.initial=.35}
+\ctikzset{tripoles/pigfete/height/.initial=1.1}
+\ctikzset{tripoles/pigfete/base width/.initial=.5}
+\ctikzset{tripoles/pigfete/gate width/.initial=.62}
+\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetd/width/.initial=.7}
+\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetd/base height/.initial=.5}
+\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetd/height/.initial=1.1}
+\ctikzset{tripoles/pigfetd/base width/.initial=.5}
+\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
+
+\ctikzset{tripoles/npn/width/.initial=.6}
+\ctikzset{tripoles/npn/base height/.initial=.45}
+\ctikzset{tripoles/npn/base height 2/.initial=.15}
+\ctikzset{tripoles/npn/base height/.initial=.4}
+\ctikzset{tripoles/npn/conn height/.initial=0}
+\ctikzset{tripoles/npn/height/.initial=1.1}
+\ctikzset{tripoles/npn/base width/.initial=.5}
+\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/npn/curr direction/.initial=1}
+
+\ctikzset{tripoles/pnp/width/.initial=.6}
+\ctikzset{tripoles/pnp/base height/.initial=.45}
+\ctikzset{tripoles/pnp/base height 2/.initial=.15}
+\ctikzset{tripoles/pnp/base height/.initial=.4}
+\ctikzset{tripoles/pnp/conn height/.initial=0}
+\ctikzset{tripoles/pnp/height/.initial=1.1}
+\ctikzset{tripoles/pnp/base width/.initial=.5}
+\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pnp/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigbt/width/.initial=.6}
+\ctikzset{tripoles/pigbt/gate height/.initial=.45}
+\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/pigbt/base height/.initial=.4}
+\ctikzset{tripoles/pigbt/conn height/.initial=0}
+\ctikzset{tripoles/pigbt/height/.initial=1.1}
+\ctikzset{tripoles/pigbt/gate width/.initial=.62}
+\ctikzset{tripoles/pigbt/base width/.initial=.5}
+\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigbt/width/.initial=.6}
+\ctikzset{tripoles/nigbt/gate height/.initial=.45}
+\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/nigbt/base height/.initial=.4}
+\ctikzset{tripoles/nigbt/conn height/.initial=0}
+\ctikzset{tripoles/nigbt/height/.initial=1.1}
+\ctikzset{tripoles/nigbt/gate width/.initial=.62}
+\ctikzset{tripoles/nigbt/base width/.initial=.5}
+\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/Lpigbt/width/.initial=.6}
+\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/Lnigbt/width/.initial=.6}
+\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/njfet/width/.initial=.7}
+\ctikzset{tripoles/njfet/gate height/.initial=.5}
+\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/njfet/gate width/.initial=.5}
+\ctikzset{tripoles/njfet/conn height/.initial=.35}
+\ctikzset{tripoles/njfet/height/.initial=1.1}
+\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/njfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pjfet/width/.initial=.7}
+\ctikzset{tripoles/pjfet/gate height/.initial=.5}
+\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/pjfet/gate width/.initial=.5}
+\ctikzset{tripoles/pjfet/conn height/.initial=.35}
+\ctikzset{tripoles/pjfet/height/.initial=1.1}
+\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/isfet/width/.initial=1}
+\ctikzset{tripoles/isfet/gate height/.initial=.35}
+\ctikzset{tripoles/isfet/base height/.initial=.5}
+\ctikzset{tripoles/isfet/height/.initial=1.1}
+\ctikzset{tripoles/isfet/base width/.initial=.3}
+\ctikzset{tripoles/isfet/gate width/.initial=.5}
+\ctikzset{tripoles/isfet/conn height/.initial=0}
+\ctikzset{tripoles/isfet/wave width/.initial=.16}
+\ctikzset{tripoles/isfet/wave amp/.initial=.06}
+\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
+\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
+\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/isfet/curr direction/.initial=1}
+
+\newif\ifpgf@circuit@europeanlogicport
+\ctikzset{logic ports/.is choice}
+\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue } }
+\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse } }
+
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+
+\ctikzset{tripoles/american and port/width/.initial=1.1}
+\ctikzset{tripoles/american and port/height/.initial=.8}
+\ctikzset{tripoles/american and port/port width/.initial=.7}
+\ctikzset{tripoles/american and port/input height/.initial=.5}
+\ctikzset{tripoles/american nand port/width/.initial=1.1}
+\ctikzset{tripoles/american nand port/height/.initial=.8}
+\ctikzset{tripoles/american nand port/port width/.initial=.7}
+\ctikzset{tripoles/american nand port/circle width/.initial=.15}
+\ctikzset{tripoles/american nand port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/width/.initial=1.1}
+\ctikzset{tripoles/american or port/height/.initial=.8}
+\ctikzset{tripoles/american or port/port width/.initial=.7}
+\ctikzset{tripoles/american or port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/input skip/.initial=.25}
+\ctikzset{tripoles/american or port/aaa/.initial=.6}
+\ctikzset{tripoles/american or port/bbb/.initial=.4}
+\ctikzset{tripoles/american or port/ccc/.initial=.5}
+\ctikzset{tripoles/american or port/ddd/.initial=.0}
+\ctikzset{tripoles/american nor port/width/.initial=1.1}
+\ctikzset{tripoles/american nor port/height/.initial=.8}
+\ctikzset{tripoles/american nor port/port width/.initial=.7}
+\ctikzset{tripoles/american nor port/input height/.initial=.5}
+\ctikzset{tripoles/american nor port/input skip/.initial=.25}
+\ctikzset{tripoles/american nor port/circle width/.initial=.15}
+\ctikzset{tripoles/american nor port/aaa/.initial=.6}
+\ctikzset{tripoles/american nor port/bbb/.initial=.4}
+\ctikzset{tripoles/american nor port/ccc/.initial=.5}
+\ctikzset{tripoles/american nor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xor port/width/.initial=1.1}
+\ctikzset{tripoles/american xor port/height/.initial=.8}
+\ctikzset{tripoles/american xor port/port width/.initial=.7}
+\ctikzset{tripoles/american xor port/input height/.initial=.5}
+\ctikzset{tripoles/american xor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xor port/distance/.initial=.1}
+\ctikzset{tripoles/american xor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/width/.initial=1.1}
+\ctikzset{tripoles/american xnor port/height/.initial=.8}
+\ctikzset{tripoles/american xnor port/port width/.initial=.7}
+\ctikzset{tripoles/american xnor port/input height/.initial=.5}
+\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xnor port/distance/.initial=.1}
+\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
+\ctikzset{tripoles/european and port/width/.initial=1.4}
+\ctikzset{tripoles/european and port/height/.initial=.65}
+\ctikzset{tripoles/european and port/reserved/.initial=.6}
+\ctikzset{tripoles/european and port/input height/.initial=.6}
+\ctikzset{tripoles/european or port/width/.initial=1.4}
+\ctikzset{tripoles/european or port/height/.initial=.65}
+\ctikzset{tripoles/european or port/reserved/.initial=.6}
+\ctikzset{tripoles/european or port/input height/.initial=.6}
+\ctikzset{tripoles/european xor port/width/.initial=1.4}
+\ctikzset{tripoles/european xor port/height/.initial=.65}
+\ctikzset{tripoles/european xor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xor port/input height/.initial=.6}
+\ctikzset{tripoles/european nand port/width/.initial=1.4}
+\ctikzset{tripoles/european nand port/not height/.initial=.3}
+\ctikzset{tripoles/european nand port/not width/.initial=.8}
+\ctikzset{tripoles/european nand port/height/.initial=.65}
+\ctikzset{tripoles/european nand port/reserved/.initial=.6}
+\ctikzset{tripoles/european nand port/input height/.initial=.6}
+\ctikzset{tripoles/european not port/width/.initial=1.4}
+\ctikzset{tripoles/european not port/not height/.initial=.3}
+\ctikzset{tripoles/european not port/not width/.initial=.8}
+\ctikzset{tripoles/european not port/height/.initial=.65}
+\ctikzset{tripoles/european not port/reserved/.initial=.6}
+\ctikzset{tripoles/european not port/input height/.initial=0}
+\ctikzset{tripoles/european xnor port/width/.initial=1.4}
+\ctikzset{tripoles/european xnor port/not height/.initial=.3}
+\ctikzset{tripoles/european xnor port/not width/.initial=.8}
+\ctikzset{tripoles/european xnor port/height/.initial=.65}
+\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xnor port/input height/.initial=.6}
+\ctikzset{tripoles/european nor port/width/.initial=1.4}
+\ctikzset{tripoles/european nor port/not height/.initial=.3}
+\ctikzset{tripoles/european nor port/not width/.initial=.8}
+\ctikzset{tripoles/european nor port/height/.initial=.65}
+\ctikzset{tripoles/european nor port/reserved/.initial=.6}
+\ctikzset{tripoles/european nor port/input height/.initial=.6}
+\ctikzset{tripoles/op amp/width/.initial=1.7}
+\ctikzset{tripoles/op amp/port width/.initial=.7}
+\ctikzset{tripoles/op amp/height/.initial=1.4}
+\ctikzset{tripoles/op amp/input height/.initial=.5}
+\ctikzset{tripoles/op amp/up pos/.initial=.45}
+\ctikzset{tripoles/op amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolut font size needed!
+\ctikzset{tripoles/gm amp/width/.initial=1.7}
+\ctikzset{tripoles/gm amp/port width/.initial=.7}
+\ctikzset{tripoles/gm amp/height/.initial=1.4}
+\ctikzset{tripoles/gm amp/input height/.initial=.5}
+\ctikzset{tripoles/gm amp/up pos/.initial=.45}
+\ctikzset{tripoles/plain amp/width/.initial=1.7}
+\ctikzset{tripoles/plain amp/port width/.initial=.7}
+\ctikzset{tripoles/plain amp/height/.initial=1.4}
+\ctikzset{tripoles/plain amp/input height/.initial=.5}
+\ctikzset{tripoles/plain amp/up pos/.initial=.45}
+
+\ctikzset{tripoles/thyristor/height/.initial=1.10}
+\ctikzset{tripoles/thyristor/height 2/.initial=.5}
+\ctikzset{tripoles/thyristor/width/.initial=1.0}
+\ctikzset{tripoles/thyristor/diode height/.initial=.5}
+\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+\ctikzset{tripoles/triac/height/.initial=1.1}
+\ctikzset{tripoles/triac/width/.initial=1}
+\ctikzset{tripoles/triac/diode width left/.initial=.3}
+\ctikzset{tripoles/triac/diode width right/.initial=.3}
+
+\ctikzset{tripoles/spdt/width/.initial=.85}
+\ctikzset{tripoles/spdt/height/.initial=.45}
+\ctikzset{tripoles/spdt/margin/.initial=.45}
+
+\ctikzset{tripoles/toggleswitch/height/.initial=.8}
+\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
+\ctikzset{tripoles/toggleswitch/width/.initial=.80}
+
+\ctikzset{tripoles/mixer/width/.initial=0.7}
+\ctikzset{tripoles/adder/width/.initial=0.7}
+\ctikzset{tripoles/circulator/width/.initial=.7}
+\ctikzset{tripoles/oscillator/width/.initial=.7}
+
+
+\ctikzset{tripoles/wilkinson/height/.initial=1.3}
+\ctikzset{tripoles/wilkinson/width/.initial=1.3}
+
+\ctikzset{quadpoles/transformer/width/.initial=1.5}
+\ctikzset{quadpoles/transformer/width1/.initial=.4}
+\ctikzset{quadpoles/transformer/height/.initial=1.5}
+\ctikzset{quadpoles/transformer/height1/.initial=.8}
+\ctikzset{quadpoles/transformer core/width/.initial=1.5}
+\ctikzset{quadpoles/transformer core/height/.initial=1.5}
+\ctikzset{quadpoles/transformer core/core height/.initial=.5}
+\ctikzset{quadpoles/transformer core/core width/.initial=.05}
+\ctikzset{quadpoles/gyrator/width/.initial=1.5}
+\ctikzset{quadpoles/gyrator/height/.initial=1.5}
+\ctikzset{quadpoles/fourport/width/.initial=1.3}
+\ctikzset{quadpoles/fourport/height/.initial=1.3}
+\ctikzset{quadpoles/coupler/width/.initial=1.3}
+\ctikzset{quadpoles/coupler/height/.initial=1.3}
+\ctikzset{quadpoles/coupler2/width/.initial=1.3}
+\ctikzset{quadpoles/coupler2/height/.initial=1.3}
+
+% %Mechanical section
+\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
+\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
+\ctikzset{bipoles/spring/height/.initial=.5}
+\ctikzset{bipoles/spring/width/.initial=.5}
+\ctikzset{bipoles/mass/height/.initial=.55}
+\ctikzset{bipoles/mass/box height/.initial=.4}
+\ctikzset{bipoles/mass/width/.initial=.5}
+
+\ctikzset{bipoles/damper/height/.initial=.35}
+\ctikzset{bipoles/damper/length/.initial=.3}
+\ctikzset{bipoles/damper/width/.initial=.4}
+
+
+\ctikzset{bipole/.is family}
+\ctikzset{bipole/kind/.initial = }
+\ctikzset{bipole/name/.initial = }
+\newif\ifpgf@circuit@bipole@reversed
+\ctikzset{bipole/reversed/.is if=pgf@circuit@bipole@reversed}
+\newif\ifpgf@circuit@bipole@isvoltage
+\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
+\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
+\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
+\newif\ifpgf@circuit@bipole@strokedsymbol
+\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
+\newif\ifpgf@circuit@bipole@iscurrent
+\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
+
+\ctikzset{bipole/voltage/.is family}
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+\newif\ifpgf@circuit@bipole@voltage@below
+\ctikzset{bipole/voltage/position/.is choice}
+\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
+\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
+
+\ctikzset{bipole/voltage/label/unit/.initial=}
+\ctikzset{bipole/voltage/label/name/.initial=}
+
+\ctikzset{bipole/current/.is family}
+\newif\ifpgf@circuit@bipole@current@backward
+\ctikzset{bipole/current/direction/.is choice}
+\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
+\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
+\newif\ifpgf@circuit@bipole@current@before
+\ctikzset{bipole/current/x position/.is choice}
+\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
+\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
+\newif\ifpgf@circuit@bipole@current@below
+\ctikzset{bipole/current/y position/.is choice}
+\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
+\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
+
+\ctikzset{bipole/current/label/unit/.initial=}
+\ctikzset{bipole/current/label/name/.initial=}
+
+\ctikzset{bipole/label/.is family}
+\ctikzset{bipole/label/position/.initial=90}
+\ctikzset{bipole/label/unit/.initial=}
+\ctikzset{bipole/label/name/.initial=}
+\ctikzset{bipole/nodes/.is family}
+\ctikzset{bipole/nodes/left/.is choice}
+\ctikzset{bipole/nodes/left/none/.code={\ctikzsetvalof{bipole/nodes/left}{none}}}
+\ctikzset{bipole/nodes/left/empty/.code={\ctikzsetvalof{bipole/nodes/left}{empty}}}
+\ctikzset{bipole/nodes/left/full/.code={\ctikzsetvalof{bipole/nodes/left}{full}}}
+\ctikzset{bipole/nodes/left/diamond/.code={\ctikzsetvalof{bipole/nodes/left}{diamond}}}
+\ctikzset{bipole/nodes/right/.is choice}
+\ctikzset{bipole/nodes/right/none/.code={\ctikzsetvalof{bipole/nodes/right}{none}}}
+\ctikzset{bipole/nodes/right/empty/.code={\ctikzsetvalof{bipole/nodes/right}{empty}}}
+\ctikzset{bipole/nodes/right/full/.code={\ctikzsetvalof{bipole/nodes/right}{full}}}
+\ctikzset{bipole/nodes/right/diamond/.code={\ctikzsetvalof{bipole/nodes/right}{diamond}}}
+
+
+
+
+\newif\ifpgf@circuit@europeanresistor
+\ctikzset{resistor/.is choice}
+\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
+\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
+
+\ctikzset{inductor/.is choice}
+\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
+\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
+\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
+
+\newif\ifpgf@circuit@strokediode
+\newif\ifpgf@circuit@fulldiode
+\pgf@circuit@strokediodefalse
+\pgf@circuit@fulldiodefalse
+
+\ctikzset{diode/.is choice}
+\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
+\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
+\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
+
+\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full }}
+\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty }}
+\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke }}
+
+\ctikzset{thickness/.initial=2}
+\ctikzset{color/.initial=black}
+\pgfkeys{/tikz/color/.add code={}{\ctikzset{color=#1}}}
+
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circ@siunitx@res
+
+\ctikzset{voltage/.is family}
+\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
+\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
+\ctikzset{voltage/bump a/.initial=1.2}
+\ctikzset{voltage/bump b/.initial=1.5}
+\ctikzset{voltage/european label distance/.initial=1.4}
+\ctikzset{voltage/american label distance/.initial=1.1}
+% special cases
+\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
+\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
+\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
+\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
+\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
+%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
+%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
+
+\ctikzset{current/.is family}
+\ctikzset{current/distance/.initial = .5}
+
+\tikzset{american currents/.style = { \circuitikzbasekey/current = american } }
+\tikzset{european currents/.style = { \circuitikzbasekey/current = european } }
+\tikzset{american voltages/.style = { \circuitikzbasekey/voltage = american } }
+\tikzset{european voltages/.style = { \circuitikzbasekey/voltage = european } }
+\tikzset{american resistors/.style = { \circuitikzbasekey/resistor = american } }
+\tikzset{european resistors/.style = { \circuitikzbasekey/resistor = european } }
+
+\newif\ifpgf@circuit@europeangfsurgearrester
+\ctikzset{gas filled surge arrester/.is choice}
+\ctikzset{gas filled surge arrester/european/.code= {\pgf@circuit@europeangfsurgearrestertrue } }
+\ctikzset{gas filled surge arrester/american/.code= {\pgf@circuit@europeangfsurgearresterfalse } }
+
+\tikzset{american gas filled surge arrester/.style = { \circuitikzbasekey/gas filled surge arrester = american } }
+\tikzset{european gas filled surge arrester/.style = { \circuitikzbasekey/gas filled surge arrester = european } }
+\tikzset{american inductors/.style = { \circuitikzbasekey/inductor = american } }
+\tikzset{european inductors/.style = { \circuitikzbasekey/inductor = european } }
+\tikzset{cute inductors/.style = { \circuitikzbasekey/inductor = cute } }
+\tikzset{american ports/.style = { \circuitikzbasekey/logic ports = american } }
+\tikzset{european ports/.style = { \circuitikzbasekey/logic ports = european } }
+\tikzset{european/.style = { european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester } }
+\tikzset{american/.style = { american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester } }
+\tikzset{cute/.style = { european currents, european voltages, american resistors, cute inductors, american ports } }
+
+% I should try to make the tree clearer (this voltaege conflicts with the options above)
+
+\newif\ifpgf@circuit@europeanvoltage
+\ctikzset{voltage/.is choice}
+\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse } }
+\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue } }
+
+\newif\ifpgf@circuit@europeancurrent
+\ctikzset{current/.is choice}
+\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse }
+\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue }
+
+\ctikzset{label/align/.is choice}
+\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
+\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
+\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
+
+%%%%%%%%%% new
+\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
+%%%---------- close: tex/pgfcirc.defines
+%%%%%%%%%%% Springe nach tex/pgfcircutils
+%%%---------- open: tex/pgfcircutils.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%\def\pgf@circ@handleSI#1{%
+ % \pgf@circ@siunitx@resfalse
+%
+ % \edef\len{\stringlength[e]{#1}}
+ %\testmatchingchar[e]{#1}{\len}{>}%
+ %\ifmatchingchar%
+ % \ifnum\findchars{#1}{<}=0
+ % \def\pgf@circ@handleSI@val{\substring{#1}{1}{\findchars{#1}{<}-1}}
+ %\def\pgf@circ@handleSI@unit{\substring{#1}{\findchars{#1}{<}-1}+1}{\stringlength{#1}}
+ %\pgf@circ@siunitx@restrue
+% \else
+% \fi
+ %\else
+ %\fi
+%}
+
+\def\pgf@circ@handleSI#1{
+ \noexpandarg
+ \def\pgf@temp{}
+ \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
+ \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
+
+ \ifnum\pgf@circ@handleSI@unit@len=0
+ \pgf@circ@siunitx@resfalse
+ \else
+ \IfEndWith{#1}{>}{
+ \pgf@circ@siunitx@restrue
+ \noexpandarg
+ \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
+ %\typeout{si |#1|}
+ }{
+ \pgf@circ@siunitx@resfalse
+ %\typeout{no si |#1|}
+ }
+ \fi
+}
+
+\def\pgf@circ@finallabel#1{%
+ \edef\pgf@temp{}%
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1label/unit}}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \ctikzvalof{bipole/#1label/name}%
+ \else%
+ $\SI{\ctikzvalof{bipole/#1label/name}}{\ctikzvalof{bipole/#1label/unit}}$%
+ \fi%
+}
+
+\def\pgf@circ@ifkeyempty#1{
+ \pgfextra{
+ \ctikzset{#1/.get=\pgf@circ@temp}
+ \edef\pgf@temp{}
+ }
+ \ifx\pgf@circ@temp\pgf@temp
+}
+
+%%%---------- close: tex/pgfcircutils
+%%%%%%%%%%% Springe nach tex/pgfcircmath
+%%%---------- open: tex/pgfcircmath.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Math routines
+
+\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
+
+% angle between 0 and 360
+\def\pgf@circ@slope#1#2{%
+ \pgf@process{#1}%
+ \pgf@xa=\pgf@x%
+ \pgf@ya=\pgf@y%
+ \pgf@process{#2}%
+ \advance\pgf@x by-\pgf@xa%
+ \advance\pgf@y by-\pgf@ya%
+ \ifdim\pgf@x<0.1pt
+ \ifdim\pgf@x>-0.1pt % vertical
+ \ifdim\pgf@y<0pt
+ \def\pgfmathresult{-90.0}
+ \else
+ \def\pgfmathresult{+90.0}
+ \fi
+ \else % oblique with dx < 0
+ \pgfmathdivide{\pgf@y}{\pgf@x}
+ \pgfmathatan{\pgfmathresult}
+ \ifdim\pgf@x<0pt
+ \pgfmathsubtract{\pgfmathresult}{+180}
+ \fi
+ \fi
+ \else % oblique with dx > 0
+ \pgfmathdivide{\pgf@y}{\pgf@x}
+ \pgfmathatan{\pgfmathresult}
+ \ifdim\pgf@x<0pt
+ \pgfmathsubtract{\pgfmathresult}{+180}
+ \fi
+ \fi
+ \pgf@x=\pgfmathresult pt
+ \ifdim\pgf@x<0pt
+ \pgfmathadd{\pgfmathresult}{+360}
+ \fi
+ }
+
+
+%%%---------- close: tex/pgfcircmath
+
+%%%%%%%%%%% Springe nach tex/pgfcircshapes
+%%%---------- open: tex/pgfcircshapes.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Other shapes
+
+
+%% Nothing
+
+\pgfdeclareshape{emptyshape}{
+ \savedanchor{\northeast}{%
+ \pgf@x=.5\wd\pgfnodeparttextbox%
+ \pgf@y=.5\ht\pgfnodeparttextbox%
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{east}{%
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{south}{%
+ \northeast
+ \pgf@y=-\pgf@y
+ \pgf@x=0cm
+ }
+ \anchor{west}{
+ \northeast
+ \pgf@y=0cm
+ \pgf@x=-\pgf@x
+ }
+ \anchor{text}{%
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+}
+
+%% Full terminal
+
+\pgfdeclareshape{circ}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}}
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Empty terminal
+
+\pgfdeclareshape{ocirc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}}
+ }
+
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Diamond terminal
+
+\pgfdeclareshape{diamond}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ \pgftransformrotate{45}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@temp}{\pgf@circ@res@up+\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up-\pgf@circ@res@temp}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% Current arrow
+
+\pgfdeclareshape{currarrow}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \divide \pgf@circ@res@step by 16
+
+ \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+
+ \endpgfscope
+ }
+
+}
+
+%% Current arrow
+
+\pgfdeclareshape{inputarrow}{
+ \savedanchor{\tip}{
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \tip
+ }
+ \anchor{tip}{
+ \tip
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \divide \pgf@circ@res@step by 16
+
+ \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{fill}
+
+ \endpgfscope
+ }
+
+}
+
+
+%% box
+
+\pgfdeclareshape{box}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@circ@res@step = 0.5\pgf@circ@res@step
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+
+}
+
+%%%---------- close: tex/pgfcircshapes
+%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
+%%%---------- open: tex/pgfcircmonopoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Monopoles
+
+%% Ground symbol
+
+\pgfdeclareshape{ground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+
+
+\pgfdeclareshape{rground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{tground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ %\pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{sground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+% noiseless ground
+\pgfdeclareshape{nground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{1.3\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpatharc{0}{180}{1.3\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \endpgfscope
+ }
+}
+
+% protective ground
+\pgfdeclareshape{pground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathcircle{\pgfpoint{0pt}{-\pgf@circ@res@step}} {1.2\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \endpgfscope
+ }
+}
+
+% chassis ground
+\pgfdeclareshape{cground}{
+\anchor{center}{
+ \pgfpointorigin
+}
+\behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/chassis/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-1.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% Contributed by Leonardo Azzinnari
+\pgfdeclareshape{tlinestub}{
+ \anchor{center}{\pgfpointorigin}
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+
+
+
+\pgfdeclareshape{antenna}{
+\anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
+ \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=6\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
+
+ % \pgfpathmoveto{\pgfpointorigin}
+ % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ % \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgftransformxshift{ -4\pgf@circ@res@step }
+
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+ }
+
+
+\pgfdeclareshape{txantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
+ \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=6\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
+% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+ }
+
+
+\pgfdeclareshape{rxantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
+ \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=6\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
+% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+% Vcc
+\pgfdeclareshape{vcc}{
+\anchor{center}{\pgfpointorigin}
+\anchor{text}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=2\pgf@circ@res@step
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+\behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+}
+
+}
+
+% Vee
+\pgfdeclareshape{vee}{
+\anchor{center}{\pgfpointorigin}
+\anchor{text}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=-2\pgf@circ@res@step
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+
+\behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+}
+
+}
+
+
+% match
+\pgfdeclareshape{match}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
+ \pgf@x=1.5\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \pgf@y=-1.5\ht\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
+ \pgfusepath{fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+
+%%%---------- close: tex/pgfcircmonopoles
+%%%%%%%%%%% Springe nach tex/pgfcircbipoles
+%%%---------- open: tex/pgfcircbipoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%% Generic macro for defining a bipole shape
+% #1 - additional anchors
+% #2 - lower y-size of the bipole (from the center).
+% #3 - #shape is the name of the shape
+% #4 - upper y-size of the bipole (from the center)
+% #5 - width of the bipole
+% #6 - macros drawing the bipole
+
+
+\long\def\pgfcircdeclarebipole#1#2#3#4#5#6{
+ \pgfdeclareshape{#3shape}{
+
+ \savedanchor{\northeast}{
+ \pgf@y=#4\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\northeastborder}{
+ \pgf@y=#4\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwestborder}{
+ \pgf@y=-#2\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=-#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwest}{
+ \pgf@y=-#2\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\centerpoint}{
+ \pgf@circ@res@down=-#2\pgf@circ@Rlen
+ \pgf@circ@res@up=#4\pgf@circ@Rlen
+ \pgfpointorigin
+ \pgf@y=\pgf@circ@res@up
+ \advance\pgf@y by\pgf@circ@res@down
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{n}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@x=0cm
+ }
+ \anchor{ne}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ }
+ \anchor{nw}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@x=-\pgf@x
+ }
+ \anchor{e}{%
+ \ifpgf@circuit@bipole@reversed\else\southwest\northeast\fi
+ \pgf@y=0cm
+ }
+ \anchor{s}{%
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@x=0cm
+ }
+ \anchor{se}{%
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@x=-\pgf@x
+ }
+ \anchor{sw}{%
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ }
+ \anchor{w}{
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \anchor{north}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@x=0cm
+ }
+ \anchor{east}{%
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+ \anchor{south}{%
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@x=0cm
+ }
+ \anchor{west}{
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \anchor{right}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+ \anchor{above}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@x=0cm
+ }
+ \anchor{left}{%
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \anchor{below}{%
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@x=0cm
+ }
+ \anchor{a}{%
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+ \anchor{b} {
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \savedanchor{\textanchor}{%
+ \pgf@y=\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \anchor{text}{%
+ \textanchor
+ }
+ \anchorborder{%
+ \def\pgf@temp{false}
+ \ifpgf@circuit@bipole@reversed\pgf@temp
+ \pgf@circ@res@left=-\pgf@x
+ \pgf@circ@res@right=-\pgf@y
+ \else
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@right=\pgf@y
+ \fi
+ \ifdim\pgf@circ@res@right>0cm
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
+ \else
+ \southwestborder
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
+ \fi
+ }
+
+ #1
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@zero = 0cm
+ \pgf@circ@res@left = -\pgf@x
+ \pgf@circ@res@right = \pgf@x
+ \southwest
+ \pgf@circ@res@down = \pgf@y
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ #6
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ }
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Standard bipole shapes declarations
+
+%% Resistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/resistor/height}}{resistor}{\ctikzvalof{bipoles/resistor/height}}{\ctikzvalof{bipoles/resistor/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \divide \pgf@circ@res@step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+}
+
+
+
+%% Variable resistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vresistor/height}}{vresistor}{\ctikzvalof{bipoles/vresistor/height}}{\ctikzvalof{bipoles/vresistor/width}}{ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \divide \pgf@circ@res@step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+%% Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/capacitor/height}}{capacitor}{\ctikzvalof{bipoles/capacitor/height}}{\ctikzvalof{bipoles/capacitor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/capacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+%% Polar Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pcapacitor/height}}{polarcapacitor}{\ctikzvalof{bipoles/pcapacitor/height}}{\ctikzvalof{bipoles/pcapacitor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/pcapacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgftransformrotate{-90}
+ \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+}
+
+%% Electrolytic Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ecapacitor/height}}{ecapacitor}{\ctikzvalof{bipoles/ecapacitor/height}}{\ctikzvalof{bipoles/ecapacitor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/ecapacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+ \pgfsetrectcap
+ % % % Draw plus pole
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ % % Draw minus pole
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{black}
+ \pgfusepath{draw,fill}
+ \pgfsetfillcolor{black}
+ % % plus pole annotation
+ \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
+ {\pgfkeysvalueof{/tikz/circuitikz/bipoles/ecapacitor/font} $+$}
+}
+
+%% Battery
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery/height}}{battery}{\ctikzvalof{bipoles/battery/height}}{\ctikzvalof{bipoles/battery/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 6
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+
+%% Battery 1
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery1/height}}{battery1}{\ctikzvalof{bipoles/battery1/height}}{\ctikzvalof{bipoles/battery1/width}}{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+
+
+
+ \pgfusepath{draw}
+}
+
+
+
+%% cute inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cuteinductor/lower coil height}}{cuteinductor}{\ctikzvalof{bipoles/cuteinductor/height}}{\ctikzvalof{bipoles/cuteinductor/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% variable cute inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}{vcuteinductor}{\ctikzvalof{bipoles/vcuteinductor/height}}{\ctikzvalof{bipoles/vcuteinductor/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% american inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/americaninductor/height 2}}{americaninductor}{\ctikzvalof{bipoles/americaninductor/height}}{\ctikzvalof{bipoles/americaninductor/width}}{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@Rlen
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% variable american inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vamericaninductor/height 2}}{vamericaninductor}{\ctikzvalof{bipoles/vamericaninductor/height}}{\ctikzvalof{bipoles/vamericaninductor/width}}{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@Rlen
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Independent voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsource/height}}{vsource}{\ctikzvalof{bipoles/vsource/height}}{\ctikzvalof{bipoles/vsource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+%% Independent voltage source - American style
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourceam/height}}{vsourceAM}{\ctikzvalof{bipoles/vsourceam/height}}{\ctikzvalof{bipoles/vsourceam/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+
+ \ifpgf@circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$-$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$+$}
+ \fi
+ \fi
+ \pgfusepath{draw}
+}
+
+
+
+%% Independent sinusoidal voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesin/height}}{vsourcesin}{\ctikzvalof{bipoles/vsourcesin/height}}{\ctikzvalof{bipoles/vsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Triangle Voltage source - contributed by Ralf Farkas
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+% contributed by Alistair Kwan
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesquare/height}}{vsourcesquare}{\ctikzvalof{bipoles/vsourcesquare/height}}{\ctikzvalof{bipoles/vsourcesquare/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Triangle Voltage source - contributed by Ralf Farkas
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Empty Source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% PV Source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pvsource/height}}{pvsource}{\ctikzvalof{bipoles/pvsource/height}}{\ctikzvalof{bipoles/pvsource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ %Adapted from battery1
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %Arrow Part
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty Source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% DC Current Source with open shape
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcisource/height}}{dcisource}{\ctikzvalof{bipoles/dcisource/height}}{\ctikzvalof{bipoles/dcisource/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}}\pgfpatharc{0}{90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}}\pgfpatharc{0}{-90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}\pgfpatharc{180}{270}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}\pgfpatharc{180}{90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \ifpgf@circ@oldvoltagedirection
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \else
+ \ifpgf@circuit@bipole@current@backward
+ \pgftransformshift{\pgfpoint{-.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgftransformrotate{180}
+ \else
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \fi\fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% DC-Voltage source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcvsource/height}}{dcvsource}{\ctikzvalof{bipoles/dcvsource/height}}{\ctikzvalof{bipoles/dcvsource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
+ \pgfusepath{draw}
+}
+
+
+%% Independent current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isource}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Independent double oo source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/oosource/height}}{oosource}{\ctikzvalof{bipoles/oosource/height}}{\ctikzvalof{bipoles/oosource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
+ \pgfusepath{draw}
+}
+
+
+%% Independent current source - American
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isourceam/height}}{isourceAM}{\ctikzvalof{bipoles/isourceam/height}}{\ctikzvalof{bipoles/isourceam/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \ifpgf@circ@oldvoltagedirection
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \else
+ \ifpgf@circuit@bipole@current@backward
+ \pgftransformshift{\pgfpoint{-.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgftransformrotate{180}
+ \else
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \fi\fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+
+
+
+%% Independent sinusoidal current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isourcesin}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+
+%% Controlled voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsource/height}}{cvsource}{\ctikzvalof{bipoles/cvsource/height}}{\ctikzvalof{bipoles/cvsource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Controlled voltage source - American
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourceam/height}}{cvsourceAM}{\ctikzvalof{bipoles/cvsourceam/height}}{\ctikzvalof{bipoles/cvsourceam/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$-$}
+ \pgfusepath{draw}
+}
+
+
+%% Controlled sinusoidal voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cvsourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+%% Controlled sinusoidal current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cisourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+%% Controlled current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisource/height}}{cisource}{\ctikzvalof{bipoles/cisource/height}}{\ctikzvalof{bipoles/cisource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Controlled current source - American
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisourceam/height}}{cisourceAM}{\ctikzvalof{bipoles/cisourceam/height}}{\ctikzvalof{bipoles/cisourceam/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{draw}}
+ \endpgfscope
+}
+
+%% Black generic diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulldiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black Zener diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black alternative zigzag Zener diode
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black Schottky diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullsdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Black tunnel diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulltdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black light emitting diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulllediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+}
+
+%% Black photodiode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullpdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black varcap
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varcap/height}}{fullvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+}
+
+%% Empty generic diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptydiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty Zener diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty alternative zigzag Zener diode
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%% Empty Schottky diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptysdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty tunnel diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptytdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty light emitting diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptylediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty photodiode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptypdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty varcap
+
+\pgfcircdeclarebipole{
+ \anchor{strokepathstart}{
+ \northeast
+ \pgf@y=0cm
+ \pgf@x=.8\pgf@x
+ }
+ \anchor{strokepathend}{
+ \northeast
+ \pgf@y=0cm
+ }
+ }{\ctikzvalof{bipoles/varcap/height}}{emptyvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+}
+
+%% SPST
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{spst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@left}{.9\pgf@circ@res@up}}
+ \pgfpatharc{65}{25}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
+ %\pgfsetarrowsend{latex'}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.1\pgf@circ@res@right}{-.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.14\pgf@circ@res@right}{-.35\pgf@circ@res@up}}
+ \pgfsetarrowsend{latex'}
+ \pgfusepath{draw}
+
+}
+
+%% Closing SPST
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{cspst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@left}{.9\pgf@circ@res@up}}
+ \pgfpatharc{65}{25}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
+ %\pgfsetarrowsend{latex'}
+ \pgfusepath{draw}
+
+}
+
+%% Opening SPST
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{ospst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@right}{.1\pgf@circ@res@down}}
+ \pgfpatharc{15}{50}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
+ %\pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.85\pgf@circ@res@left}{1.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.87\pgf@circ@res@left}{1.26\pgf@circ@res@up}}
+ \pgfsetarrowsend{latex'}
+ \pgfusepath{draw}
+
+
+}
+
+
+%% Push Button
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pushbutton/height 2}}{pushbutton}{\ctikzvalof{bipoles/pushbutton/height}}{\ctikzvalof{bipoles/pushbutton/width}}{
+
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+
+%METERINGSHAPE
+\long\def\drawmeteringcircle{
+ \def\pgf@circ@temp{right}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \def\pgf@circ@temp{below}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \pgf@circ@res@step=1.2\pgf@circ@res@up
+ \fi
+ \fi
+ %draw connections to circle
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ %draw circle
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgfusepath{draw}
+ \endpgfscope
+ %draw arrow
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%AMPEREMETER
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ammeter/height}}{ammeter}{\ctikzvalof{bipoles/ammeter/height}}{\ctikzvalof{bipoles/ammeter/width}}{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\textbf{A}}{}{}
+}
+%OHMMETER
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ohmmeter/height}}{ohmmeter}{\ctikzvalof{bipoles/ohmmeter/height}}{\ctikzvalof{bipoles/ohmmeter/width}}{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
+}
+%VOLTMETER
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/voltmeter/height}}{voltmeter}{\ctikzvalof{bipoles/voltmeter/height}}{\ctikzvalof{bipoles/voltmeter/width}}{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\textbf{V}}{}{}
+
+}
+
+%% Short circuit
+
+\pgfcircdeclarebipole{}{0}{short}{0}{0}{ }
+
+%% Open circuit
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/open/height}}{open}{\ctikzvalof{bipoles/open/height}}{\ctikzvalof{bipoles/open/width}}{
+
+}
+
+%% Generic bipole - used as resistor by some (bleah)
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/generic/height}}{generic}{\ctikzvalof{bipoles/generic/height}}{\ctikzvalof{bipoles/generic/width}}{
+
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+}
+
+
+%% fuse
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fuse/height}}{fuse}{\ctikzvalof{bipoles/fuse/height}}{\ctikzvalof{bipoles/fuse/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+}
+
+
+
+%% Generic bipole, filled - used as inductor by some (bleah)
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fullgeneric/height}}{fullgeneric}{\ctikzvalof{bipoles/fullgeneric/height}}{\ctikzvalof{bipoles/fullgeneric/width}}{
+
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw,fill}
+}
+
+
+%% Generic asymmetric bipole
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ageneric/height}}{ageneric}{\ctikzvalof{bipoles/ageneric/height}}{\ctikzvalof{bipoles/ageneric/width}}{
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+%% asymmetric fuse
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/afuse/height}}{afuse}{\ctikzvalof{bipoles/afuse/height}}{\ctikzvalof{bipoles/afuse/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+
+
+%% Memristor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/memristor/height}}{memristor}{\ctikzvalof{bipoles/memristor/height}}{\ctikzvalof{bipoles/memristor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+
+
+%% Generic empty tunable
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tgeneric/height}}{tgeneric}{\ctikzvalof{bipoles/tgeneric/height}}{\ctikzvalof{bipoles/tgeneric/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Photoresistor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/photoresistor/height 2}}{photoresistor}{\ctikzvalof{bipoles/photoresistor/height}}{\ctikzvalof{bipoles/photoresistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+%% Thermistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistor/height}}{thermistor}{\ctikzvalof{bipoles/thermistor/height}}{\ctikzvalof{bipoles/thermistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ %\pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ %\endpgfscope
+}
+
+
+%% Thermistor PTC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorptc/height 2}}{thermistorptc}{\ctikzvalof{bipoles/thermistorptc/height}}{\ctikzvalof{bipoles/thermistorptc/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Thermistor NTC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorntc/height 2}}{thermistorntc}{\ctikzvalof{bipoles/thermistorntc/height}}{\ctikzvalof{bipoles/thermistorntc/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% thermocouple
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermocouple/height 2}}{thermocouple}{\ctikzvalof{bipoles/thermocouple/height}}{\ctikzvalof{bipoles/thermocouple/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+}
+
+%% Varistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varistor/height}}{varistor}{\ctikzvalof{bipoles/varistor/height}}{\ctikzvalof{bipoles/varistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\tiny\textsf{U}}}
+}
+
+
+
+%% Generic full tunable
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tfullgeneric/height}}{tfullgeneric}{\ctikzvalof{bipoles/tfullgeneric/height}}{\ctikzvalof{bipoles/tfullgeneric/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw,fill}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+
+
+
+%% Variable Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcapacitor/height}}{vcapacitor}{\ctikzvalof{bipoles/vcapacitor/height}}{\ctikzvalof{bipoles/vcapacitor/width}}{
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/width}\pgf@circ@Rlen
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfusepath{draw}
+}
+
+
+%% Piezoelectric Element
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piezoelectric/height}}{piezoelectric}{\ctikzvalof{bipoles/piezoelectric/height}}{\ctikzvalof{bipoles/piezoelectric/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ %% Outer markings
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %% Inner Box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left+4}{\pgf@circ@res@up-1}}{\pgfpoint{\pgf@circ@res@right-4}{\pgf@circ@res@down+1}}
+ \pgfusepath{draw}
+
+}
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Handling of terminals
+
+
+%% Easily usable styles
+
+\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=diamond}}
+
+\tikzset{reversed/.style = {\circuitikzbasekey/bipole/reversed=true}}
+
+
+%% The output routine
+
+\def\drawpoles{
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{diamond} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztostart) node[diamond] {} }
+ \else
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{empty} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztostart) node[ocirc] {} }
+ \else
+ \pgfextra{ \def\pgf@temp{full} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztostart) node[circ] {} }
+ \fi
+ \fi
+ \fi
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} \def\pgf@temp{diamond} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztotarget) node[diamond] {} }
+ \else
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} \def\pgf@temp{empty} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztotarget) node[ocirc] {} }
+ \else
+ \pgfextra{ \def\pgf@temp{full} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztotarget) node[circ] {} }
+ \fi
+ \fi
+ \fi
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+%% Lamp
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lamp/height}}{lamp}{\ctikzvalof{bipoles/lamp/height}}{\ctikzvalof{bipoles/lamp/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tline/height}
+ }{tline}{\ctikzvalof{bipoles/tline/height}
+ }{\ctikzvalof{bipoles/tline/width}
+ }
+ {
+ \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0}}
+ {\pgfpoint{\pgf@circ@res@step}{0}}
+ {\pgfpoint{0}{-\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% SQUID added by Cor Molenaar 5 March 2010
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/squid/height}}{squid}{\ctikzvalof{bipoles/squid/height}}{\ctikzvalof{bipoles/squid/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+
+
+% Generic barrier added by Cor Molenaar 5 March 2010
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/barrier/height}}{barrier}{\ctikzvalof{bipoles/barrier/height}}{\ctikzvalof{bipoles/barrier/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
+
+ \pgfusepath{draw}
+}
+
+
+% Contributed by Danilo Piazzalunga
+
+\pgfdeclareshape{buffer}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ }
+ }
+
+
+
+
+
+\pgfdeclareshape{plain amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+
+
+ }
+ }
+
+%% Generic two port box
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/twoport/height}}{twoport}{\ctikzvalof{bipoles/twoport/height}}{\ctikzvalof{bipoles/twoport/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+}
+
+%% voltage controled oscillator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vco/width}}{vco}{\ctikzvalof{bipoles/twoport/width}}{\ctikzvalof{bipoles/vco/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw circle
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+}
+
+%% bandpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bandpass/width}}{bandpass}{\ctikzvalof{bipoles/bandpass/width}}{\ctikzvalof{bipoles/bandpass/width}}{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% highpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/highpass/width}}{highpass}{\ctikzvalof{bipoles/highpass/width}}{\ctikzvalof{bipoles/highpass/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% lowpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lowpass/width}}{lowpass}{\ctikzvalof{bipoles/lowpass/width}}{\ctikzvalof{bipoles/lowpass/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% ADC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/adc/width}}{adc}{\ctikzvalof{bipoles/adc/width}}{\ctikzvalof{bipoles/adc/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{A}
+ \def\textii{D}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{A}
+ \def\textii{D}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DAC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dac/width}}{dac}{\ctikzvalof{bipoles/dac/width}}{\ctikzvalof{bipoles/dac/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{D}
+ \def\textii{A}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{D}
+ \def\textii{A}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DSP
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dsp/width}}{dsp}{\ctikzvalof{bipoles/dsp/width}}{\ctikzvalof{bipoles/dsp/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{DSP}}
+}
+
+%% FFT
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fft/width}}{fft}{\ctikzvalof{bipoles/fft/width}}{\ctikzvalof{bipoles/fft/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{FFT}}
+}
+
+%% Amplifier
+\pgfcircdeclarebipole{}{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{amp}{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgfusepath{draw}
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+}
+
+
+%% variable amplifier
+\pgfcircdeclarebipole{}{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{vamp}{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgfusepath{draw}
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+ % draw arrow
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% pi attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piattenuator/width}}{piattenuator}{\ctikzvalof{bipoles/piattenuator/width}}{\ctikzvalof{bipoles/piattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable pi attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vpiattenuator/width}}{vpiattenuator}{\ctikzvalof{bipoles/vpiattenuator/width}}{\ctikzvalof{bipoles/vpiattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% T attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tattenuator/width}}{tattenuator}{\ctikzvalof{bipoles/tattenuator/width}}{\ctikzvalof{bipoles/tattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable T attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vtattenuator/width}}{vtattenuator}{\ctikzvalof{bipoles/vtattenuator/width}}{\ctikzvalof{bipoles/vtattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% phase shifter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{phaseshifter}{\ctikzvalof{bipoles/phaseshifter/width}}{\ctikzvalof{bipoles/phaseshifter/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+}
+
+%% variable phase shifter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{vphaseshifter}{\ctikzvalof{bipoles/vphaseshifter/width}}{\ctikzvalof{bipoles/vphaseshifter/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% detector
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/detector/width}}{detector}{\ctikzvalof{bipoles/detector/width}}{\ctikzvalof{bipoles/detector/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{0.8\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@fulldiode
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
+ \fi
+
+}
+
+
+
+
+%% european gas filled surge arrester
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{european gas filled surge arrester}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{\ctikzvalof{bipoles/european gas filled surge arrester/width}}{
+
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+}
+
+
+
+
+%% american gas filled surge arrester
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{american gas filled surge arrester}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
+ %\def\pgf@circ@temp{right}
+ %\ifx\tikz@res@label@pos\pgf@circ@temp
+ % \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ %\else
+% \def\pgf@circ@temp{below}
+% \ifx\tikz@res@label@pos\pgf@circ@temp
+% \pgf@circ@res@step=-1.2\pgf@circ@res@up
+% \else
+% \pgf@circ@res@step=1.2\pgf@circ@res@up
+% \fi
+% \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfnode{circle}{center}{}{}{}
+
+ \pgfscope
+ \pgfsetarrowsend{latex}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope{}
+
+ %\pgftransformshift{\pgfpoint{.25\pgf@circ@res@left}{.45\pgf@circ@res@down}}
+ %\pgfnode{circ}{center}{}{}{}
+ %\pgftransformshift{}
+ \pgfcircle{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
+ \pgfusepath{fill}
+}
+
+% % MECHANICAL SYMBOLS
+
+%% mechanical capacitance - stiffness/spring
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spring/height}}{spring}{\ctikzvalof{bipoles/spring/height}}{\ctikzvalof{bipoles/spring/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical inductance - mass
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/mass/box height}}{mass}{\ctikzvalof{bipoles/mass/height}}{\ctikzvalof{bipoles/mass/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
+
+\pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical resistor - damper
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/damper/height}}{damper}{\ctikzvalof{bipoles/damper/height}}{\ctikzvalof{bipoles/damper/width}}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {\pgf@circ@res@zero}}
+ \pgfusepath{stroke}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{stroke}
+
+}
+
+
+%%%---------- close: tex/pgfcircbipoles
+%%%%%%%%%%% Springe nach tex/pgfcirctripoles
+%%%---------- open: tex/pgfcirctripoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Tripoles
+
+
+
+\pgfdeclareshape{spdt}
+ {
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out 1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{out 2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/margin}\pgf@circ@res@left
+
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
+ {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
+ }
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Logic ports
+%%
+
+
+
+
+
+
+\long\def\pgfcircdeclarelogicport#1#2{
+ \pgfdeclareshape{american #1 port}
+ {
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in 1}{
+ \inOne
+ }
+ \anchor{in}{
+ \inOne
+ }
+ \anchor{in 2}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ #2
+
+ }
+ }
+}
+
+
+\pgfcircdeclarelogicport{and}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@down}}
+ \pgfpathcurveto
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {.5\pgf@circ@res@down}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {0pt}}
+ \pgfpathcurveto
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {.5\pgf@circ@res@up}}
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+
+\pgfcircdeclarelogicport{nand}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathcurveto
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarelogicport{nor}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+}
+
+
+
+
+\pgfcircdeclarelogicport{or}{
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarelogicport{xor}{
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/distance}\pgf@circ@res@right+}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+
+
+\pgfcircdeclarelogicport{xnor}{
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/circle width}\pgf@circ@res@right
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/distance}\pgf@circ@res@right+}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
+
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+}
+
+
+\pgfdeclareshape{american not port}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ }
+ }
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% #1 - name
+% #2 - text inside
+% #3 - number of inputs
+% #4 - is it a not
+
+\long\def\pgfcircdeclareeurologicport#1#2#3#4{
+ \pgfdeclareshape{european #1 port}
+ {
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \inOne
+ }
+ \anchor{in 1}{
+ \inOne
+ }
+ \anchor{in 2}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \def\pgf@temp{1}
+ \def\pgf@circ@temp{#3}
+ \ifx\pgftemp\pgf@circ@temp % one input
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}
+ \else % two inputs
+ \pgfpathmoveto{
+ \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathmoveto{
+ \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
+ \fi%
+ %
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
+ %
+ \edef\pgf@temp{not}
+ \edef\pgf@circ@temp{#4}
+ \ifx\pgf@temp\pgf@circ@temp % is a not
+ \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not height}\pgf@circ@res@up}}
+ \fi
+ %
+ \pgfusepath{draw}
+ %
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgftext{#2}
+ %
+ %
+ %
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+%
+%
+ }
+ }
+}
+
+
+
+\pgfcircdeclareeurologicport{and}{$\&$}{2}{}
+\pgfcircdeclareeurologicport{or}{$\ge 1$}{2}{}
+\pgfcircdeclareeurologicport{xor}{$=1$}{2}{}
+\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
+\pgfcircdeclareeurologicport{nand}{$\&$}{2}{not}
+\pgfcircdeclareeurologicport{nor}{$\ge 1$}{2}{not}
+\pgfcircdeclareeurologicport{xnor}{$=1$}{2}{not}
+
+\long\def\pgfcircdeclaretransistor#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northeast{% upper right
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%center left
+ \pgf@y=0pt
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/width}\pgf@x
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@y=.7\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=0.1\pgf@x
+ }
+ \anchor{pathstart}{ % south
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{pathend}{
+ \northeast
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \northeast
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ }
+ \anchor{north east}{
+ \northeast
+ }
+ \anchor{north west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{south east}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{base}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{G}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{gate}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{nobase}{
+ \left
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@x
+ }
+ \anchor{nogate}{
+ \left
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@x
+ }
+ \anchor{E}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{emitter}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{C}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{collector}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{D}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{drain}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ #2
+ \backgroundpath{
+ \pgftransformationadjustments
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ %
+ \ifnum \pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction} > 0
+ \pgf@circuit@trans@ntypetrue
+ \else
+ \pgf@circuit@trans@ntypefalse
+ \fi
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \left
+ \pgf@circ@res@left = \pgf@x
+ %
+ #3
+ % BODY DIODE
+ \ifpgf@circuit@fet@bodydiode
+ \drawbodydiode{#1}
+ \fi
+ %
+ }
+ }
+}
+
+\long\def\drawbodydiode#1{
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgftransformrotate{90}
+ \pgftransformscale{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode scale}}
+ \ifpgf@circuit@fulldiode
+ \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \else
+ \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \fi
+ \endpgfscope
+ %Draw upper connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope{}
+ %Draw lower connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+}
+
+\long\def\declarebpt#1{
+ \pgfcircdeclaretransistor{#1}{}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transiytor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@ntype
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{.5}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \ifpgf@circuit@bpt@drawphoto
+ \pgfscope
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \else
+ \ifpgf@circuit@bpt@drawbase
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+ \fi
+ }
+}
+
+\declarebpt{npn}
+\declarebpt{pnp}
+
+\long\def\declareigbt#1{
+\pgfcircdeclaretransistor{#1}{}
+{
+ %draw upper connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ %draw thicker gate lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %draw lower connection
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transiytor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@ntype
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{.5}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ %draw gate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
+ \fi
+ \pgfusepath{draw}
+}
+}
+
+\declareigbt{pigbt}
+\declareigbt{nigbt}
+\declareigbt{Lnigbt}
+\declareigbt{Lpigbt}
+
+
+\pgfcircdeclaretransistor{nmos}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+}
+
+
+\pgfcircdeclaretransistor{pmos}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.4}{%
+ \pgfpoint%
+ {\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+
+
+ \pgfusepath{draw}
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+ \pgfpathcircle{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left - \pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ \ifpgf@circuit@pmos@emptycircle
+ \pgfsetfillcolor{white}
+ \fi
+ \pgfusepath{draw,fill}
+}
+
+\long\def\drawfetcore#1{
+ \pgftransformationadjustments
+ %top connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
+ \ifpgf@circuit@trans@depletiontype
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \else
+
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.45}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.25}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down*0.25}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \fi
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %Bulk connection line
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ %bottom connection
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ %draw thick gate line
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \ifpgf@circuit@trans@ntype
+ \else
+ \pgftransformrotate{180}
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ % GATE CONNECTION
+ \ifpgf@circuit@bpt@drawgate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+ \fi
+
+}
+
+\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
+{\pgfcircdeclaretransistor{#1}{
+ \anchor{bulk}{\left\pgf@x=0pt}
+ \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
+ #2
+ }
+ {#3}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nfet}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pfet}
+}
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfete}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+
+
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
+\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfetebulk}
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+
+
+% N-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{nigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfete}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
+\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfetebulk}
+}
+
+
+% P-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{pigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+\pgfcircdeclaretransistor{njfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclaretransistor{pjfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.4}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{isfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ % DRAIN CONNECTION
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ % DRAIN
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % GATE, DEPLETION TYPE
+ \pgfscope %% added
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth} %% added
+ \pgfusepath{draw} %% added
+ \endpgfscope %% added
+
+ % BULK
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ % SOURCE
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ % GATE
+ %\pgfscope
+ %\pgfpathmoveto{\pgfpoint
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ %\pgfpathlineto{\pgfpoint
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ %\pgfsetlinewidth{2\pgflinewidth}
+ %\pgfusepath{draw}
+ %\endpgfscope
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+ % ARROW
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfusepath{draw}
+
+ % Wavy lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+
+%% Black thyristor
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{anode}{
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{cathode}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/thyristor/height 2}}{fullthyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty thyristor
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{anode}{
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{cathode}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/thyristor/height 2}}{emptythyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty triac
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{anode}{
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \anchor{cathode}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/triac/height}}{emptytriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty triac
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{anode}{
+ \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
+ \pgf@y=0cm
+ }
+ \anchor{cathode}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/triac/height}}{fulltriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+
+
+
+
+
+
+\pgfcircdeclarebipole{
+ \anchor{out 1}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=0cm
+ }
+ \anchor{out 2}{
+ \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
+ \pgf@y=.8\pgf@y
+ }
+}{\ctikzvalof{tripoles/toggleswitch/height 2}}{toggleswitch}{\ctikzvalof{tripoles/toggleswitch/height}}{\ctikzvalof{tripoles/toggleswitch/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetdash{}{0cm}
+}
+
+
+
+
+
+
+
+
+
+
+\pgfdeclareshape{op amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+
+
+ }
+ }
+
+%%Transkonduktanzverstรคrker
+\pgfdeclareshape{gm amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{0pt}} %
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ %Umrandung:
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}} %geรคndert startpunkt neu am ausgangsstrich
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{15pt}}%vom Ausgang nach oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-15pt}}%ecke links unten nach rechts unten
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} %rechts unten zum ausgang
+ \pgfusepath{draw}
+ \endpgfscope
+
+
+
+ }
+ }
+
+
+
+%% Potentiometer
+\pgfcircdeclarebipole{
+ \anchor{wiper}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+ \anchor{W}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+}{\ctikzvalof{bipoles/potentiometer/height 2}}{potentiometer}{\ctikzvalof{bipoles/potentiometer/height}}{\ctikzvalof{bipoles/potentiometer/width}}{
+\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+\pgftransformationadjustments
+\pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+\divide \pgf@circ@res@step by 12
+
+\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+
+\pgf@circ@res@other = \pgf@circ@res@left
+\advance\pgf@circ@res@other by \pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by \pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+\pgfsetbeveljoin
+\pgfusepath{draw}
+
+\pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+\endpgfscope
+}
+
+
+
+
+
+%% Generic tunable
+
+\pgfcircdeclarebipole{
+ \anchor{wiper}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+}{\ctikzvalof{bipoles/generic potentiometer/height 2}}{genericpotentiometer}{\ctikzvalof{bipoles/generic potentiometer/height}}{\ctikzvalof{bipoles/generic potentiometer/width}}{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+\pgfdeclareshape{mixer}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{adder}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{oscillator}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
+ \else
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{text}{
+ \pgf@x=-2\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@Rlen{}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
+
+ % draw outer box
+ \ifpgf@circuit@boxed{}
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{circulator}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed{}
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % inner arrow
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
+ \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+
+% Wilkinson divider
+\pgfdeclareshape{wilkinson}{
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{out2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ % draw inner resisitor - european or american style is recognised
+ {
+ \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgftransformrotate{90}
+
+ % calculate size of resistor
+ \ifpgf@circuit@europeanresistor
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{genericshape}{center}{}{pgf@generic}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{resistorshape}{center}{}{pgf@resistor}{\pgfusepath{fill}}
+ \fi
+ }
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+
+% electromechanical device (motor/generator)
+\pgfdeclareshape{elmech}
+{
+ \savedanchor\northwest{
+ %\ifpgf@circuit@boxed
+ % \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ % \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
+ % \pgf@y=.5\pgf@y
+ % \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ % \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
+ % \pgf@x=.5\pgf@x
+ %\else
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ %\fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@Rlen
+ \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ % draw outer box
+ % \ifpgf@circuit@boxed
+ % \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ % \fi
+ % draw outer circle
+ %\ifpgf@circuit@boxed
+ % \pgf@circ@res@step=.7\pgf@circ@res@step
+ % \pgfsetdash{}{0pt} % draw solid circle if boxed
+ %\else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ %\fi
+ \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{black}
+ \pgfusepath{draw,fill}
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%%%---------- close: tex/pgfcirctripoles
+%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
+%%%---------- open: tex/pgfcircquadpoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Quadripoles
+
+\long\def\pgfcircdeclarequadpole#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
+ }
+ \anchor{A2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{A1}{
+ \northwest
+ }
+ \anchor{B2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{base}{
+ \northwest
+ \pgf@x=0pt
+ }
+ #3
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ %\pgf@circ@Rlen=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+
+ #2
+
+ }
+ }
+}
+
+
+
+\def\pgf@circ@drawtransformerbasicanchor{
+ \pgfkeysvalueof{/tikz/circuitikz/quadpoles/trans/height}
+ \anchor{AA2}{
+ \northwest
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{AA1}{
+ \northwest
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+}
+
+\def\pgf@circ@drawtransformerbasicbody{
+ \def\stretto{.4}
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@down}%
+ }
+
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+
+ \endpgfscope
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@up}%
+ }
+
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@inductor1}{b}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf@inductor1}{a}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@inductor2}{a}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf@inductor2}{b}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+}
+
+
+
+ % contrib Kristofer M. Monisit
+
+ \pgfdeclareshape{fd op amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out +}{
+ \northwest
+ \pgf@y=.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{out -}{
+ \northwest
+ \pgf@y=-.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+
+ % Negative output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ % Positive output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+
+ % Draw them all!
+ \pgfusepath{draw}
+
+ % Triangle
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+
+
+
+
+\pgfcircdeclarequadpole{transformer}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+}{\pgf@circ@drawtransformerbasicanchor}
+
+\pgfcircdeclarequadpole{transformer core}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+}{\pgf@circ@drawtransformerbasicanchor}
+
+
+\pgfcircdeclarequadpole{gyrator}{
+
+ \def\stretto{.4}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{.7*\stretto\pgf@circ@res@down}}
+ \pgfpatharc{90}{270}{.7*\stretto\pgf@circ@res@down}
+
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{.7*\stretto\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{.7*\stretto\pgf@circ@res@down}
+ \pgfusepath{draw}
+
+}{}
+
+%% four-port
+% defines a general outer box for four-ports
+% TikZ usage:
+% \draw (0,0) node[coupler](coup){\SI{-3}{dB}}
+% (coup.port1) to[short,-o] ++(-1,0)
+%
+
+\long\def\pgfcircdeclarefourport#1#2{
+ \pgfdeclareshape{#1}{
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{port1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{port4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ #2
+
+ % draw inner text
+ \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+ }
+ }
+}
+
+% four-port
+\pgfcircdeclarefourport{fourport}{}
+
+
+% straight coupler
+\pgfcircdeclarefourport{coupler}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+}
+
+% "bended" coupler
+\pgfcircdeclarefourport{coupler2}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+
+
+}
+%%%---------- close: tex/pgfcircquadpoles
+
+%%%%%%%%%%% Springe nach tex/pgfcirclabel
+%%%---------- open: tex/pgfcirclabel.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Bipole label positioning
+
+%% Options
+\ctikzset{label/.style = { l=#1 } }
+\ctikzset{l/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
+ \ctikzsetvalof{bipole/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+
+\ctikzset{label above/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l^/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{label below/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+\ctikzset{l_/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+
+
+\def\pgf@circ@drawlabel{
+ \pgfextra{
+ \edef\pgf@temp{\ctikzvalof{label/align}}
+ \def\pgf@circ@temp{straight}
+ }
+ \ifx\pgf@temp\pgf@circ@temp %straight
+ \pgf@circ@drawreglabel
+ \else
+ \pgfextra{\def\pgf@circ@temp{rotate}}
+ \ifx\pgf@temp\pgf@circ@temp %rotate
+ \pgf@circ@drawrotlabel
+ \else % smart
+ \pgf@circ@drawsmartlabel
+ \fi
+ \fi
+}
+
+\def\pgf@circ@drawsmartlabel{
+ \pgfextra{
+ %\pgfmathadd{\pgf@circ@direction}{360}
+ \pgfmathmod{\pgf@circ@direction}{90}
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ \ifnum \pgfcircmathresult > 20
+ \ifnum \pgfcircmathresult < 70 % NON quasi retto
+ \pgf@circ@drawrotlabel
+ \else
+ \pgf@circ@drawreglabel
+ \fi
+ \else
+ \pgf@circ@drawreglabel
+ \fi
+}
+
+%% Output routing
+%% #1 - node name
+
+\def\pgf@circ@drawrotlabel{
+ \pgfextra{
+ % calcolo rotazione label
+ \def\pgf@circ@temp{\ctikzvalof{bipole/label/position}} %%% ร ncora label
+ \edef\pgfcirclabrot{\pgf@circ@direction} % primo e quarto quadrante
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 90 \ifnum \pgfcircmathresult < 270 % terzo e secondo
+ \pgfmathsubtract{\pgf@circ@direction}{180}
+ \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \pgfmathadd{\pgf@circ@temp}{180} %%%
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil} %%%
+ \fi\fi
+
+ \ifnum \ctikzvalof{mirror value} = -1
+ \pgfmathadd{\pgf@circ@temp}{180}
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ }
+ coordinate (labelcoor) at ($(\ctikzvalof{bipole/name})!2!(\ctikzvalof{bipole/name}.north)$)
+ (labelcoor) node [rotate=\pgfcirclabrot] {\pgf@circ@finallabel{}} % c'era un transform shape
+}
+
+\def\pgf@circ@drawreglabel{
+ \pgfextra{
+ \pgfmathsubtract{\pgf@circ@direction}{90}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/label/position}} %%% ร ncora label
+ \ifnum \pgf@circ@temp < 0
+ \pgfmathadd{\pgf@circ@labanc}{180}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+
+ \ifnum \ctikzvalof{mirror value} = -1
+ \pgfmathadd{\pgf@circ@labanc}{180}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ }
+ node [ anchor = \pgf@circ@labanc]
+ at (\ctikzvalof{bipole/name}.\pgf@circ@temp) {\pgf@circ@finallabel{}}
+}
+
+
+\ctikzset{text/.style = { t=#1 } }
+\ctikzset{t/.code = {
+ \ctikzsetvalof{bipoles/twoport/text}{#1}
+}}
+
+%%%---------- close: tex/pgfcirclabel
+%%%%%%%%%%% Springe nach tex/pgfcircvoltage
+%%%---------- open: tex/pgfcircvoltage.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Voltage management
+
+
+\ctikzset{v^>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v^</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v_>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+
+% Default position varies whether the component is a voltage source
+% or not
+\ctikzset{v/.code = {
+ \ifpgf@circuit@bipole@isvoltage
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \fi
+ \fi
+ \ifpgf@circ@oldvoltagedirection\else
+ \ifpgf@circuit@bipole@iscurrent
+ \ifpgf@circuit@bipole@current@backward
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \fi\fi\fi
+ \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
+ \ctikzsetvalof{bipole/voltage/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ }
+}
+
+\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
+\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
+\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
+\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
+
+
+%% Output routine for generic bipoles
+
+\def\pgf@circ@drawvoltagegeneric{
+ \pgfextra{
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@voltage@below\pgf@circuit@bipole@voltage@belowfalse\else\pgf@circuit@bipole@voltage@belowtrue\fi
+ \fi
+
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@voltage@angle{90}
+ \else
+ \def\pgf@circ@voltage@angle{-90}
+ \fi
+
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\distacefromnode{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}} }
+ { \edef\distacefromnode{\ctikzvalof{voltage/distance from node}} }
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\bumpb{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}} }
+ { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
+ }
+
+ coordinate (pgfcirc@mid) at ($(\tikztostart) ! \distacefromnode ! (\ctikzvalof{bipole/name}.left)$)
+ coordinate (pgfcirc@Vfrom) at ($(pgfcirc@mid) ! -\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen ! \pgf@circ@voltage@angle:(\ctikzvalof{bipole/name}.left)$)
+
+ coordinate (pgfcirc@mid) at ($(\tikztotarget) ! \distacefromnode ! (\ctikzvalof{bipole/name}.right)$)
+ coordinate (pgfcirc@Vto) at ($(pgfcirc@mid) ! \ctikzvalof{voltage/distance from line}\pgf@circ@Rlen ! \pgf@circ@voltage@angle : (\ctikzvalof{bipole/name}.right)$)
+
+ \ifpgf@circuit@bipole@voltage@below
+ coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
+ coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
+ \else
+ coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
+ coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
+ \fi
+
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
+ node[currarrow, sloped, allow upside down, pos=1] {}
+ (pgfcirc@Vfrom)
+ \else
+ (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
+ node[currarrow, sloped, allow upside down, pos=1] {}
+ (pgfcirc@Vto)
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
+ \else
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
+ \fi
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
+ \else
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
+ \fi
+ \fi
+ \fi
+}
+
+%% Output routine for voltage sources
+
+\def\pgf@circ@drawvoltagegenerator{
+ \ifpgf@circuit@bipole@voltage@below
+ coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-120)$)
+ coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-60)$)
+ \else
+ coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.120)$)
+ coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.60)$)
+ \fi
+
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vcont2) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont1)
+ \else
+ (pgfcirc@Vcont1) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont2)
+ \fi
+
+ \else % american voltage
+
+ \ifpgf@circuit@bipole@voltageoutsideofsymbol
+ % if it is a battery, must put + and -
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vcont2) node {$-$} (pgfcirc@Vcont1) node {$+$}
+ \else
+ (pgfcirc@Vcont1) node {$+$} (pgfcirc@Vcont2) node {$-$}
+ \fi
+ \fi
+
+ \fi
+}
+
+%% Output routine
+
+\def\pgf@circ@drawvoltage{ % node name
+ \pgfextra{
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >284 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@voltage@label@where{90}
+ \fi
+
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\eudist{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}} }
+ { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
+ }
+
+ \ifpgf@circuit@bipole@isvoltage
+ \pgf@circ@drawvoltagegenerator
+ \else
+ \pgf@circ@drawvoltagegeneric
+ \fi
+ (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)
+ coordinate (Vlab) at ($(\ctikzvalof{bipole/name}.center) !
+ \ifpgf@circuit@europeanvoltage\eudist\else\ctikzvalof{voltage/american label distance}\fi !
+ (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)$)
+ node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=0]
+ at (Vlab) { \pgf@circ@finallabel{voltage/} }
+}
+
+
+
+
+
+% coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) !
+% \ctikzvalof{voltage/bump b} !
+% (\ctikzvalof{bipole/name}.-110) $)
+% coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) !
+% \ctikzvalof{voltage/bump b} !
+% (\ctikzvalof{bipole/name}.-70) $)
+% \else
+% coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) !
+% \ctikzvalof{voltage/bump b} !
+% (\ctikzvalof{bipole/name}.110) $)
+% coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) !
+% \ctikzvalof{voltage/bump b} !
+% (\ctikzvalof{bipole/name}.70) $)
+% \fi
+%%%---------- close: tex/pgfcircvoltage
+%%%%%%%%%%% Springe nach tex/pgfcirccurrent
+%%%---------- open: tex/pgfcirccurrent.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Current handling
+
+%% Options
+
+
+\ctikzset{i^>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i>^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i>_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i^</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i<^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i<_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i/.code = {
+% \ifpgf@circuit@bipole@iscurrent
+% \pgfkeys{\circuitikzbasekey/bipole/current/position=above}
+% \else
+% \pgfkeys{\circuitikzbasekey/bipole/current/position=below}
+% \fi
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
+ \ctikzsetvalof{bipole/current/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+%reverse current direction for voltage sources
+ \ifpgf@circ@oldvoltagedirection\else
+ \ifpgf@circuit@bipole@isvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below }
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \fi\fi\fi
+}
+}
+
+
+\ifpgf@circ@oldvoltagedirection
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
+\else
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
+\fi
+\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
+\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
+\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
+
+
+\def\pgf@circ@drawnormalcurrent{
+ \ifpgf@circuit@bipole@current@before
+ \ifpgf@circuit@bipole@current@backward
+ { (\ctikzvalof{bipole/name}.left) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\tikztostart)
+ }
+ \else
+ { (\tikztostart) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\ctikzvalof{bipole/name}.left)
+ }
+ \fi
+ \else
+ \ifpgf@circuit@bipole@current@backward
+ { (\tikztotarget) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\ctikzvalof{bipole/name}.right)
+ }
+ \else
+ { (\ctikzvalof{bipole/name}.right) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\tikztotarget)
+ }
+ \fi
+ \fi
+}
+
+%% Output routine
+%% #1 - node name
+
+\def\pgf@circ@drawcurrent{
+ \pgfextra{
+ \edef\pgf@circ@ffffff{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >284 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@bipole@current@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@current@label@where{+90}
+ \fi
+ }
+
+
+ \pgfextra{ \def\pgf@temp{short} \edef\pgf@circ@temp{\ctikzvalof{bipole/kind}} }
+
+ \ifx\pgf@circ@temp\pgf@temp % caso di corrente (centrata) su un corto
+ \ifpgf@circuit@bipole@current@backward
+ { (\tikztotarget) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\tikztostart) }
+ \else
+ { (\tikztostart) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\tikztotarget) }
+ \fi
+
+ \else % altri bipoli - e quindi tra nodo e target
+
+ \ifpgf@circuit@bipole@iscurrent
+ \ifpgf@circuit@europeancurrent
+ \pgf@circ@drawnormalcurrent
+ \else
+ \fi
+ \else
+ \pgf@circ@drawnormalcurrent
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@iscurrent
+ node [anchor=\pgf@circ@dir] at (\ctikzvalof{bipole/name}.\pgf@circ@bipole@current@label@where)
+ { \pgf@circ@finallabel{current/} }
+ \else
+ (Iarrow.\pgf@circ@bipole@current@label@where) node [anchor=\pgf@circ@dir]
+ { \pgf@circ@finallabel{current/} }
+ \fi
+
+}
+
+
+
+
+%%%---------- close: tex/pgfcirccurrent
+
+\ExecuteOptions{nofetbodydiode,nofetsolderdot,nooldvoltagedirection,europeancurrents,europeanvoltages,americanports,americanresistors,cuteinductors,europeangfsurgearrester,nosiunitx,noarrowmos,smartlabels,nocompatibility}
+
+\ProcessOptions\relax
+
+%%%%%%%%%%% Springe nach tex/pgfcircpath
+%%%---------- open: tex/pgfcircpath.tex
+
+\pgf@circ@Rlen = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+
+
+% Names
+\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
+\ctikzset{n/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/name=#1}
+}}
+
+% Reflect the node along
+\ctikzset{mirrored/.is choice}
+\ctikzset{mirror value/.initial=1}
+\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
+\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
+\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
+
+% Initialize paths
+\def\pgfcircresetpath{
+ \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90,
+ bipole/reversed=false, bipole/kind=,
+ bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
+ bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
+ bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
+ bipole/current/y position=above, bipole/current/direction=forward,
+ mirrored=false
+ }
+}
+
+
+%% Generic bipole path
+\def\pgf@circ@bipole@path#1#2{
+ \pgfextra{
+ \ctikzset{bipole/kind = #1}
+
+ \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
+ \def\pgf@circ@temp{}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = #2\pgf@circ@rand} % create it
+ \fi
+
+ \def\pgf@temp{open}
+ \def\pgf@circ@temp{#1}
+ }
+ \ifpgf@circuit@bipole@reversed
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ \else
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ \fi
+ \pgfextra{
+ \pgf@circ@slope{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \edef\pgf@circ@direction{\pgfmathresult}
+ }
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)
+ node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}]
+ (\ctikzvalof{bipole/name}) {}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ \else
+ \ifpgf@circuit@bipole@strokedsymbol%draw line thrue symbol(e.g. diodes)
+ \ifcsname pgf@anchor@#1shape@strokepathstart\endcsname%if special path-anchors are defined, use them!
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.strokepathstart)
+ (\ctikzvalof{bipole/name}.strokepathend) -- (\ctikzvalof{bipole/name}end.center)
+ \else
+ (\ctikzvalof{bipole/name}start.center)--(\ctikzvalof{bipole/name}end.center)
+ \fi
+ \else
+ \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
+ (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
+ \else
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
+ (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+ \fi
+ \fi
+ \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabel\fi
+ \drawpoles
+ \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
+ \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
+ % reset
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ (\tikztotarget) \tikztonodes % e si continua
+}
+
+
+%% Path definitions
+
+\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
+\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
+\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
+\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
+\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
+\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
+\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
+\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
+\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
+\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
+\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
+\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
+\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
+\def\pgf@circ@battery1@path#1{\pgf@circ@bipole@path{battery1}{#1}}
+\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
+\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
+\def\pgf@circ@inductor@path#1{%
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@europeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@cuteinductor@path{#1}%
+ \else%
+ \pgf@circ@americaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@vinductor@path#1{
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@veuropeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@vcuteinductor@path{#1}%
+ \else%
+ \pgf@circ@vamericaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
+\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
+\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
+\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
+\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
+\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
+\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
+\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
+\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
+\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
+\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
+\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
+\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
+\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
+\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
+\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
+\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
+\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
+\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
+\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
+\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
+\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
+\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
+\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
+\def\pgf@circ@spst@path#1{\pgf@circ@bipole@path{spst}{#1}}
+\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
+\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
+\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
+\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
+\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
+\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
+\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
+\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
+\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
+\def\pgf@circ@empty@path#1{}
+\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
+\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
+\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
+\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
+\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
+\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
+\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
+\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
+\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
+\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
+\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
+\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
+\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
+
+\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
+\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
+\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
+
+\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
+\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
+\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
+\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
+\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
+\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
+\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
+\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
+\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
+\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
+\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
+\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
+\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
+\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
+\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
+\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
+\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
+\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
+
+%%Mechanical
+\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
+\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
+\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
+
+
+
+
+%% Styles
+
+\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
+\def\compattikzset#1{\tikzset{\comnpatname#1}}
+
+%\def\ctikzsetbipole#1#2{%
+% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
+%}
+
+\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
+\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
+\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
+\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
+\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
+\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
+\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
+\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
+\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
+\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
+\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
+\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
+\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
+\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
+\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
+\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
+\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
+\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
+\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
+\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
+\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
+\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery1@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
+\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
+\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
+\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
+\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
+\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
+\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
+\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
+\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
+\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
+\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
+\compattikzset{transmission line/.style = {tline = #1}}
+\compattikzset{TL/.style = {tline = #1}}
+\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+
+\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source, \circuitikzbasekey/bipole/is current=true, i=#1}}
+
+
+\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
+\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
+\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
+\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
+\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
+\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
+\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
+
+\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
+
+\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
+\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
+\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
+\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
+\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
+
+\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
+\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
+\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
+\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
+\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
+\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
+\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
+\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
+\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
+\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
+\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
+\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
+\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
+\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
+\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
+\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
+\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
+\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
+
+% % % % % %
+% % Beginn of Diodes
+% % % % % %
+
+\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
+\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
+\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
+\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
+\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
+\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
+\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
+\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
+\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
+\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
+\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
+\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
+\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
+\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
+\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
+\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
+
+\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
+\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
+\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
+\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
+\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
+\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
+\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
+\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
+\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
+\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
+
+\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
+\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
+%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
+
+\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
+\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
+\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
+\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
+\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
+\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
+\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
+\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
+\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
+\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
+
+%% Define Shortcuts
+\compattikzset{Do/.style = {\comnpatname empty diode}}
+\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
+\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
+\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
+\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
+\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
+\compattikzset{leDo/.style = {\comnpatname empty led}}
+\compattikzset{VCo/.style = {\comnpatname empty varcap}}
+\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
+\compattikzset{Tro/.style = {\comnpatname empty triac}}
+
+\compattikzset{D*/.style = {\comnpatname full diode}}
+\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
+\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
+\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
+\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
+\compattikzset{pD*/.style = {\comnpatname full photodiode}}
+\compattikzset{leD*/.style = {\comnpatname full led}}
+\compattikzset{VC*/.style = {\comnpatname full varcap}}
+\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
+\compattikzset{Tr*/.style = {\comnpatname full triac}}
+
+\compattikzset{D/.style = {\comnpatname diode}}
+\compattikzset{tD/.style = {\comnpatname tunnel diode}}
+\compattikzset{zD/.style = {\comnpatname Zener diode}}
+\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
+\compattikzset{sD/.style = {\comnpatname Schottky diode}}
+\compattikzset{pD/.style = {\comnpatname photodiode}}
+\compattikzset{leD/.style = {\comnpatname led}}
+\compattikzset{VC/.style = {\comnpatname varcap}}
+\compattikzset{Ty/.style = {\comnpatname thyristor}}
+\compattikzset{Tr/.style = {\comnpatname triac}}
+
+\compattikzset{D-/.style = {\comnpatname stroke diode}}
+\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
+\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
+\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
+\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
+\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
+\compattikzset{leD-/.style = {\comnpatname stroke led}}
+\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
+\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
+\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
+
+% % % % % %
+% % End of Diodes
+% % % % % %
+
+
+\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
+\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
+\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
+\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spst@path, l=#1}}
+\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
+
+\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
+\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
+\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
+
+% short forms
+\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+
+\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path}}
+\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosource@path}}
+
+\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
+\compattikzset{isource/.style = {\comnpatname current source = #1}}
+\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
+\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+
+\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+
+\compattikzset{R/.style= {\comnpatname resistor = #1}}
+%\ifpgf@circuit@compat\else\compattikzset{R/.style= {resistor = #1}}\fi
+\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
+\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
+\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
+\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
+\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
+\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
+\compattikzset{C/.style = {\comnpatname capacitor = #1}}
+\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
+\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
+\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
+\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
+\compattikzset{L/.style = {\comnpatname inductor = #1}}
+\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
+\compattikzset{V/.style = {\comnpatname voltage source = #1}}
+\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
+\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
+ \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
+ \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
+ \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+\compattikzset{I/.style = {\comnpatname current source = #1}}
+\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
+ \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
+ \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
+ \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+
+
+
+\compattikzset{Mr/.style = {\comnpatname memristor}}
+
+\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
+\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
+\compattikzset{spst/.style = {\comnpatname switch = #1}}
+
+\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
+
+\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
+\compattikzset{vss/.style = {\comnpatname vee = #1}}
+
+\def\inheritlogicport#1#2{
+ \pgfdeclareshape{#2 port}{
+ \inheritsavedanchors[from=#1 #2 port]
+ \inheritbackgroundpath[from=#1 #2 port]
+ \inheritanchor[from=#1 #2 port]{in}
+ \inheritanchor[from=#1 #2 port]{in 1}
+ \inheritanchor[from=#1 #2 port]{in 2}
+ \inheritanchor[from=#1 #2 port]{out}
+ \inheritanchor[from=#1 #2 port]{center}
+ \inheritanchor[from=#1 #2 port]{left}
+ }
+}
+
+\ifpgf@circuit@europeanlogicport
+ \inheritlogicport{european}{and}
+ \inheritlogicport{european}{or}
+ \inheritlogicport{european}{xor}
+ \inheritlogicport{european}{not}
+ \inheritlogicport{european}{nand}
+ \inheritlogicport{european}{nor}
+ \inheritlogicport{european}{xnor}
+\else
+ \inheritlogicport{american}{and}
+ \inheritlogicport{american}{or}
+ \inheritlogicport{american}{xor}
+ \inheritlogicport{american}{not}
+ \inheritlogicport{american}{nand}
+ \inheritlogicport{american}{nor}
+ \inheritlogicport{american}{xnor}
+\fi
+
+% Transistor like bipoles
+
+\def\pgf@circ@trans@path#1#2{
+ \pgfextra{
+ \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
+ \def\pgf@circ@temp{#2}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
+ \fi
+ }
+ \ifpgf@circuit@bipole@reversed
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ \else
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ \fi
+ \pgfextra{
+ \pgf@circ@slope{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \pgfmathadd{\pgfmathresult}{-90}
+ \edef\pgf@circ@direction{\pgfmathresult}
+ }
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)
+ node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
+ (\ctikzvalof{bipole/name}) {} node {\ctikzvalof{bipole/label/name}}
+ \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
+ (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
+ \else
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
+ (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ (\tikztotarget) \tikztonodes % e si continua
+}
+
+
+\def\pgf@circ@definetranspath#1{
+ \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
+}
+
+\pgf@circ@definetranspath{elmech}
+\pgf@circ@definetranspath{nmos}
+\pgf@circ@definetranspath{pmos}
+\pgf@circ@definetranspath{npn}
+\pgf@circ@definetranspath{pnp}
+\pgf@circ@definetranspath{nfet}
+\pgf@circ@definetranspath{nigfete}
+\pgf@circ@definetranspath{nigfetd}
+\pgf@circ@definetranspath{nigfetebulk}
+\pgf@circ@definetranspath{pfet}
+\pgf@circ@definetranspath{pigfete}
+\pgf@circ@definetranspath{pigfetd}
+\pgf@circ@definetranspath{pigfetebulk}
+\pgf@circ@definetranspath{njfet}
+\pgf@circ@definetranspath{pjfet}
+\pgf@circ@definetranspath{pigbt}
+\pgf@circ@definetranspath{nigbt}
+\pgf@circ@definetranspath{Lpigbt}
+\pgf@circ@definetranspath{Lnigbt}%%%---------- close: tex/pgfcircpath
+
+\ifpgf@circ@siunitx
+ \RequirePackage{xstring}[2009/03/13]
+ %\expandafter\let\csname angstrom\endcsname\relax
+ \RequirePackage{siunitx}
+\fi
+
+
+
+\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
+%override (unused) circuitikz environment for compability to externalization)
+\let\circuitikz\tikzpicture
+\let\endcircuitikz\endtikzpicture
+
+\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.6.sty b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.6.sty
index 475980e1a2..0c1aadad54 100644
--- a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.6.sty
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.6.sty
@@ -1,20 +1,16 @@
-% Copyright 2007-2016 by Massimo Redaelli
+% Copyright 2018-2021 by Romano Giannetti
+% Copyright 2015-2021 by Stefan Lindner
+% Copyright 2013-2021 by Stefan Erhardt
+% Copyright 2007-2021 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
%
-% See the file doc/LICENSE for more details.
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-%%%%%
-%%%%%
-%%%%%
-%%%%% Se c'รจ l'opzione symbol, fallback to siunitx with warning
-%%%%%
-%%%%%
-
\NeedsTeXFormat{LaTeX2e}
\def\pgfcircversion{0.6}
@@ -23,10268 +19,5 @@
\ProvidesPackage{circuitikz-0.6}
[\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]
-%% Version 2.0 of pgf/TikZ is required
-\RequirePackage{tikz}
-\usetikzlibrary{calc}
-\usepgflibrary{arrows}
-
-
-% The options are listed in the manual in this order
-
-\DeclareOption{europeanvoltage}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{americanvoltage}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrent}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrent}{
- \ctikzset{current = american}
-}
-
-\DeclareOption{europeanvoltage}{
- \ctikzset{voltage = european}
-}
-
-\DeclareOption{americanresistor}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistor}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductor}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductor}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductor}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanport}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanport}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{europeanport}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{european}{
- \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
- \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester = european}
-}
-
-\DeclareOption{american}{
- \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester = american}
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{fulldiodes}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiodes}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{europeanvoltages}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{americanvoltages}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrents}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrents}{
- \ctikzset{current = american}
-}
-
-\DeclareOption{europeanvoltages}{
- \ctikzset{voltage = european}
-}
-
-\DeclareOption{americanresistors}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistors}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductors}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductors}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductors}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanports}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanports}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{americangfsurgearrester}{
- \ctikzset{gas filled surge arrester = american}
-}
-
-\DeclareOption{europeangfsurgearrester}{
- \ctikzset{gas filled surge arrester = european}
-}
-
-\DeclareOption{siunitx}{
- \pgf@circ@siunitxtrue
-}
-
-\DeclareOption{nosiunitx}{
- \pgf@circ@siunitxfalse
-}
-
-\DeclareOption{fulldiode}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiode}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{strokediode}{
- \ctikzset{diode = stroke}
-}
-
-\DeclareOption{arrowmos}{
- \pgf@circuit@mos@arrowstrue
-}
-
-\DeclareOption{noarrowmos}{
- \pgf@circuit@mos@arrowsfalse
-}
-
-\DeclareOption{fetbodydiode}{
- \pgf@circuit@fet@bodydiodetrue
-}
-
-\DeclareOption{nofetbodydiode}{
- \pgf@circuit@fet@bodydiodefalse
-}
-
-\DeclareOption{fetsolderdot}{
- \pgf@circuit@fet@solderdottrue
-}
-
-\DeclareOption{nofetsolderdot}{
- \pgf@circuit@fet@solderdotfalse
-}
-
-\DeclareOption{emptypmoscircle}{
- \pgf@circuit@pmos@emptycircletrue
-}
-
-
-\DeclareOption{lazymos}{
- \ctikzset{tripoles/nmos/width=.5}
- \ctikzset{tripoles/nmos/gate height=.35}
- \ctikzset{tripoles/nmos/base height=.35}
- \ctikzset{tripoles/nmos/height/.initial=1.2}
- \ctikzset{tripoles/nmos/base width=.5}
- \ctikzset{tripoles/nmos/gate width=.65}
-
- \ctikzset{tripoles/pmos/width=.5}
- \ctikzset{tripoles/pmos/gate height=.35}
- \ctikzset{tripoles/pmos/base height=.35}
- \ctikzset{tripoles/pmos/height/.initial=1.2}
- \ctikzset{tripoles/pmos/base width=.5}
- \ctikzset{tripoles/pmos/gate width=.65}
-
- \pgf@circuit@pmos@emptycircletrue
-}
-
-\DeclareOption{straightlabels}{
- \ctikzset{label/align = straight}
-}
-
-\DeclareOption{rotatelabels}{
- \ctikzset{label/align = rotate}
-}
-
-\DeclareOption{smartlabels}{
- \ctikzset{label/align = smart}
-}
-
-\DeclareOption{compatibility}{
- \pgf@circuit@compattrue
-}
-
-\DeclareOption{oldvoltagedirection}{
- \pgf@circ@oldvoltagedirectiontrue
-}
-\DeclareOption{nooldvoltagedirection}{
- \pgf@circ@oldvoltagedirectionfalse
-}
-
-\DeclareOption{betterproportions}{
- \ctikzset{monopoles/ground/width/.initial=.15}
-
- \ctikzset{bipoles/resistor/height/.initial=.23}
- \ctikzset{bipoles/resistor/width/.initial=.6}
- \ctikzset{bipoles/capacitor/height/.initial=.4}
- \ctikzset{bipoles/capacitor/width/.initial=.1}
- \ctikzset{bipoles/potentiometer/height/.initial=.6}
- \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/potentiometer/width/.initial=.6}
- \ctikzset{bipoles/photoresistor/height/.initial=.6}
- \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
- \ctikzset{bipoles/photoresistor/width/.initial=.6}
- \ctikzset{bipoles/thermistor/main/.initial=.7}
- \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistor/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/main/.initial=.7}
- \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
- \ctikzset{bipoles/thermistorptc/width/.initial=.6}
- \ctikzset{bipoles/thermistorptc/main/.initial=.7}
- \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/main/.initial=.7}
- \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/width/.initial=.6}
- \ctikzset{bipoles/vresistor/height/.initial=.45}
- \ctikzset{bipoles/vresistor/width/.initial=.6}
- \ctikzset{bipoles/generic/height/.initial=.23}
- \ctikzset{bipoles/generic/width/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
- \ctikzset{bipoles/ageneric/height/.initial=.23}
- \ctikzset{bipoles/ageneric/width/.initial=.6}
- \ctikzset{bipoles/memristor/height/.initial=.23}
- \ctikzset{bipoles/memristor/wave height/.initial=.375}
- \ctikzset{bipoles/memristor/width/.initial=.60}
- \ctikzset{bipoles/tgeneric/height/.initial=.525}
- \ctikzset{bipoles/tgeneric/width/.initial=.6}
- \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
- \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
- \ctikzset{bipoles/fullgeneric/height/.initial=.23}
- \ctikzset{bipoles/fullgeneric/width/.initial=.6}
- \ctikzset{bipoles/diode/height/.initial=.3}
- \ctikzset{bipoles/diode/width/.initial=.25}
-
- \ctikzset{tripoles/thyristor/height/.initial=.66}
- \ctikzset{tripoles/thyristor/height 2/.initial=.3}
- \ctikzset{tripoles/thyristor/width/.initial=.6}
- \ctikzset{tripoles/thyristor/diode height/.initial=.3}
- \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
- \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
- \ctikzset{tripoles/triac/height/.initial=.66}
- \ctikzset{tripoles/triac/width/.initial=.6}
- \ctikzset{tripoles/triac/diode width left/.initial=.3}
- \ctikzset{tripoles/triac/diode width right/.initial=.3}
-}
-
-%%%%%%%%%
-%%%%%%%%%%% Springe nach tex/pgfcirc.defines
-%%%---------- open: tex/pgfcirc.defines.tex
-
-%% Options
-
-%%%%%%%%%%%%
-%% Dimensions
-
-% coordinates
-\newdimen\pgf@circ@res@up
-\newdimen\pgf@circ@res@down
-\newdimen\pgf@circ@res@zero
-\newdimen\pgf@circ@res@left
-\newdimen\pgf@circ@res@right
-\newdimen\pgf@circ@res@other
-\newdimen\pgf@circ@res@step
-\newdimen\pgf@circ@res@temp
-% inital thickness
-\newdimen \pgfstartlinewidth
-%% Keys
-
-\long\def\pgf@circ@comment#1{}
-
-\def\circuitikzbasekey{/tikz/circuitikz}
-
-\pgfkeys{\circuitikzbasekey/.is family}
-
-\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
-\let\ctikzset\circuitikzset
-\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
-\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circuit@compat
-\newif\ifpgf@circ@oldvoltagedirection
-
-% Option ">" for twoports
-\newif\ifpgf@circuit@inputarrow
-\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/.is choice}
-\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
-
-% Option "boxed" for nodes and twoports
-\newif\ifpgf@circuit@boxed
-\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
-
-% Option "dashed" for nodes and twoports
-\newif\ifpgf@circuit@dashed
-\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
-\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}
-
-% Option "t=*" for nodes
-\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
-
-
-
-\ctikzset{bipoles/.is family}
-\ctikzset{bipoles/border margin/.initial=1.1}
-\ctikzset{bipoles/thickness/.initial=2}
-\ctikzset{bipoles/length/.initial=1.4cm}
-\ctikzset{nodes width/.initial=.04}
-\newdimen\pgf@circ@Rlen
-\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1}}
-
-\ctikzset{monopoles/.is family}
-\ctikzset{monopoles/ground/width/.initial=.25}
-\ctikzset{monopoles/tground/thickness/.initial=3}
-\ctikzset{monopoles/vcc/width/.initial=.2}
-\ctikzset{monopoles/match/width/.initial=.4}
-\ctikzset{monopoles/chassis/width/.initial=.25}
-\ctikzset{monopoles/alternative chassis/width/.initial=.25}
-\ctikzset{monopoles/equipotentiality/width/.initial=.25}
-\ctikzset{monopoles/tlinestub/width/.initial=.25}
-\ctikzset{monopoles/antenna/width/.initial=.25}
-\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/width/.initial=.25}
-\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/rxantenna/width/.initial=.25}
-
-\ctikzset{bipoles/resistor/height/.initial=.3}
-\ctikzset{bipoles/resistor/width/.initial=.8}
-\ctikzset{bipoles/potentiometer/height/.initial=.8}
-\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
-\ctikzset{bipoles/potentiometer/width/.initial=.8}
-\ctikzset{bipoles/photoresistor/height/.initial=.6}
-\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
-\ctikzset{bipoles/photoresistor/width/.initial=.8}
-\ctikzset{bipoles/thermistor/main/.initial=.7}
-\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/width/.initial=.8}
-\ctikzset{bipoles/thermistorntc/main/.initial=.7}
-\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistorptc/width/.initial=.8}
-\ctikzset{bipoles/thermistorptc/main/.initial=.7}
-\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistor/width/.initial=.8}
-\ctikzset{bipoles/varistor/main/.initial=.7}
-\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/varistor/width/.initial=.8}
-\ctikzset{bipoles/vresistor/height/.initial=.6}
-\ctikzset{bipoles/vresistor/width/.initial=.8}
-\ctikzset{bipoles/cuteinductor/height/.initial=.3}
-\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
-\ctikzset{bipoles/cuteinductor/width/.initial=.6}
-\ctikzset{bipoles/cuteinductor/coils/.initial=5}
-\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-\ctikzset{bipoles/americaninductor/height/.initial=.3}
-\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
-\ctikzset{bipoles/americaninductor/width/.initial=.8}
-\ctikzset{bipoles/americaninductor/coils/.initial=4}
-\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
-\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
-\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
-\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
-\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
-\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
-\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/esource/height/.initial=.60}
-\ctikzset{bipoles/esource/width/.initial=.60}
-\ctikzset{bipoles/pvsource/height/.initial=.60}
-\ctikzset{bipoles/pvsource/width/.initial=.60}
-\ctikzset{bipoles/isource/height/.initial=.60}
-\ctikzset{bipoles/isource/width/.initial=.60}
-\ctikzset{bipoles/oosource/height/.initial=.60}
-\ctikzset{bipoles/oosource/width/.initial=.60}
-\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/dcisource/height/.initial=.60}
-\ctikzset{bipoles/dcisource/width/.initial=.60}
-\ctikzset{bipoles/dcvsource/height/.initial=.60}
-\ctikzset{bipoles/dcvsource/width/.initial=.60}
-\ctikzset{bipoles/vsourcetri/height/.initial=.60}
-\ctikzset{bipoles/vsourcetri/width/.initial=.60}
-\ctikzset{bipoles/isourceam/height/.initial=.60}
-\ctikzset{bipoles/isourceam/width/.initial=.60}
-\ctikzset{bipoles/vsource/height/.initial=.60}
-\ctikzset{bipoles/vsource/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/height/.initial=.60}
-\ctikzset{bipoles/vsourceam/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/margin/.initial=.7}
-\ctikzset{bipoles/isourcesin/height/.initial=.60}
-\ctikzset{bipoles/isourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesin/height/.initial=.60}
-\ctikzset{bipoles/vsourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
-\ctikzset{bipoles/cisource/height/.initial=.7}
-\ctikzset{bipoles/cisource/width/.initial=.7}
-\ctikzset{bipoles/cisourceam/height/.initial=.7}
-\ctikzset{bipoles/cisourceam/width/.initial=.7}
-\ctikzset{bipoles/cvsource/height/.initial=.7}
-\ctikzset{bipoles/cvsource/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/height/.initial=.7}
-\ctikzset{bipoles/cvsourceam/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
-\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
-\ctikzset{bipoles/cisourcesin/width/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
-\ctikzset{bipoles/capacitor/height/.initial=.6}
-\ctikzset{bipoles/capacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/height/.initial=.5}
-\ctikzset{bipoles/ecapacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/font/.initial= \fontsize{6}{0}\selectfont\boldmath}
-\ctikzset{bipoles/pcapacitor/height/.initial=.6}
-\ctikzset{bipoles/pcapacitor/width/.initial=.2}
-\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
-\ctikzset{bipoles/vcapacitor/height/.initial=.6}
-\ctikzset{bipoles/vcapacitor/width/.initial=.5}
-\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
-\ctikzset{bipoles/piezoelectric/height/.initial=.7}
-\ctikzset{bipoles/piezoelectric/width/.initial=.5}
-\ctikzset{bipoles/battery/height/.initial=.6}
-\ctikzset{bipoles/battery/width/.initial=.3}
-\ctikzset{bipoles/battery1/height/.initial=.6}
-\ctikzset{bipoles/battery1/width/.initial=.3}
-\ctikzset{bipoles/diode/height/.initial=.50}
-\ctikzset{bipoles/diode/width/.initial=.40}
-\ctikzset{bipoles/varcap/height/.initial=.50}
-\ctikzset{bipoles/varcap/width/.initial=.45}
-\ctikzset{bipoles/interr/height/.initial=.35}
-\ctikzset{bipoles/interr/width/.initial=.35}
-\ctikzset{bipoles/interr/height 2/.initial=.1}
-\ctikzset{bipoles/generic/height/.initial=.30}
-\ctikzset{bipoles/generic/width/.initial=.80}
-\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
-\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
-\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
-\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
-\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
-\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
-\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
-\ctikzset{bipoles/fuse/height/.initial=.20}
-\ctikzset{bipoles/fuse/width/.initial=.50}
-\ctikzset{bipoles/afuse/height/.initial=.20}
-\ctikzset{bipoles/afuse/width/.initial=.50}
-\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
-\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
-\ctikzset{bipoles/ageneric/height/.initial=.30}
-\ctikzset{bipoles/ageneric/width/.initial=.80}
-\ctikzset{bipoles/memristor/height/.initial=.30}
-\ctikzset{bipoles/memristor/wave height/.initial=.5}
-\ctikzset{bipoles/memristor/width/.initial=.80}
-\ctikzset{bipoles/tgeneric/height/.initial=.70}
-\ctikzset{bipoles/tgeneric/width/.initial=.80}
-\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
-\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
-\ctikzset{bipoles/fullgeneric/height/.initial=.30}
-\ctikzset{bipoles/fullgeneric/width/.initial=.80}
-\ctikzset{bipoles/open/height/.initial=.25}
-\ctikzset{bipoles/open/width/.initial=.8}
-\ctikzset{bipoles/ammeter/height/.initial=.60}
-\ctikzset{bipoles/ammeter/width/.initial=.60}
-\ctikzset{bipoles/ohmmeter/height/.initial=.60}
-\ctikzset{bipoles/ohmmeter/width/.initial=.60}
-\ctikzset{bipoles/voltmeter/height/.initial=.60}
-\ctikzset{bipoles/voltmeter/width/.initial=.60}
-\ctikzset{bipoles/buffer/height/.initial=1}
-\ctikzset{bipoles/buffer/width/.initial=1}
-\ctikzset{bipoles/not port/width/.initial=1}
-\ctikzset{bipoles/not port/height/.initial=.8}
-\ctikzset{bipoles/not port/circle width/.initial=.15}
-\ctikzset{bipoles/lamp/height/.initial=.60}
-\ctikzset{bipoles/lamp/width/.initial=.60}
-\ctikzset{bipoles/tline/height/.initial=.3}
-\ctikzset{bipoles/tline/width/.initial=.8}
-\ctikzset{bipoles/squid/height/.initial=.60}
-\ctikzset{bipoles/squid/width/.initial=.60}
-\ctikzset{bipoles/barrier/height/.initial=.60}
-\ctikzset{bipoles/barrier/width/.initial=.60}
-\ctikzset{bipoles/thermocouple/height/.initial=.250}
-\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
-\ctikzset{bipoles/thermocouple/width/.initial=.140}
-\ctikzset{bipoles/pushbutton/height/.initial=.5}
-\ctikzset{bipoles/pushbutton/height 2/.initial=.0}
-\ctikzset{bipoles/pushbutton/width/.initial=.50}
-
-\ctikzset{bipoles/twoport/width/.initial=.7}
-\ctikzset{bipoles/twoport/height/.initial=.7}
-\ctikzset{bipoles/twoport/text/.initial=}
-\ctikzset{bipoles/vco/width/.initial=.7}
-\ctikzset{bipoles/bandpass/width/.initial=.7}
-\ctikzset{bipoles/highpass/width/.initial=.7}
-\ctikzset{bipoles/lowpass/width/.initial=.7}
-\ctikzset{bipoles/adc/width/.initial=.7}
-\ctikzset{bipoles/dac/width/.initial=.7}
-\ctikzset{bipoles/dsp/width/.initial=.7}
-\ctikzset{bipoles/fft/width/.initial=.7}
-\ctikzset{bipoles/amp/width/.initial=.7}
-\ctikzset{bipoles/vamp/width/.initial=.7}
-\ctikzset{bipoles/piattenuator/width/.initial=.7}
-\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
-\ctikzset{bipoles/tattenuator/width/.initial=.7}
-\ctikzset{bipoles/vtattenuator/width/.initial=.7}
-\ctikzset{bipoles/phaseshifter/width/.initial=.7}
-\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
-\ctikzset{bipoles/detector/width/.initial=.7}
-
-
-\newif\ifpgf@circuit@trans@depletiontype
-\pgf@circuit@trans@depletiontypefalse
-
-\newif\ifpgf@circuit@mos@arrows
-\ctikzset{tripoles/mos style/.is choice}
-\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
-\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
-
-% Option solderdot for fet
-\newif\ifpgf@circuit@fet@solderdot
-\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-
-% Option bodydiode for fet
-\newif\ifpgf@circuit@fet@bodydiode
-\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-
-% Option draw fet without gate connection
-\newif\ifpgf@circuit@bpt@drawgate
-\pgf@circuit@bpt@drawgatetrue
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-
-% Option draw bpt without base connection
-\newif\ifpgf@circuit@bpt@drawbase
-\pgf@circuit@bpt@drawbasetrue
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-
-% Option draw bpt with optical input
-\newif\ifpgf@circuit@bpt@drawphoto
-\pgf@circuit@bpt@drawphotofalse
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-
-% Option draw pmos with empty circle
-\newif\ifpgf@circuit@pmos@emptycircle
-\newif\ifpgf@circuit@pmos@emptycircle
-\pgf@circuit@pmos@emptycirclefalse
-\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-
-
-\newif\ifpgf@circuit@trans@ntype
-\pgf@circuit@trans@ntypetrue %default true
-%\newif\ifpgf@circuit@trans@ptype
-%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
-\ctikzset{tripoles/nmos/width/.initial=.7}
-\ctikzset{tripoles/nmos/gate height/.initial=.35}
-\ctikzset{tripoles/nmos/base height/.initial=.5}
-\ctikzset{tripoles/nmos/conn height/.initial=0}
-\ctikzset{tripoles/nmos/height/.initial=1.1}
-\ctikzset{tripoles/nmos/base width/.initial=.5}
-\ctikzset{tripoles/nmos/gate width/.initial=.62}
-\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nmos/curr direction/.initial=1}
-
-\ctikzset{tripoles/pmos/width/.initial=.7}
-\ctikzset{tripoles/pmos/gate height/.initial=.35}
-\ctikzset{tripoles/pmos/base height/.initial=.5}
-\ctikzset{tripoles/pmos/conn height/.initial=0}
-\ctikzset{tripoles/pmos/height/.initial=1.1}
-\ctikzset{tripoles/pmos/base width/.initial=.5}
-\ctikzset{tripoles/pmos/gate width/.initial=.62}
-\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pmos/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nfet/width/.initial=.7}
-\ctikzset{tripoles/nfet/gate height/.initial=.35}
-\ctikzset{tripoles/nfet/base height/.initial=.5}
-\ctikzset{tripoles/nfet/conn height/.initial=0}
-\ctikzset{tripoles/nfet/height/.initial=1.1}
-\ctikzset{tripoles/nfet/base width/.initial=.5}
-\ctikzset{tripoles/nfet/gate width/.initial=.62}
-\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pfet/width/.initial=.7}
-\ctikzset{tripoles/pfet/gate height/.initial=.35}
-\ctikzset{tripoles/pfet/base height/.initial=.5}
-\ctikzset{tripoles/pfet/conn height/.initial=0}
-\ctikzset{tripoles/pfet/height/.initial=1.1}
-\ctikzset{tripoles/pfet/base width/.initial=.5}
-\ctikzset{tripoles/pfet/gate width/.initial=.62}
-\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigfete/width/.initial=.7}
-\ctikzset{tripoles/nigfete/gate height/.initial=.35}
-\ctikzset{tripoles/nigfete/base height/.initial=.5}
-\ctikzset{tripoles/nigfete/conn height/.initial=.35}
-\ctikzset{tripoles/nigfete/height/.initial=1.1}
-\ctikzset{tripoles/nigfete/base width/.initial=.5}
-\ctikzset{tripoles/nigfete/gate width/.initial=.62}
-\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfete/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetd/width/.initial=.7}
-\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetd/base height/.initial=.5}
-\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetd/height/.initial=1.1}
-\ctikzset{tripoles/nigfetd/base width/.initial=.5}
-\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
-
-\ctikzset{tripoles/pigfete/width/.initial=.7}
-\ctikzset{tripoles/pigfete/gate height/.initial=.35}
-\ctikzset{tripoles/pigfete/base height/.initial=.5}
-\ctikzset{tripoles/pigfete/conn height/.initial=.35}
-\ctikzset{tripoles/pigfete/height/.initial=1.1}
-\ctikzset{tripoles/pigfete/base width/.initial=.5}
-\ctikzset{tripoles/pigfete/gate width/.initial=.62}
-\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetd/width/.initial=.7}
-\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetd/base height/.initial=.5}
-\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetd/height/.initial=1.1}
-\ctikzset{tripoles/pigfetd/base width/.initial=.5}
-\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
-
-\ctikzset{tripoles/npn/width/.initial=.6}
-\ctikzset{tripoles/npn/base height/.initial=.45}
-\ctikzset{tripoles/npn/base height 2/.initial=.15}
-\ctikzset{tripoles/npn/base height/.initial=.4}
-\ctikzset{tripoles/npn/conn height/.initial=0}
-\ctikzset{tripoles/npn/height/.initial=1.1}
-\ctikzset{tripoles/npn/base width/.initial=.5}
-\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/npn/curr direction/.initial=1}
-
-\ctikzset{tripoles/pnp/width/.initial=.6}
-\ctikzset{tripoles/pnp/base height/.initial=.45}
-\ctikzset{tripoles/pnp/base height 2/.initial=.15}
-\ctikzset{tripoles/pnp/base height/.initial=.4}
-\ctikzset{tripoles/pnp/conn height/.initial=0}
-\ctikzset{tripoles/pnp/height/.initial=1.1}
-\ctikzset{tripoles/pnp/base width/.initial=.5}
-\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pnp/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigbt/width/.initial=.6}
-\ctikzset{tripoles/pigbt/gate height/.initial=.45}
-\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/pigbt/base height/.initial=.4}
-\ctikzset{tripoles/pigbt/conn height/.initial=0}
-\ctikzset{tripoles/pigbt/height/.initial=1.1}
-\ctikzset{tripoles/pigbt/gate width/.initial=.62}
-\ctikzset{tripoles/pigbt/base width/.initial=.5}
-\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigbt/width/.initial=.6}
-\ctikzset{tripoles/nigbt/gate height/.initial=.45}
-\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/nigbt/base height/.initial=.4}
-\ctikzset{tripoles/nigbt/conn height/.initial=0}
-\ctikzset{tripoles/nigbt/height/.initial=1.1}
-\ctikzset{tripoles/nigbt/gate width/.initial=.62}
-\ctikzset{tripoles/nigbt/base width/.initial=.5}
-\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/Lpigbt/width/.initial=.6}
-\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/Lnigbt/width/.initial=.6}
-\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/njfet/width/.initial=.7}
-\ctikzset{tripoles/njfet/gate height/.initial=.5}
-\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/njfet/gate width/.initial=.5}
-\ctikzset{tripoles/njfet/conn height/.initial=.35}
-\ctikzset{tripoles/njfet/height/.initial=1.1}
-\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/njfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pjfet/width/.initial=.7}
-\ctikzset{tripoles/pjfet/gate height/.initial=.5}
-\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/pjfet/gate width/.initial=.5}
-\ctikzset{tripoles/pjfet/conn height/.initial=.35}
-\ctikzset{tripoles/pjfet/height/.initial=1.1}
-\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/isfet/width/.initial=1}
-\ctikzset{tripoles/isfet/gate height/.initial=.35}
-\ctikzset{tripoles/isfet/base height/.initial=.5}
-\ctikzset{tripoles/isfet/height/.initial=1.1}
-\ctikzset{tripoles/isfet/base width/.initial=.3}
-\ctikzset{tripoles/isfet/gate width/.initial=.5}
-\ctikzset{tripoles/isfet/conn height/.initial=0}
-\ctikzset{tripoles/isfet/wave width/.initial=.16}
-\ctikzset{tripoles/isfet/wave amp/.initial=.06}
-\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
-\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
-\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/isfet/curr direction/.initial=1}
-
-\newif\ifpgf@circuit@europeanlogicport
-\ctikzset{logic ports/.is choice}
-\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue } }
-\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse } }
-
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-
-\ctikzset{tripoles/american and port/width/.initial=1.1}
-\ctikzset{tripoles/american and port/height/.initial=.8}
-\ctikzset{tripoles/american and port/port width/.initial=.7}
-\ctikzset{tripoles/american and port/input height/.initial=.5}
-\ctikzset{tripoles/american nand port/width/.initial=1.1}
-\ctikzset{tripoles/american nand port/height/.initial=.8}
-\ctikzset{tripoles/american nand port/port width/.initial=.7}
-\ctikzset{tripoles/american nand port/circle width/.initial=.15}
-\ctikzset{tripoles/american nand port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/width/.initial=1.1}
-\ctikzset{tripoles/american or port/height/.initial=.8}
-\ctikzset{tripoles/american or port/port width/.initial=.7}
-\ctikzset{tripoles/american or port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/input skip/.initial=.25}
-\ctikzset{tripoles/american or port/aaa/.initial=.6}
-\ctikzset{tripoles/american or port/bbb/.initial=.4}
-\ctikzset{tripoles/american or port/ccc/.initial=.5}
-\ctikzset{tripoles/american or port/ddd/.initial=.0}
-\ctikzset{tripoles/american nor port/width/.initial=1.1}
-\ctikzset{tripoles/american nor port/height/.initial=.8}
-\ctikzset{tripoles/american nor port/port width/.initial=.7}
-\ctikzset{tripoles/american nor port/input height/.initial=.5}
-\ctikzset{tripoles/american nor port/input skip/.initial=.25}
-\ctikzset{tripoles/american nor port/circle width/.initial=.15}
-\ctikzset{tripoles/american nor port/aaa/.initial=.6}
-\ctikzset{tripoles/american nor port/bbb/.initial=.4}
-\ctikzset{tripoles/american nor port/ccc/.initial=.5}
-\ctikzset{tripoles/american nor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xor port/width/.initial=1.1}
-\ctikzset{tripoles/american xor port/height/.initial=.8}
-\ctikzset{tripoles/american xor port/port width/.initial=.7}
-\ctikzset{tripoles/american xor port/input height/.initial=.5}
-\ctikzset{tripoles/american xor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xor port/distance/.initial=.1}
-\ctikzset{tripoles/american xor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xnor port/width/.initial=1.1}
-\ctikzset{tripoles/american xnor port/height/.initial=.8}
-\ctikzset{tripoles/american xnor port/port width/.initial=.7}
-\ctikzset{tripoles/american xnor port/input height/.initial=.5}
-\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xnor port/distance/.initial=.1}
-\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
-\ctikzset{tripoles/european and port/width/.initial=1.4}
-\ctikzset{tripoles/european and port/height/.initial=.65}
-\ctikzset{tripoles/european and port/reserved/.initial=.6}
-\ctikzset{tripoles/european and port/input height/.initial=.6}
-\ctikzset{tripoles/european or port/width/.initial=1.4}
-\ctikzset{tripoles/european or port/height/.initial=.65}
-\ctikzset{tripoles/european or port/reserved/.initial=.6}
-\ctikzset{tripoles/european or port/input height/.initial=.6}
-\ctikzset{tripoles/european xor port/width/.initial=1.4}
-\ctikzset{tripoles/european xor port/height/.initial=.65}
-\ctikzset{tripoles/european xor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xor port/input height/.initial=.6}
-\ctikzset{tripoles/european nand port/width/.initial=1.4}
-\ctikzset{tripoles/european nand port/not height/.initial=.3}
-\ctikzset{tripoles/european nand port/not width/.initial=.8}
-\ctikzset{tripoles/european nand port/height/.initial=.65}
-\ctikzset{tripoles/european nand port/reserved/.initial=.6}
-\ctikzset{tripoles/european nand port/input height/.initial=.6}
-\ctikzset{tripoles/european not port/width/.initial=1.4}
-\ctikzset{tripoles/european not port/not height/.initial=.3}
-\ctikzset{tripoles/european not port/not width/.initial=.8}
-\ctikzset{tripoles/european not port/height/.initial=.65}
-\ctikzset{tripoles/european not port/reserved/.initial=.6}
-\ctikzset{tripoles/european not port/input height/.initial=0}
-\ctikzset{tripoles/european xnor port/width/.initial=1.4}
-\ctikzset{tripoles/european xnor port/not height/.initial=.3}
-\ctikzset{tripoles/european xnor port/not width/.initial=.8}
-\ctikzset{tripoles/european xnor port/height/.initial=.65}
-\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xnor port/input height/.initial=.6}
-\ctikzset{tripoles/european nor port/width/.initial=1.4}
-\ctikzset{tripoles/european nor port/not height/.initial=.3}
-\ctikzset{tripoles/european nor port/not width/.initial=.8}
-\ctikzset{tripoles/european nor port/height/.initial=.65}
-\ctikzset{tripoles/european nor port/reserved/.initial=.6}
-\ctikzset{tripoles/european nor port/input height/.initial=.6}
-\ctikzset{tripoles/op amp/width/.initial=1.7}
-\ctikzset{tripoles/op amp/port width/.initial=.7}
-\ctikzset{tripoles/op amp/height/.initial=1.4}
-\ctikzset{tripoles/op amp/input height/.initial=.5}
-\ctikzset{tripoles/op amp/up pos/.initial=.45}
-\ctikzset{tripoles/op amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolut font size needed!
-\ctikzset{tripoles/gm amp/width/.initial=1.7}
-\ctikzset{tripoles/gm amp/port width/.initial=.7}
-\ctikzset{tripoles/gm amp/height/.initial=1.4}
-\ctikzset{tripoles/gm amp/input height/.initial=.5}
-\ctikzset{tripoles/gm amp/up pos/.initial=.45}
-\ctikzset{tripoles/plain amp/width/.initial=1.7}
-\ctikzset{tripoles/plain amp/port width/.initial=.7}
-\ctikzset{tripoles/plain amp/height/.initial=1.4}
-\ctikzset{tripoles/plain amp/input height/.initial=.5}
-\ctikzset{tripoles/plain amp/up pos/.initial=.45}
-
-\ctikzset{tripoles/thyristor/height/.initial=1.10}
-\ctikzset{tripoles/thyristor/height 2/.initial=.5}
-\ctikzset{tripoles/thyristor/width/.initial=1.0}
-\ctikzset{tripoles/thyristor/diode height/.initial=.5}
-\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
-\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
-\ctikzset{tripoles/triac/height/.initial=1.1}
-\ctikzset{tripoles/triac/width/.initial=1}
-\ctikzset{tripoles/triac/diode width left/.initial=.3}
-\ctikzset{tripoles/triac/diode width right/.initial=.3}
-
-\ctikzset{tripoles/spdt/width/.initial=.85}
-\ctikzset{tripoles/spdt/height/.initial=.45}
-\ctikzset{tripoles/spdt/margin/.initial=.45}
-
-\ctikzset{tripoles/toggleswitch/height/.initial=.8}
-\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
-\ctikzset{tripoles/toggleswitch/width/.initial=.80}
-
-\ctikzset{tripoles/mixer/width/.initial=0.7}
-\ctikzset{tripoles/adder/width/.initial=0.7}
-\ctikzset{tripoles/circulator/width/.initial=.7}
-\ctikzset{tripoles/oscillator/width/.initial=.7}
-
-
-\ctikzset{tripoles/wilkinson/height/.initial=1.3}
-\ctikzset{tripoles/wilkinson/width/.initial=1.3}
-
-\ctikzset{quadpoles/transformer/width/.initial=1.5}
-\ctikzset{quadpoles/transformer/width1/.initial=.4}
-\ctikzset{quadpoles/transformer/height/.initial=1.5}
-\ctikzset{quadpoles/transformer/height1/.initial=.8}
-\ctikzset{quadpoles/transformer core/width/.initial=1.5}
-\ctikzset{quadpoles/transformer core/height/.initial=1.5}
-\ctikzset{quadpoles/transformer core/core height/.initial=.5}
-\ctikzset{quadpoles/transformer core/core width/.initial=.05}
-\ctikzset{quadpoles/gyrator/width/.initial=1.5}
-\ctikzset{quadpoles/gyrator/height/.initial=1.5}
-\ctikzset{quadpoles/fourport/width/.initial=1.3}
-\ctikzset{quadpoles/fourport/height/.initial=1.3}
-\ctikzset{quadpoles/coupler/width/.initial=1.3}
-\ctikzset{quadpoles/coupler/height/.initial=1.3}
-\ctikzset{quadpoles/coupler2/width/.initial=1.3}
-\ctikzset{quadpoles/coupler2/height/.initial=1.3}
-
-% %Mechanical section
-\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
-\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
-\ctikzset{bipoles/spring/height/.initial=.5}
-\ctikzset{bipoles/spring/width/.initial=.5}
-\ctikzset{bipoles/mass/height/.initial=.55}
-\ctikzset{bipoles/mass/box height/.initial=.4}
-\ctikzset{bipoles/mass/width/.initial=.5}
-
-\ctikzset{bipoles/damper/height/.initial=.35}
-\ctikzset{bipoles/damper/length/.initial=.3}
-\ctikzset{bipoles/damper/width/.initial=.4}
-
-
-\ctikzset{bipole/.is family}
-\ctikzset{bipole/kind/.initial = }
-\ctikzset{bipole/name/.initial = }
-\newif\ifpgf@circuit@bipole@reversed
-\ctikzset{bipole/reversed/.is if=pgf@circuit@bipole@reversed}
-\newif\ifpgf@circuit@bipole@isvoltage
-\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
-\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
-\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
-\newif\ifpgf@circuit@bipole@strokedsymbol
-\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
-\newif\ifpgf@circuit@bipole@iscurrent
-\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
-
-\ctikzset{bipole/voltage/.is family}
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-\newif\ifpgf@circuit@bipole@voltage@below
-\ctikzset{bipole/voltage/position/.is choice}
-\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
-\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
-
-\ctikzset{bipole/voltage/label/unit/.initial=}
-\ctikzset{bipole/voltage/label/name/.initial=}
-
-\ctikzset{bipole/current/.is family}
-\newif\ifpgf@circuit@bipole@current@backward
-\ctikzset{bipole/current/direction/.is choice}
-\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
-\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
-\newif\ifpgf@circuit@bipole@current@before
-\ctikzset{bipole/current/x position/.is choice}
-\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
-\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
-\newif\ifpgf@circuit@bipole@current@below
-\ctikzset{bipole/current/y position/.is choice}
-\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
-\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
-
-\ctikzset{bipole/current/label/unit/.initial=}
-\ctikzset{bipole/current/label/name/.initial=}
-
-\ctikzset{bipole/label/.is family}
-\ctikzset{bipole/label/position/.initial=90}
-\ctikzset{bipole/label/unit/.initial=}
-\ctikzset{bipole/label/name/.initial=}
-\ctikzset{bipole/nodes/.is family}
-\ctikzset{bipole/nodes/left/.is choice}
-\ctikzset{bipole/nodes/left/none/.code={\ctikzsetvalof{bipole/nodes/left}{none}}}
-\ctikzset{bipole/nodes/left/empty/.code={\ctikzsetvalof{bipole/nodes/left}{empty}}}
-\ctikzset{bipole/nodes/left/full/.code={\ctikzsetvalof{bipole/nodes/left}{full}}}
-\ctikzset{bipole/nodes/left/diamond/.code={\ctikzsetvalof{bipole/nodes/left}{diamond}}}
-\ctikzset{bipole/nodes/right/.is choice}
-\ctikzset{bipole/nodes/right/none/.code={\ctikzsetvalof{bipole/nodes/right}{none}}}
-\ctikzset{bipole/nodes/right/empty/.code={\ctikzsetvalof{bipole/nodes/right}{empty}}}
-\ctikzset{bipole/nodes/right/full/.code={\ctikzsetvalof{bipole/nodes/right}{full}}}
-\ctikzset{bipole/nodes/right/diamond/.code={\ctikzsetvalof{bipole/nodes/right}{diamond}}}
-
-
-
-
-\newif\ifpgf@circuit@europeanresistor
-\ctikzset{resistor/.is choice}
-\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
-\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
-
-\ctikzset{inductor/.is choice}
-\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
-\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
-\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
-
-\newif\ifpgf@circuit@strokediode
-\newif\ifpgf@circuit@fulldiode
-\pgf@circuit@strokediodefalse
-\pgf@circuit@fulldiodefalse
-
-\ctikzset{diode/.is choice}
-\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
-\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
-\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
-
-\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full }}
-\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty }}
-\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke }}
-
-\ctikzset{thickness/.initial=2}
-\ctikzset{color/.initial=black}
-\pgfkeys{/tikz/color/.add code={}{\ctikzset{color=#1}}}
-
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circ@siunitx@res
-
-\ctikzset{voltage/.is family}
-\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
-\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
-\ctikzset{voltage/bump a/.initial=1.2}
-\ctikzset{voltage/bump b/.initial=1.5}
-\ctikzset{voltage/european label distance/.initial=1.4}
-\ctikzset{voltage/american label distance/.initial=1.1}
-% special cases
-\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
-\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
-\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
-\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
-\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
-%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
-%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
-
-\ctikzset{current/.is family}
-\ctikzset{current/distance/.initial = .5}
-
-\tikzset{american currents/.style = { \circuitikzbasekey/current = american } }
-\tikzset{european currents/.style = { \circuitikzbasekey/current = european } }
-\tikzset{american voltages/.style = { \circuitikzbasekey/voltage = american } }
-\tikzset{european voltages/.style = { \circuitikzbasekey/voltage = european } }
-\tikzset{american resistors/.style = { \circuitikzbasekey/resistor = american } }
-\tikzset{european resistors/.style = { \circuitikzbasekey/resistor = european } }
-
-\newif\ifpgf@circuit@europeangfsurgearrester
-\ctikzset{gas filled surge arrester/.is choice}
-\ctikzset{gas filled surge arrester/european/.code= {\pgf@circuit@europeangfsurgearrestertrue } }
-\ctikzset{gas filled surge arrester/american/.code= {\pgf@circuit@europeangfsurgearresterfalse } }
-
-\tikzset{american gas filled surge arrester/.style = { \circuitikzbasekey/gas filled surge arrester = american } }
-\tikzset{european gas filled surge arrester/.style = { \circuitikzbasekey/gas filled surge arrester = european } }
-\tikzset{american inductors/.style = { \circuitikzbasekey/inductor = american } }
-\tikzset{european inductors/.style = { \circuitikzbasekey/inductor = european } }
-\tikzset{cute inductors/.style = { \circuitikzbasekey/inductor = cute } }
-\tikzset{american ports/.style = { \circuitikzbasekey/logic ports = american } }
-\tikzset{european ports/.style = { \circuitikzbasekey/logic ports = european } }
-\tikzset{european/.style = { european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester } }
-\tikzset{american/.style = { american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester } }
-\tikzset{cute/.style = { european currents, european voltages, american resistors, cute inductors, american ports } }
-
-% I should try to make the tree clearer (this voltaege conflicts with the options above)
-
-\newif\ifpgf@circuit@europeanvoltage
-\ctikzset{voltage/.is choice}
-\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse } }
-\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue } }
-
-\newif\ifpgf@circuit@europeancurrent
-\ctikzset{current/.is choice}
-\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse }
-\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue }
-
-\ctikzset{label/align/.is choice}
-\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
-\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
-\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
-
-%%%%%%%%%% new
-\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
-%%%---------- close: tex/pgfcirc.defines
-%%%%%%%%%%% Springe nach tex/pgfcircutils
-%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%\def\pgf@circ@handleSI#1{%
- % \pgf@circ@siunitx@resfalse
-%
- % \edef\len{\stringlength[e]{#1}}
- %\testmatchingchar[e]{#1}{\len}{>}%
- %\ifmatchingchar%
- % \ifnum\findchars{#1}{<}=0
- % \def\pgf@circ@handleSI@val{\substring{#1}{1}{\findchars{#1}{<}-1}}
- %\def\pgf@circ@handleSI@unit{\substring{#1}{\findchars{#1}{<}-1}+1}{\stringlength{#1}}
- %\pgf@circ@siunitx@restrue
-% \else
-% \fi
- %\else
- %\fi
-%}
-
-\def\pgf@circ@handleSI#1{
- \noexpandarg
- \def\pgf@temp{}
- \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
- \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
-
- \ifnum\pgf@circ@handleSI@unit@len=0
- \pgf@circ@siunitx@resfalse
- \else
- \IfEndWith{#1}{>}{
- \pgf@circ@siunitx@restrue
- \noexpandarg
- \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
- %\typeout{si |#1|}
- }{
- \pgf@circ@siunitx@resfalse
- %\typeout{no si |#1|}
- }
- \fi
-}
-
-\def\pgf@circ@finallabel#1{%
- \edef\pgf@temp{}%
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1label/unit}}%
- \ifx\pgf@temp\pgf@circ@temp%
- \ctikzvalof{bipole/#1label/name}%
- \else%
- $\SI{\ctikzvalof{bipole/#1label/name}}{\ctikzvalof{bipole/#1label/unit}}$%
- \fi%
-}
-
-\def\pgf@circ@ifkeyempty#1{
- \pgfextra{
- \ctikzset{#1/.get=\pgf@circ@temp}
- \edef\pgf@temp{}
- }
- \ifx\pgf@circ@temp\pgf@temp
-}
-
-%%%---------- close: tex/pgfcircutils
-%%%%%%%%%%% Springe nach tex/pgfcircmath
-%%%---------- open: tex/pgfcircmath.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Math routines
-
-\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
-
-% angle between 0 and 360
-\def\pgf@circ@slope#1#2{%
- \pgf@process{#1}%
- \pgf@xa=\pgf@x%
- \pgf@ya=\pgf@y%
- \pgf@process{#2}%
- \advance\pgf@x by-\pgf@xa%
- \advance\pgf@y by-\pgf@ya%
- \ifdim\pgf@x<0.1pt
- \ifdim\pgf@x>-0.1pt % vertical
- \ifdim\pgf@y<0pt
- \def\pgfmathresult{-90.0}
- \else
- \def\pgfmathresult{+90.0}
- \fi
- \else % oblique with dx < 0
- \pgfmathdivide{\pgf@y}{\pgf@x}
- \pgfmathatan{\pgfmathresult}
- \ifdim\pgf@x<0pt
- \pgfmathsubtract{\pgfmathresult}{+180}
- \fi
- \fi
- \else % oblique with dx > 0
- \pgfmathdivide{\pgf@y}{\pgf@x}
- \pgfmathatan{\pgfmathresult}
- \ifdim\pgf@x<0pt
- \pgfmathsubtract{\pgfmathresult}{+180}
- \fi
- \fi
- \pgf@x=\pgfmathresult pt
- \ifdim\pgf@x<0pt
- \pgfmathadd{\pgfmathresult}{+360}
- \fi
- }
-
-
-%%%---------- close: tex/pgfcircmath
-
-%%%%%%%%%%% Springe nach tex/pgfcircshapes
-%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Other shapes
-
-
-%% Nothing
-
-\pgfdeclareshape{emptyshape}{
- \savedanchor{\northeast}{%
- \pgf@x=.5\wd\pgfnodeparttextbox%
- \pgf@y=.5\ht\pgfnodeparttextbox%
- }
- \anchor{north}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{east}{%
- \northeast
- \pgf@y=0cm
- }
- \anchor{south}{%
- \northeast
- \pgf@y=-\pgf@y
- \pgf@x=0cm
- }
- \anchor{west}{
- \northeast
- \pgf@y=0cm
- \pgf@x=-\pgf@x
- }
- \anchor{text}{%
- \pgfpointorigin
- }
- \anchor{center}{
- \pgfpointorigin
- }
-}
-
-%% Full terminal
-
-\pgfdeclareshape{circ}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
-}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}}
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Empty terminal
-
-\pgfdeclareshape{ocirc}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
-}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}}
- }
-
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetfillcolor{white}
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Diamond terminal
-
-\pgfdeclareshape{diamond}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- \pgftransformrotate{45}
- \pgfpathrectanglecorners
- {\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@temp}{\pgf@circ@res@up+\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up-\pgf@circ@res@temp}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% Current arrow
-
-\pgfdeclareshape{currarrow}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \divide \pgf@circ@res@step by 16
-
- \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
-
- \endpgfscope
- }
-
-}
-
-%% Current arrow
-
-\pgfdeclareshape{inputarrow}{
- \savedanchor{\tip}{
- \pgfpointorigin
- }
- \anchor{center}{
- \tip
- }
- \anchor{tip}{
- \tip
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \divide \pgf@circ@res@step by 16
-
- \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{fill}
-
- \endpgfscope
- }
-
-}
-
-
-%% box
-
-\pgfdeclareshape{box}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@circ@res@step = 0.5\pgf@circ@res@step
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-
-}
-
-%%%---------- close: tex/pgfcircshapes
-%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
-%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Monopoles
-
-%% Ground symbol
-
-\pgfdeclareshape{ground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-
-}
-
-
-
-\pgfdeclareshape{rground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{tground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- %\pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{sground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
- \pgfpathclose
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-
-}
-
-% noiseless ground
-\pgfdeclareshape{nground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{1.3\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpatharc{0}{180}{1.3\pgf@circ@res@step}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \endpgfscope
- }
-}
-
-% protective ground
-\pgfdeclareshape{pground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathcircle{\pgfpoint{0pt}{-\pgf@circ@res@step}} {1.2\pgf@circ@res@step}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \endpgfscope
- }
-}
-
-% chassis ground
-\pgfdeclareshape{cground}{
-\anchor{center}{
- \pgfpointorigin
-}
-\behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/chassis/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-1.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% Contributed by Leonardo Azzinnari
-\pgfdeclareshape{tlinestub}{
- \anchor{center}{\pgfpointorigin}
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
-
- \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-
-
-
-\pgfdeclareshape{antenna}{
-\anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
- \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=6\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
-
- % \pgfpathmoveto{\pgfpointorigin}
- % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- % \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgftransformxshift{ -4\pgf@circ@res@step }
-
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
- }
-
-
-\pgfdeclareshape{txantenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
- \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=6\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
-% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
- }
-
-
-\pgfdeclareshape{rxantenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
- \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=6\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
-% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
-}
-
-% Vcc
-\pgfdeclareshape{vcc}{
-\anchor{center}{\pgfpointorigin}
-\anchor{text}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=2\pgf@circ@res@step
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
-\behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
-}
-
-}
-
-% Vee
-\pgfdeclareshape{vee}{
-\anchor{center}{\pgfpointorigin}
-\anchor{text}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=-2\pgf@circ@res@step
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
-
-\behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
-}
-
-}
-
-
-% match
-\pgfdeclareshape{match}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
- \pgf@x=1.5\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \pgf@y=-1.5\ht\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
- \pgfusepath{fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-
-}
-
-
-%%%---------- close: tex/pgfcircmonopoles
-%%%%%%%%%%% Springe nach tex/pgfcircbipoles
-%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%% Generic macro for defining a bipole shape
-% #1 - additional anchors
-% #2 - lower y-size of the bipole (from the center).
-% #3 - #shape is the name of the shape
-% #4 - upper y-size of the bipole (from the center)
-% #5 - width of the bipole
-% #6 - macros drawing the bipole
-
-
-\long\def\pgfcircdeclarebipole#1#2#3#4#5#6{
- \pgfdeclareshape{#3shape}{
-
- \savedanchor{\northeast}{
- \pgf@y=#4\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\northeastborder}{
- \pgf@y=#4\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwestborder}{
- \pgf@y=-#2\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=-#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwest}{
- \pgf@y=-#2\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\centerpoint}{
- \pgf@circ@res@down=-#2\pgf@circ@Rlen
- \pgf@circ@res@up=#4\pgf@circ@Rlen
- \pgfpointorigin
- \pgf@y=\pgf@circ@res@up
- \advance\pgf@y by\pgf@circ@res@down
- \pgf@y=.5\pgf@y
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{n}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@x=0cm
- }
- \anchor{ne}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- }
- \anchor{nw}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@x=-\pgf@x
- }
- \anchor{e}{%
- \ifpgf@circuit@bipole@reversed\else\southwest\northeast\fi
- \pgf@y=0cm
- }
- \anchor{s}{%
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@x=0cm
- }
- \anchor{se}{%
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@x=-\pgf@x
- }
- \anchor{sw}{%
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- }
- \anchor{w}{
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \anchor{north}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@x=0cm
- }
- \anchor{east}{%
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
- \anchor{south}{%
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@x=0cm
- }
- \anchor{west}{
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \anchor{right}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
- \anchor{above}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@x=0cm
- }
- \anchor{left}{%
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \anchor{below}{%
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@x=0cm
- }
- \anchor{a}{%
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
- \anchor{b} {
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \savedanchor{\textanchor}{%
- \pgf@y=\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \anchor{text}{%
- \textanchor
- }
- \anchorborder{%
- \def\pgf@temp{false}
- \ifpgf@circuit@bipole@reversed\pgf@temp
- \pgf@circ@res@left=-\pgf@x
- \pgf@circ@res@right=-\pgf@y
- \else
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@right=\pgf@y
- \fi
- \ifdim\pgf@circ@res@right>0cm
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
- \else
- \southwestborder
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
- \fi
- }
-
- #1
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@zero = 0cm
- \pgf@circ@res@left = -\pgf@x
- \pgf@circ@res@right = \pgf@x
- \southwest
- \pgf@circ@res@down = \pgf@y
-
- \pgfstartlinewidth=\pgflinewidth
-
- #6
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- }
- }
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Standard bipole shapes declarations
-
-%% Resistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/resistor/height}}{resistor}{\ctikzvalof{bipoles/resistor/height}}{\ctikzvalof{bipoles/resistor/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \divide \pgf@circ@res@step by 12
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-}
-
-
-
-%% Variable resistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vresistor/height}}{vresistor}{\ctikzvalof{bipoles/vresistor/height}}{\ctikzvalof{bipoles/vresistor/width}}{ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \divide \pgf@circ@res@step by 12
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
-
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-%% Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/capacitor/height}}{capacitor}{\ctikzvalof{bipoles/capacitor/height}}{\ctikzvalof{bipoles/capacitor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/capacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-%% Polar Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pcapacitor/height}}{polarcapacitor}{\ctikzvalof{bipoles/pcapacitor/height}}{\ctikzvalof{bipoles/pcapacitor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/pcapacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgftransformrotate{-90}
- \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
-}
-
-%% Electrolytic Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ecapacitor/height}}{ecapacitor}{\ctikzvalof{bipoles/ecapacitor/height}}{\ctikzvalof{bipoles/ecapacitor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/ecapacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
- \pgfsetrectcap
- % % % Draw plus pole
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfsetfillcolor{white}
- \pgfusepath{draw,fill}
- % % Draw minus pole
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfsetfillcolor{black}
- \pgfusepath{draw,fill}
- \pgfsetfillcolor{black}
- % % plus pole annotation
- \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
- {\pgfkeysvalueof{/tikz/circuitikz/bipoles/ecapacitor/font} $+$}
-}
-
-%% Battery
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery/height}}{battery}{\ctikzvalof{bipoles/battery/height}}{\ctikzvalof{bipoles/battery/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 6
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-
-%% Battery 1
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery1/height}}{battery1}{\ctikzvalof{bipoles/battery1/height}}{\ctikzvalof{bipoles/battery1/width}}{
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
-
-
-
-
- \pgfusepath{draw}
-}
-
-
-
-%% cute inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cuteinductor/lower coil height}}{cuteinductor}{\ctikzvalof{bipoles/cuteinductor/height}}{\ctikzvalof{bipoles/cuteinductor/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% variable cute inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}{vcuteinductor}{\ctikzvalof{bipoles/vcuteinductor/height}}{\ctikzvalof{bipoles/vcuteinductor/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% american inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/americaninductor/height 2}}{americaninductor}{\ctikzvalof{bipoles/americaninductor/height}}{\ctikzvalof{bipoles/americaninductor/width}}{
- \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@Rlen
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% variable american inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vamericaninductor/height 2}}{vamericaninductor}{\ctikzvalof{bipoles/vamericaninductor/height}}{\ctikzvalof{bipoles/vamericaninductor/width}}{
- \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@Rlen
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% Independent voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsource/height}}{vsource}{\ctikzvalof{bipoles/vsource/height}}{\ctikzvalof{bipoles/vsource/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-%% Independent voltage source - American style
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourceam/height}}{vsourceAM}{\ctikzvalof{bipoles/vsourceam/height}}{\ctikzvalof{bipoles/vsourceam/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
-
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
- \else
- \ifpgf@circuit@bipole@voltage@backward
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$-$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$+$}
- \fi
- \fi
- \pgfusepath{draw}
-}
-
-
-
-%% Independent sinusoidal voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesin/height}}{vsourcesin}{\ctikzvalof{bipoles/vsourcesin/height}}{\ctikzvalof{bipoles/vsourcesin/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Triangle Voltage source - contributed by Ralf Farkas
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-% contributed by Alistair Kwan
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesquare/height}}{vsourcesquare}{\ctikzvalof{bipoles/vsourcesquare/height}}{\ctikzvalof{bipoles/vsourcesquare/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Triangle Voltage source - contributed by Ralf Farkas
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% Empty Source
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% PV Source
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pvsource/height}}{pvsource}{\ctikzvalof{bipoles/pvsource/height}}{\ctikzvalof{bipoles/pvsource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- %Adapted from battery1
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %Arrow Part
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty Source
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% DC Current Source with open shape
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcisource/height}}{dcisource}{\ctikzvalof{bipoles/dcisource/height}}{\ctikzvalof{bipoles/dcisource/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}}\pgfpatharc{0}{90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}}\pgfpatharc{0}{-90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}\pgfpatharc{180}{270}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}\pgfpatharc{180}{90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \ifpgf@circ@oldvoltagedirection
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \else
- \ifpgf@circuit@bipole@current@backward
- \pgftransformshift{\pgfpoint{-.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgftransformrotate{180}
- \else
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \fi\fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% DC-Voltage source
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcvsource/height}}{dcvsource}{\ctikzvalof{bipoles/dcvsource/height}}{\ctikzvalof{bipoles/dcvsource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
- \pgfusepath{draw}
-}
-
-
-%% Independent current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isource}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Independent double oo source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/oosource/height}}{oosource}{\ctikzvalof{bipoles/oosource/height}}{\ctikzvalof{bipoles/oosource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
- \pgfusepath{draw}
-}
-
-
-%% Independent current source - American
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isourceam/height}}{isourceAM}{\ctikzvalof{bipoles/isourceam/height}}{\ctikzvalof{bipoles/isourceam/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \ifpgf@circ@oldvoltagedirection
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \else
- \ifpgf@circuit@bipole@current@backward
- \pgftransformshift{\pgfpoint{-.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgftransformrotate{180}
- \else
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \fi\fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-
-
-
-%% Independent sinusoidal current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isourcesin}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-
-%% Controlled voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsource/height}}{cvsource}{\ctikzvalof{bipoles/cvsource/height}}{\ctikzvalof{bipoles/cvsource/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% Controlled voltage source - American
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourceam/height}}{cvsourceAM}{\ctikzvalof{bipoles/cvsourceam/height}}{\ctikzvalof{bipoles/cvsourceam/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$-$}
- \pgfusepath{draw}
-}
-
-
-%% Controlled sinusoidal voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cvsourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-%% Controlled sinusoidal current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cisourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-%% Controlled current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisource/height}}{cisource}{\ctikzvalof{bipoles/cisource/height}}{\ctikzvalof{bipoles/cisource/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% Controlled current source - American
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisourceam/height}}{cisourceAM}{\ctikzvalof{bipoles/cisourceam/height}}{\ctikzvalof{bipoles/cisourceam/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{draw}}
- \endpgfscope
-}
-
-%% Black generic diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulldiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black Zener diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black alternative zigzag Zener diode
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black Schottky diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullsdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Black tunnel diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulltdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black light emitting diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulllediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-}
-
-%% Black photodiode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullpdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black varcap
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varcap/height}}{fullvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \endpgfscope
-}
-
-%% Empty generic diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptydiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty Zener diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty alternative zigzag Zener diode
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-%% Empty Schottky diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptysdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty tunnel diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptytdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty light emitting diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptylediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty photodiode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptypdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty varcap
-
-\pgfcircdeclarebipole{
- \anchor{strokepathstart}{
- \northeast
- \pgf@y=0cm
- \pgf@x=.8\pgf@x
- }
- \anchor{strokepathend}{
- \northeast
- \pgf@y=0cm
- }
- }{\ctikzvalof{bipoles/varcap/height}}{emptyvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.8\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \endpgfscope
-}
-
-%% SPST
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{spst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@left}{.9\pgf@circ@res@up}}
- \pgfpatharc{65}{25}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
- %\pgfsetarrowsend{latex'}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.1\pgf@circ@res@right}{-.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.14\pgf@circ@res@right}{-.35\pgf@circ@res@up}}
- \pgfsetarrowsend{latex'}
- \pgfusepath{draw}
-
-}
-
-%% Closing SPST
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{cspst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@left}{.9\pgf@circ@res@up}}
- \pgfpatharc{65}{25}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
- %\pgfsetarrowsend{latex'}
- \pgfusepath{draw}
-
-}
-
-%% Opening SPST
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{ospst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@right}{.1\pgf@circ@res@down}}
- \pgfpatharc{15}{50}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
- %\pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.85\pgf@circ@res@left}{1.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.87\pgf@circ@res@left}{1.26\pgf@circ@res@up}}
- \pgfsetarrowsend{latex'}
- \pgfusepath{draw}
-
-
-}
-
-
-%% Push Button
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pushbutton/height 2}}{pushbutton}{\ctikzvalof{bipoles/pushbutton/height}}{\ctikzvalof{bipoles/pushbutton/width}}{
-
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-
-%METERINGSHAPE
-\long\def\drawmeteringcircle{
- \def\pgf@circ@temp{right}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \def\pgf@circ@temp{below}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \pgf@circ@res@step=1.2\pgf@circ@res@up
- \fi
- \fi
- %draw connections to circle
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- %draw circle
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgfusepath{draw}
- \endpgfscope
- %draw arrow
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-%AMPEREMETER
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ammeter/height}}{ammeter}{\ctikzvalof{bipoles/ammeter/height}}{\ctikzvalof{bipoles/ammeter/width}}{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\textbf{A}}{}{}
-}
-%OHMMETER
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ohmmeter/height}}{ohmmeter}{\ctikzvalof{bipoles/ohmmeter/height}}{\ctikzvalof{bipoles/ohmmeter/width}}{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
-}
-%VOLTMETER
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/voltmeter/height}}{voltmeter}{\ctikzvalof{bipoles/voltmeter/height}}{\ctikzvalof{bipoles/voltmeter/width}}{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\textbf{V}}{}{}
-
-}
-
-%% Short circuit
-
-\pgfcircdeclarebipole{}{0}{short}{0}{0}{ }
-
-%% Open circuit
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/open/height}}{open}{\ctikzvalof{bipoles/open/height}}{\ctikzvalof{bipoles/open/width}}{
-
-}
-
-%% Generic bipole - used as resistor by some (bleah)
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/generic/height}}{generic}{\ctikzvalof{bipoles/generic/height}}{\ctikzvalof{bipoles/generic/width}}{
-
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-}
-
-
-%% fuse
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fuse/height}}{fuse}{\ctikzvalof{bipoles/fuse/height}}{\ctikzvalof{bipoles/fuse/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-}
-
-
-
-%% Generic bipole, filled - used as inductor by some (bleah)
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fullgeneric/height}}{fullgeneric}{\ctikzvalof{bipoles/fullgeneric/height}}{\ctikzvalof{bipoles/fullgeneric/width}}{
-
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw,fill}
-}
-
-
-%% Generic asymmetric bipole
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ageneric/height}}{ageneric}{\ctikzvalof{bipoles/ageneric/height}}{\ctikzvalof{bipoles/ageneric/width}}{
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-%% asymmetric fuse
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/afuse/height}}{afuse}{\ctikzvalof{bipoles/afuse/height}}{\ctikzvalof{bipoles/afuse/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-
-
-%% Memristor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/memristor/height}}{memristor}{\ctikzvalof{bipoles/memristor/height}}{\ctikzvalof{bipoles/memristor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-
-
-%% Generic empty tunable
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tgeneric/height}}{tgeneric}{\ctikzvalof{bipoles/tgeneric/height}}{\ctikzvalof{bipoles/tgeneric/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Photoresistor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/photoresistor/height 2}}{photoresistor}{\ctikzvalof{bipoles/photoresistor/height}}{\ctikzvalof{bipoles/photoresistor/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-%% Thermistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistor/height}}{thermistor}{\ctikzvalof{bipoles/thermistor/height}}{\ctikzvalof{bipoles/thermistor/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- %\pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- %\endpgfscope
-}
-
-
-%% Thermistor PTC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorptc/height 2}}{thermistorptc}{\ctikzvalof{bipoles/thermistorptc/height}}{\ctikzvalof{bipoles/thermistorptc/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Thermistor NTC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorntc/height 2}}{thermistorntc}{\ctikzvalof{bipoles/thermistorntc/height}}{\ctikzvalof{bipoles/thermistorntc/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% thermocouple
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermocouple/height 2}}{thermocouple}{\ctikzvalof{bipoles/thermocouple/height}}{\ctikzvalof{bipoles/thermocouple/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-}
-
-%% Varistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varistor/height}}{varistor}{\ctikzvalof{bipoles/varistor/height}}{\ctikzvalof{bipoles/varistor/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\tiny\textsf{U}}}
-}
-
-
-
-%% Generic full tunable
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tfullgeneric/height}}{tfullgeneric}{\ctikzvalof{bipoles/tfullgeneric/height}}{\ctikzvalof{bipoles/tfullgeneric/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw,fill}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-
-
-
-%% Variable Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcapacitor/height}}{vcapacitor}{\ctikzvalof{bipoles/vcapacitor/height}}{\ctikzvalof{bipoles/vcapacitor/width}}{
- %\pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/width}\pgf@circ@Rlen
- \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfusepath{draw}
-}
-
-
-%% Piezoelectric Element
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piezoelectric/height}}{piezoelectric}{\ctikzvalof{bipoles/piezoelectric/height}}{\ctikzvalof{bipoles/piezoelectric/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- %% Outer markings
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %% Inner Box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left+4}{\pgf@circ@res@up-1}}{\pgfpoint{\pgf@circ@res@right-4}{\pgf@circ@res@down+1}}
- \pgfusepath{draw}
-
-}
-
-
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Handling of terminals
-
-
-%% Easily usable styles
-
-\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=diamond}}
-\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamond}}
-\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=diamond}}
-\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=diamond}}
-
-\tikzset{reversed/.style = {\circuitikzbasekey/bipole/reversed=true}}
-
-
-%% The output routine
-
-\def\drawpoles{
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{diamond} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztostart) node[diamond] {} }
- \else
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{empty} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztostart) node[ocirc] {} }
- \else
- \pgfextra{ \def\pgf@temp{full} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztostart) node[circ] {} }
- \fi
- \fi
- \fi
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} \def\pgf@temp{diamond} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztotarget) node[diamond] {} }
- \else
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} \def\pgf@temp{empty} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztotarget) node[ocirc] {} }
- \else
- \pgfextra{ \def\pgf@temp{full} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztotarget) node[circ] {} }
- \fi
- \fi
- \fi
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-%% Lamp
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lamp/height}}{lamp}{\ctikzvalof{bipoles/lamp/height}}{\ctikzvalof{bipoles/lamp/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tline/height}
- }{tline}{\ctikzvalof{bipoles/tline/height}
- }{\ctikzvalof{bipoles/tline/width}
- }
- {
- \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0}}
- {\pgfpoint{\pgf@circ@res@step}{0}}
- {\pgfpoint{0}{-\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% SQUID added by Cor Molenaar 5 March 2010
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/squid/height}}{squid}{\ctikzvalof{bipoles/squid/height}}{\ctikzvalof{bipoles/squid/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-
-
-% Generic barrier added by Cor Molenaar 5 March 2010
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/barrier/height}}{barrier}{\ctikzvalof{bipoles/barrier/height}}{\ctikzvalof{bipoles/barrier/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
-
- \pgfusepath{draw}
-}
-
-
-% Contributed by Danilo Piazzalunga
-
-\pgfdeclareshape{buffer}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- }
- }
-
-
-
-
-
-\pgfdeclareshape{plain amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
-
-
-
- }
- }
-
-%% Generic two port box
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/twoport/height}}{twoport}{\ctikzvalof{bipoles/twoport/height}}{\ctikzvalof{bipoles/twoport/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
-}
-
-%% voltage controled oscillator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vco/width}}{vco}{\ctikzvalof{bipoles/twoport/width}}{\ctikzvalof{bipoles/vco/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw circle
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
-}
-
-%% bandpass filter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bandpass/width}}{bandpass}{\ctikzvalof{bipoles/bandpass/width}}{\ctikzvalof{bipoles/bandpass/width}}{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% highpass filter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/highpass/width}}{highpass}{\ctikzvalof{bipoles/highpass/width}}{\ctikzvalof{bipoles/highpass/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% lowpass filter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lowpass/width}}{lowpass}{\ctikzvalof{bipoles/lowpass/width}}{\ctikzvalof{bipoles/lowpass/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% ADC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/adc/width}}{adc}{\ctikzvalof{bipoles/adc/width}}{\ctikzvalof{bipoles/adc/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{A}
- \def\textii{D}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{A}
- \def\textii{D}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DAC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dac/width}}{dac}{\ctikzvalof{bipoles/dac/width}}{\ctikzvalof{bipoles/dac/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{D}
- \def\textii{A}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{D}
- \def\textii{A}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DSP
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dsp/width}}{dsp}{\ctikzvalof{bipoles/dsp/width}}{\ctikzvalof{bipoles/dsp/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{DSP}}
-}
-
-%% FFT
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fft/width}}{fft}{\ctikzvalof{bipoles/fft/width}}{\ctikzvalof{bipoles/fft/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{FFT}}
-}
-
-%% Amplifier
-\pgfcircdeclarebipole{}{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{amp}{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
-
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgfusepath{draw}
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-}
-
-
-%% variable amplifier
-\pgfcircdeclarebipole{}{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{vamp}{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
-
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgfusepath{draw}
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
- % draw arrow
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% pi attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piattenuator/width}}{piattenuator}{\ctikzvalof{bipoles/piattenuator/width}}{\ctikzvalof{bipoles/piattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable pi attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vpiattenuator/width}}{vpiattenuator}{\ctikzvalof{bipoles/vpiattenuator/width}}{\ctikzvalof{bipoles/vpiattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% T attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tattenuator/width}}{tattenuator}{\ctikzvalof{bipoles/tattenuator/width}}{\ctikzvalof{bipoles/tattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable T attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vtattenuator/width}}{vtattenuator}{\ctikzvalof{bipoles/vtattenuator/width}}{\ctikzvalof{bipoles/vtattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% phase shifter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{phaseshifter}{\ctikzvalof{bipoles/phaseshifter/width}}{\ctikzvalof{bipoles/phaseshifter/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-}
-
-%% variable phase shifter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{vphaseshifter}{\ctikzvalof{bipoles/vphaseshifter/width}}{\ctikzvalof{bipoles/vphaseshifter/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% detector
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/detector/width}}{detector}{\ctikzvalof{bipoles/detector/width}}{\ctikzvalof{bipoles/detector/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{0.8\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@fulldiode
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
- \else
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
- \fi
-
-}
-
-
-
-
-%% european gas filled surge arrester
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{european gas filled surge arrester}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{\ctikzvalof{bipoles/european gas filled surge arrester/width}}{
-
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
-}
-
-
-
-
-%% american gas filled surge arrester
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{american gas filled surge arrester}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
- %\def\pgf@circ@temp{right}
- %\ifx\tikz@res@label@pos\pgf@circ@temp
- % \pgf@circ@res@step=-1.2\pgf@circ@res@up
- %\else
-% \def\pgf@circ@temp{below}
-% \ifx\tikz@res@label@pos\pgf@circ@temp
-% \pgf@circ@res@step=-1.2\pgf@circ@res@up
-% \else
-% \pgf@circ@res@step=1.2\pgf@circ@res@up
-% \fi
-% \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfnode{circle}{center}{}{}{}
-
- \pgfscope
- \pgfsetarrowsend{latex}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope{}
-
- %\pgftransformshift{\pgfpoint{.25\pgf@circ@res@left}{.45\pgf@circ@res@down}}
- %\pgfnode{circ}{center}{}{}{}
- %\pgftransformshift{}
- \pgfcircle{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
- \pgfusepath{fill}
-}
-
-% % MECHANICAL SYMBOLS
-
-%% mechanical capacitance - stiffness/spring
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spring/height}}{spring}{\ctikzvalof{bipoles/spring/height}}{\ctikzvalof{bipoles/spring/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% mechanical inductance - mass
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/mass/box height}}{mass}{\ctikzvalof{bipoles/mass/height}}{\ctikzvalof{bipoles/mass/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
-
-\pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-}
-
-%% mechanical resistor - damper
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/damper/height}}{damper}{\ctikzvalof{bipoles/damper/height}}{\ctikzvalof{bipoles/damper/width}}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {\pgf@circ@res@zero}}
- \pgfusepath{stroke}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
-
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{stroke}
-
-}
-
-
-%%%---------- close: tex/pgfcircbipoles
-%%%%%%%%%%% Springe nach tex/pgfcirctripoles
-%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Tripoles
-
-
-
-\pgfdeclareshape{spdt}
- {
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out 1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{out 2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/margin}\pgf@circ@res@left
-
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
- \endpgfscope
-
-
- \pgfscope
- \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
- \pgfpathlineto{
- \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
- {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
- }
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
- }
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% Logic ports
-%%
-
-
-
-
-
-
-\long\def\pgfcircdeclarelogicport#1#2{
- \pgfdeclareshape{american #1 port}
- {
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{in 1}{
- \inOne
- }
- \anchor{in}{
- \inOne
- }
- \anchor{in 2}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-.8\pgf@x
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- #2
-
- }
- }
-}
-
-
-\pgfcircdeclarelogicport{and}{
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@down}}
- \pgfpathcurveto
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {.5\pgf@circ@res@down}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {0pt}}
- \pgfpathcurveto
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {.5\pgf@circ@res@up}}
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-
-\pgfcircdeclarelogicport{nand}{
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{2\pgflinewidth}
-
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathcurveto
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclarelogicport{nor}{
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
-
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-}
-
-
-
-
-\pgfcircdeclarelogicport{or}{
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclarelogicport{xor}{
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/distance}\pgf@circ@res@right+}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-
-
-\pgfcircdeclarelogicport{xnor}{
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/circle width}\pgf@circ@res@right
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/distance}\pgf@circ@res@right+}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
-
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-}
-
-
-\pgfdeclareshape{american not port}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- }
- }
-
-
-
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% #1 - name
-% #2 - text inside
-% #3 - number of inputs
-% #4 - is it a not
-
-\long\def\pgfcircdeclareeurologicport#1#2#3#4{
- \pgfdeclareshape{european #1 port}
- {
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \inOne
- }
- \anchor{in 1}{
- \inOne
- }
- \anchor{in 2}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-.8\pgf@x
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \def\pgf@temp{1}
- \def\pgf@circ@temp{#3}
- \ifx\pgftemp\pgf@circ@temp % one input
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}
- \else % two inputs
- \pgfpathmoveto{
- \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
- %
- \pgfpathmoveto{
- \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
- \fi%
- %
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
- %
- \edef\pgf@temp{not}
- \edef\pgf@circ@temp{#4}
- \ifx\pgf@temp\pgf@circ@temp % is a not
- \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not height}\pgf@circ@res@up}}
- \fi
- %
- \pgfusepath{draw}
- %
- \pgfpathmoveto{\pgfpointorigin}
- \pgftext{#2}
- %
- %
- %
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathrectanglecorners
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-%
-%
- }
- }
-}
-
-
-
-\pgfcircdeclareeurologicport{and}{$\&$}{2}{}
-\pgfcircdeclareeurologicport{or}{$\ge 1$}{2}{}
-\pgfcircdeclareeurologicport{xor}{$=1$}{2}{}
-\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
-\pgfcircdeclareeurologicport{nand}{$\&$}{2}{not}
-\pgfcircdeclareeurologicport{nor}{$\ge 1$}{2}{not}
-\pgfcircdeclareeurologicport{xnor}{$=1$}{2}{not}
-
-\long\def\pgfcircdeclaretransistor#1#2#3{
- \pgfdeclareshape{#1}
- {
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northeast{% upper right
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x=0pt
- }
- \savedanchor\left{%center left
- \pgf@y=0pt
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/width}\pgf@x
- }
- \anchor{text}{
- \northeast
- \pgf@y=.7\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=0.1\pgf@x
- }
- \anchor{pathstart}{ % south
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{pathend}{
- \northeast
- }
- \anchor{north}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \northeast
- \pgf@y=0pt
- }
- \anchor{south}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{south west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- }
- \anchor{north east}{
- \northeast
- }
- \anchor{north west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{south east}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{B}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{base}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{G}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{gate}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{nobase}{
- \left
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@x
- }
- \anchor{nogate}{
- \left
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@x
- }
- \anchor{E}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{emitter}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{C}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{collector}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{D}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{drain}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- #2
- \backgroundpath{
- \pgftransformationadjustments
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- %
- \ifnum \pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction} > 0
- \pgf@circuit@trans@ntypetrue
- \else
- \pgf@circuit@trans@ntypefalse
- \fi
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = \pgf@x
- \left
- \pgf@circ@res@left = \pgf@x
- %
- #3
- % BODY DIODE
- \ifpgf@circuit@fet@bodydiode
- \drawbodydiode{#1}
- \fi
- %
- }
- }
-}
-
-\long\def\drawbodydiode#1{
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgftransformrotate{90}
- \pgftransformscale{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode scale}}
- \ifpgf@circuit@fulldiode
- \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \else
- \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \fi
- \endpgfscope
- %Draw upper connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope{}
- %Draw lower connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope
-}
-
-\long\def\declarebpt#1{
- \pgfcircdeclaretransistor{#1}{}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transiytor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@ntype
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{.5}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}%
- }
- \fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \ifpgf@circuit@bpt@drawphoto
- \pgfscope
- \pgfsetarrowsstart{latex'}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
- \else
- \ifpgf@circuit@bpt@drawbase
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
- \fi
- }
-}
-
-\declarebpt{npn}
-\declarebpt{pnp}
-
-\long\def\declareigbt#1{
-\pgfcircdeclaretransistor{#1}{}
-{
- %draw upper connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- %draw thicker gate lines
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %draw lower connection
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transiytor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@ntype
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{.5}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}%
- }
- \fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- %draw gate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
- \fi
- \pgfusepath{draw}
-}
-}
-
-\declareigbt{pigbt}
-\declareigbt{nigbt}
-\declareigbt{Lnigbt}
-\declareigbt{Lpigbt}
-
-
-\pgfcircdeclaretransistor{nmos}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
-
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-}
-
-
-\pgfcircdeclaretransistor{pmos}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.4}{%
- \pgfpoint%
- {\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
-
-
- \pgfusepath{draw}
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
- \pgfpathcircle{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left - \pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- {\pgf@circ@res@up+\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- \ifpgf@circuit@pmos@emptycircle
- \pgfsetfillcolor{white}
- \fi
- \pgfusepath{draw,fill}
-}
-
-\long\def\drawfetcore#1{
- \pgftransformationadjustments
- %top connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
- \ifpgf@circuit@trans@depletiontype
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \else
-
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.45}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.25}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down*0.25}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \fi
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %Bulk connection line
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- %bottom connection
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- %draw thick gate line
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
-
- \pgftransformlineattime{.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \ifpgf@circuit@trans@ntype
- \else
- \pgftransformrotate{180}
- \fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- % GATE CONNECTION
- \ifpgf@circuit@bpt@drawgate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
- \fi
-
-}
-
-\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
-{\pgfcircdeclaretransistor{#1}{
- \anchor{bulk}{\left\pgf@x=0pt}
- \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
- #2
- }
- {#3}
-}
-
-
-\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nfet}
-}
-
-
-\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pfet}
-}
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfete}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-
-
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
-\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfetebulk}
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-
-
-% N-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{nigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfete}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
-\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfetebulk}
-}
-
-
-% P-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{pigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-\pgfcircdeclaretransistor{njfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint{\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclaretransistor{pjfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.4}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfdeclaretransistorwrapperaddbulk{isfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- % DRAIN CONNECTION
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- % DRAIN
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % GATE, DEPLETION TYPE
- \pgfscope %% added
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth} %% added
- \pgfusepath{draw} %% added
- \endpgfscope %% added
-
- % BULK
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- % SOURCE
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- % GATE
- %\pgfscope
- %\pgfpathmoveto{\pgfpoint
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- %\pgfpathlineto{\pgfpoint
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- %\pgfsetlinewidth{2\pgflinewidth}
- %\pgfusepath{draw}
- %\endpgfscope
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
- % ARROW
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfusepath{draw}
-
- % Wavy lines
- \pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-
-%% Black thyristor
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{anode}{
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \anchor{G}{
- \northeast
- }
- \anchor{cathode}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/thyristor/height 2}}{fullthyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty thyristor
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{anode}{
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \anchor{G}{
- \northeast
- }
- \anchor{cathode}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/thyristor/height 2}}{emptythyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty triac
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{G}{
- \northeast
- }
- \anchor{anode}{
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \anchor{cathode}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/triac/height}}{emptytriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty triac
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{G}{
- \northeast
- }
- \anchor{anode}{
- \ifpgf@circuit@bipole@reversed\northeast\else\southwest\fi
- \pgf@y=0cm
- }
- \anchor{cathode}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/triac/height}}{fulltriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-
-
-
-
-
-
-\pgfcircdeclarebipole{
- \anchor{out 1}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=0cm
- }
- \anchor{out 2}{
- \ifpgf@circuit@bipole@reversed\southwest\else\northeast\fi
- \pgf@y=.8\pgf@y
- }
-}{\ctikzvalof{tripoles/toggleswitch/height 2}}{toggleswitch}{\ctikzvalof{tripoles/toggleswitch/height}}{\ctikzvalof{tripoles/toggleswitch/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetdash{}{0cm}
-}
-
-
-
-
-
-
-
-
-
-
-\pgfdeclareshape{op amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
-
-
-
- }
- }
-
-%%Transkonduktanzverstรคrker
-\pgfdeclareshape{gm amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{0pt}} %
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
- %Umrandung:
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}} %geรคndert startpunkt neu am ausgangsstrich
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{15pt}}%vom Ausgang nach oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-15pt}}%ecke links unten nach rechts unten
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}} %rechts unten zum ausgang
- \pgfusepath{draw}
- \endpgfscope
-
-
-
- }
- }
-
-
-
-%% Potentiometer
-\pgfcircdeclarebipole{
- \anchor{wiper}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
- \anchor{W}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
-}{\ctikzvalof{bipoles/potentiometer/height 2}}{potentiometer}{\ctikzvalof{bipoles/potentiometer/height}}{\ctikzvalof{bipoles/potentiometer/width}}{
-\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-\pgftransformationadjustments
-\pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
-\divide \pgf@circ@res@step by 12
-
-\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
-
-\pgf@circ@res@other = \pgf@circ@res@left
-\advance\pgf@circ@res@other by \pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by \pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
-\pgfsetbeveljoin
-\pgfusepath{draw}
-
-\pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
-\endpgfscope
-}
-
-
-
-
-
-%% Generic tunable
-
-\pgfcircdeclarebipole{
- \anchor{wiper}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
-}{\ctikzvalof{bipoles/generic potentiometer/height 2}}{genericpotentiometer}{\ctikzvalof{bipoles/generic potentiometer/height}}{\ctikzvalof{bipoles/generic potentiometer/width}}{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-\pgfdeclareshape{mixer}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
- \pgf@x=.5\pgf@x
- \else
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@x
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{adder}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
- \pgf@x=.5\pgf@x
- \else
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@x
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{oscillator}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
- \else
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{north}{
- \northwest
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@x=.5\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{text}{
- \pgf@x=-2\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@Rlen{}
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
-
- % draw outer box
- \ifpgf@circuit@boxed{}
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{circulator}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
- \pgf@x=.5\pgf@x
- \else
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@x
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{3}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed{}
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % inner arrow
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
- \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-
-% Wilkinson divider
-\pgfdeclareshape{wilkinson}{
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=.5\pgf@x
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{out2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- % draw inner resisitor - european or american style is recognised
- {
- \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgftransformrotate{90}
-
- % calculate size of resistor
- \ifpgf@circuit@europeanresistor
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{genericshape}{center}{}{pgf@generic}{\pgfusepath{fill}}
- \else
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{resistorshape}{center}{}{pgf@resistor}{\pgfusepath{fill}}
- \fi
- }
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-
-% electromechanical device (motor/generator)
-\pgfdeclareshape{elmech}
-{
- \savedanchor\northwest{
- %\ifpgf@circuit@boxed
- % \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- % \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
- % \pgf@y=.5\pgf@y
- % \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- % \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
- % \pgf@x=.5\pgf@x
- %\else
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/width}\pgf@x
- \pgf@x=.5\pgf@x
- %\fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgfpointorigin
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -.5\ht\pgfnodeparttextbox
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{%
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{top}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathstart}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathend}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{bottom}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@Rlen
- \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- % draw outer box
- % \ifpgf@circuit@boxed
- % \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- % \fi
- % draw outer circle
- %\ifpgf@circuit@boxed
- % \pgf@circ@res@step=.7\pgf@circ@res@step
- % \pgfsetdash{}{0pt} % draw solid circle if boxed
- %\else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- %\fi
- \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfsetfillcolor{black}
- \pgfusepath{draw,fill}
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfsetfillcolor{white}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%%%---------- close: tex/pgfcirctripoles
-%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
-%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Quadripoles
-
-\long\def\pgfcircdeclarequadpole#1#2#3{
- \pgfdeclareshape{#1}
- {
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=.5\pgf@x
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
- }
- \anchor{A2}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{B1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{A1}{
- \northwest
- }
- \anchor{B2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{base}{
- \northwest
- \pgf@x=0pt
- }
- #3
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- %\pgf@circ@Rlen=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
-
- #2
-
- }
- }
-}
-
-
-
-\def\pgf@circ@drawtransformerbasicanchor{
- \pgfkeysvalueof{/tikz/circuitikz/quadpoles/trans/height}
- \anchor{AA2}{
- \northwest
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{AA1}{
- \northwest
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
-}
-
-\def\pgf@circ@drawtransformerbasicbody{
- \def\stretto{.4}
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@down}%
- }
-
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
-
- \endpgfscope
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@up}%
- }
-
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@inductor1}{b}}
-
- \pgfpathmoveto{\pgfpointanchor{pgf@inductor1}{a}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@inductor2}{a}}
-
- \pgfpathmoveto{\pgfpointanchor{pgf@inductor2}{b}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
-}
-
-
-
- % contrib Kristofer M. Monisit
-
- \pgfdeclareshape{fd op amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out +}{
- \northwest
- \pgf@y=.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{out -}{
- \northwest
- \pgf@y=-.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
-
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
-
-
- % Negative output terminal
- \pgfpathmoveto{\pgfpoint
- {0.7\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
-
-
- % Positive output terminal
- \pgfpathmoveto{\pgfpoint
- {0.7\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
-
-
- % Draw them all!
- \pgfusepath{draw}
-
- % Triangle
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- }
- }
-
-
-
-
-\pgfcircdeclarequadpole{transformer}{
-
- \pgf@circ@drawtransformerbasicbody
-
-}{\pgf@circ@drawtransformerbasicanchor}
-
-\pgfcircdeclarequadpole{transformer core}{
-
- \pgf@circ@drawtransformerbasicbody
-
- \pgfmoveto{\pgfpoint%
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgfmoveto{\pgfpoint%
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
-}{\pgf@circ@drawtransformerbasicanchor}
-
-
-\pgfcircdeclarequadpole{gyrator}{
-
- \def\stretto{.4}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{.7*\stretto\pgf@circ@res@down}}
- \pgfpatharc{90}{270}{.7*\stretto\pgf@circ@res@down}
-
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{.7*\stretto\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{.7*\stretto\pgf@circ@res@down}
- \pgfusepath{draw}
-
-}{}
-
-%% four-port
-% defines a general outer box for four-ports
-% TikZ usage:
-% \draw (0,0) node[coupler](coup){\SI{-3}{dB}}
-% (coup.port1) to[short,-o] ++(-1,0)
-%
-
-\long\def\pgfcircdeclarefourport#1#2{
- \pgfdeclareshape{#1}{
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=.5\pgf@x
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{port1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{port4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
- \anchor{1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
-
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % draw inner stuff
- #2
-
- % draw inner text
- \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
- }
- }
-}
-
-% four-port
-\pgfcircdeclarefourport{fourport}{}
-
-
-% straight coupler
-\pgfcircdeclarefourport{coupler}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
-}
-
-% "bended" coupler
-\pgfcircdeclarefourport{coupler2}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
-
-
-}
-%%%---------- close: tex/pgfcircquadpoles
-
-%%%%%%%%%%% Springe nach tex/pgfcirclabel
-%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Bipole label positioning
-
-%% Options
-\ctikzset{label/.style = { l=#1 } }
-\ctikzset{l/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
- \ctikzsetvalof{bipole/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-
-\ctikzset{label above/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l^/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-
-\ctikzset{label below/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-\ctikzset{l_/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-
-
-\def\pgf@circ@drawlabel{
- \pgfextra{
- \edef\pgf@temp{\ctikzvalof{label/align}}
- \def\pgf@circ@temp{straight}
- }
- \ifx\pgf@temp\pgf@circ@temp %straight
- \pgf@circ@drawreglabel
- \else
- \pgfextra{\def\pgf@circ@temp{rotate}}
- \ifx\pgf@temp\pgf@circ@temp %rotate
- \pgf@circ@drawrotlabel
- \else % smart
- \pgf@circ@drawsmartlabel
- \fi
- \fi
-}
-
-\def\pgf@circ@drawsmartlabel{
- \pgfextra{
- %\pgfmathadd{\pgf@circ@direction}{360}
- \pgfmathmod{\pgf@circ@direction}{90}
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- \ifnum \pgfcircmathresult > 20
- \ifnum \pgfcircmathresult < 70 % NON quasi retto
- \pgf@circ@drawrotlabel
- \else
- \pgf@circ@drawreglabel
- \fi
- \else
- \pgf@circ@drawreglabel
- \fi
-}
-
-%% Output routing
-%% #1 - node name
-
-\def\pgf@circ@drawrotlabel{
- \pgfextra{
- % calcolo rotazione label
- \def\pgf@circ@temp{\ctikzvalof{bipole/label/position}} %%% ร ncora label
- \edef\pgfcirclabrot{\pgf@circ@direction} % primo e quarto quadrante
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 90 \ifnum \pgfcircmathresult < 270 % terzo e secondo
- \pgfmathsubtract{\pgf@circ@direction}{180}
- \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \pgfmathadd{\pgf@circ@temp}{180} %%%
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil} %%%
- \fi\fi
-
- \ifnum \ctikzvalof{mirror value} = -1
- \pgfmathadd{\pgf@circ@temp}{180}
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- }
- coordinate (labelcoor) at ($(\ctikzvalof{bipole/name})!2!(\ctikzvalof{bipole/name}.north)$)
- (labelcoor) node [rotate=\pgfcirclabrot] {\pgf@circ@finallabel{}} % c'era un transform shape
-}
-
-\def\pgf@circ@drawreglabel{
- \pgfextra{
- \pgfmathsubtract{\pgf@circ@direction}{90}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
-
- \edef\pgf@circ@temp{\ctikzvalof{bipole/label/position}} %%% ร ncora label
- \ifnum \pgf@circ@temp < 0
- \pgfmathadd{\pgf@circ@labanc}{180}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
-
- \ifnum \ctikzvalof{mirror value} = -1
- \pgfmathadd{\pgf@circ@labanc}{180}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- }
- node [ anchor = \pgf@circ@labanc]
- at (\ctikzvalof{bipole/name}.\pgf@circ@temp) {\pgf@circ@finallabel{}}
-}
-
-
-\ctikzset{text/.style = { t=#1 } }
-\ctikzset{t/.code = {
- \ctikzsetvalof{bipoles/twoport/text}{#1}
-}}
-
-%%%---------- close: tex/pgfcirclabel
-%%%%%%%%%%% Springe nach tex/pgfcircvoltage
-%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Voltage management
-
-
-\ctikzset{v^>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v^</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v_>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-\ctikzset{v_</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-
-% Default position varies whether the component is a voltage source
-% or not
-\ctikzset{v/.code = {
- \ifpgf@circuit@bipole@isvoltage
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \ifpgf@circ@oldvoltagedirection
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \fi
- \fi
- \ifpgf@circ@oldvoltagedirection\else
- \ifpgf@circuit@bipole@iscurrent
- \ifpgf@circuit@bipole@current@backward
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \fi\fi\fi
- \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
- \ctikzsetvalof{bipole/voltage/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- }
-}
-
-\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
-\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
-\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
-\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
-
-
-%% Output routine for generic bipoles
-
-\def\pgf@circ@drawvoltagegeneric{
- \pgfextra{
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@voltage@below\pgf@circuit@bipole@voltage@belowfalse\else\pgf@circuit@bipole@voltage@belowtrue\fi
- \fi
-
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@voltage@angle{90}
- \else
- \def\pgf@circ@voltage@angle{-90}
- \fi
-
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\distacefromnode{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}} }
- { \edef\distacefromnode{\ctikzvalof{voltage/distance from node}} }
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\bumpb{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}} }
- { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
- }
-
- coordinate (pgfcirc@mid) at ($(\tikztostart) ! \distacefromnode ! (\ctikzvalof{bipole/name}.left)$)
- coordinate (pgfcirc@Vfrom) at ($(pgfcirc@mid) ! -\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen ! \pgf@circ@voltage@angle:(\ctikzvalof{bipole/name}.left)$)
-
- coordinate (pgfcirc@mid) at ($(\tikztotarget) ! \distacefromnode ! (\ctikzvalof{bipole/name}.right)$)
- coordinate (pgfcirc@Vto) at ($(pgfcirc@mid) ! \ctikzvalof{voltage/distance from line}\pgf@circ@Rlen ! \pgf@circ@voltage@angle : (\ctikzvalof{bipole/name}.right)$)
-
- \ifpgf@circuit@bipole@voltage@below
- coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
- coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
- \else
- coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
- coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
- \fi
-
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
- node[currarrow, sloped, allow upside down, pos=1] {}
- (pgfcirc@Vfrom)
- \else
- (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
- node[currarrow, sloped, allow upside down, pos=1] {}
- (pgfcirc@Vto)
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
- \else
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
- \fi
- \else
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
- \else
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
- \fi
- \fi
- \fi
-}
-
-%% Output routine for voltage sources
-
-\def\pgf@circ@drawvoltagegenerator{
- \ifpgf@circuit@bipole@voltage@below
- coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-120)$)
- coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-60)$)
- \else
- coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.120)$)
- coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.60)$)
- \fi
-
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vcont2) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont1)
- \else
- (pgfcirc@Vcont1) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont2)
- \fi
-
- \else % american voltage
-
- \ifpgf@circuit@bipole@voltageoutsideofsymbol
- % if it is a battery, must put + and -
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vcont2) node {$-$} (pgfcirc@Vcont1) node {$+$}
- \else
- (pgfcirc@Vcont1) node {$+$} (pgfcirc@Vcont2) node {$-$}
- \fi
- \fi
-
- \fi
-}
-
-%% Output routine
-
-\def\pgf@circ@drawvoltage{ % node name
- \pgfextra{
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{east}
- \else \def\pgf@circ@bipole@voltage@label@anchor{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >284 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
-
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@where{-90}
- \else
- \def\pgf@circ@bipole@voltage@label@where{90}
- \fi
-
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\eudist{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}} }
- { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
- }
-
- \ifpgf@circuit@bipole@isvoltage
- \pgf@circ@drawvoltagegenerator
- \else
- \pgf@circ@drawvoltagegeneric
- \fi
- (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)
- coordinate (Vlab) at ($(\ctikzvalof{bipole/name}.center) !
- \ifpgf@circuit@europeanvoltage\eudist\else\ctikzvalof{voltage/american label distance}\fi !
- (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)$)
- node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=0]
- at (Vlab) { \pgf@circ@finallabel{voltage/} }
-}
-
-
-
-
-
-% coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) !
-% \ctikzvalof{voltage/bump b} !
-% (\ctikzvalof{bipole/name}.-110) $)
-% coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) !
-% \ctikzvalof{voltage/bump b} !
-% (\ctikzvalof{bipole/name}.-70) $)
-% \else
-% coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) !
-% \ctikzvalof{voltage/bump b} !
-% (\ctikzvalof{bipole/name}.110) $)
-% coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) !
-% \ctikzvalof{voltage/bump b} !
-% (\ctikzvalof{bipole/name}.70) $)
-% \fi
-%%%---------- close: tex/pgfcircvoltage
-%%%%%%%%%%% Springe nach tex/pgfcirccurrent
-%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Current handling
-
-%% Options
-
-
-\ctikzset{i^>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i>^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i>_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i^</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i<^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i<_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i/.code = {
-% \ifpgf@circuit@bipole@iscurrent
-% \pgfkeys{\circuitikzbasekey/bipole/current/position=above}
-% \else
-% \pgfkeys{\circuitikzbasekey/bipole/current/position=below}
-% \fi
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above }
- \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
- \ctikzsetvalof{bipole/current/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-%reverse current direction for voltage sources
- \ifpgf@circ@oldvoltagedirection\else
- \ifpgf@circuit@bipole@isvoltage
- \ifpgf@circuit@bipole@voltage@backward
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below }
- \else
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above }
- \fi\fi\fi
-}
-}
-
-
-\ifpgf@circ@oldvoltagedirection
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
-\else
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
-\fi
-\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
-\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
-\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
-
-
-\def\pgf@circ@drawnormalcurrent{
- \ifpgf@circuit@bipole@current@before
- \ifpgf@circuit@bipole@current@backward
- { (\ctikzvalof{bipole/name}.left) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\tikztostart)
- }
- \else
- { (\tikztostart) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\ctikzvalof{bipole/name}.left)
- }
- \fi
- \else
- \ifpgf@circuit@bipole@current@backward
- { (\tikztotarget) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\ctikzvalof{bipole/name}.right)
- }
- \else
- { (\ctikzvalof{bipole/name}.right) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\tikztotarget)
- }
- \fi
- \fi
-}
-
-%% Output routine
-%% #1 - node name
-
-\def\pgf@circ@drawcurrent{
- \pgfextra{
- \edef\pgf@circ@ffffff{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >284 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- \ifnum\pgfcircmathresult >355
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
-
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@bipole@current@label@where{-90}
- \else
- \def\pgf@circ@bipole@current@label@where{+90}
- \fi
- }
-
-
- \pgfextra{ \def\pgf@temp{short} \edef\pgf@circ@temp{\ctikzvalof{bipole/kind}} }
-
- \ifx\pgf@circ@temp\pgf@temp % caso di corrente (centrata) su un corto
- \ifpgf@circuit@bipole@current@backward
- { (\tikztotarget) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\tikztostart) }
- \else
- { (\tikztostart) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\tikztotarget) }
- \fi
-
- \else % altri bipoli - e quindi tra nodo e target
-
- \ifpgf@circuit@bipole@iscurrent
- \ifpgf@circuit@europeancurrent
- \pgf@circ@drawnormalcurrent
- \else
- \fi
- \else
- \pgf@circ@drawnormalcurrent
- \fi
- \fi
-
- \ifpgf@circuit@bipole@iscurrent
- node [anchor=\pgf@circ@dir] at (\ctikzvalof{bipole/name}.\pgf@circ@bipole@current@label@where)
- { \pgf@circ@finallabel{current/} }
- \else
- (Iarrow.\pgf@circ@bipole@current@label@where) node [anchor=\pgf@circ@dir]
- { \pgf@circ@finallabel{current/} }
- \fi
-
-}
-
-
-
-
-%%%---------- close: tex/pgfcirccurrent
-
-\ExecuteOptions{nofetbodydiode,nofetsolderdot,nooldvoltagedirection,europeancurrents,europeanvoltages,americanports,americanresistors,cuteinductors,europeangfsurgearrester,nosiunitx,noarrowmos,smartlabels,nocompatibility}
-
-\ProcessOptions\relax
-
-%%%%%%%%%%% Springe nach tex/pgfcircpath
-%%%---------- open: tex/pgfcircpath.tex
-
-\pgf@circ@Rlen = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
-
-
-% Names
-\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
-\ctikzset{n/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/name=#1}
-}}
-
-% Reflect the node along
-\ctikzset{mirrored/.is choice}
-\ctikzset{mirror value/.initial=1}
-\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
-\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
-\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
-
-% Initialize paths
-\def\pgfcircresetpath{
- \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90,
- bipole/reversed=false, bipole/kind=,
- bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
- bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
- bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
- bipole/current/y position=above, bipole/current/direction=forward,
- mirrored=false
- }
-}
-
-
-%% Generic bipole path
-\def\pgf@circ@bipole@path#1#2{
- \pgfextra{
- \ctikzset{bipole/kind = #1}
-
- \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
- \def\pgf@circ@temp{}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = #2\pgf@circ@rand} % create it
- \fi
-
- \def\pgf@temp{open}
- \def\pgf@circ@temp{#1}
- }
- \ifpgf@circuit@bipole@reversed
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- \else
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- \fi
- \pgfextra{
- \pgf@circ@slope{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \edef\pgf@circ@direction{\pgfmathresult}
- }
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)
- node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}]
- (\ctikzvalof{bipole/name}) {}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- \else
- \ifpgf@circuit@bipole@strokedsymbol%draw line thrue symbol(e.g. diodes)
- \ifcsname pgf@anchor@#1shape@strokepathstart\endcsname%if special path-anchors are defined, use them!
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.strokepathstart)
- (\ctikzvalof{bipole/name}.strokepathend) -- (\ctikzvalof{bipole/name}end.center)
- \else
- (\ctikzvalof{bipole/name}start.center)--(\ctikzvalof{bipole/name}end.center)
- \fi
- \else
- \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
- (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
- \else
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
- (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
- \fi
- \fi
- \fi
- \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabel\fi
- \drawpoles
- \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
- \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
- % reset
- \pgfextra{
- \pgfcircresetpath
- }
- (\tikztotarget) \tikztonodes % e si continua
-}
-
-
-%% Path definitions
-
-\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
-\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
-\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
-\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
-\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
-\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
-\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
-\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
-\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
-\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
-\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
-\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
-\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
-\def\pgf@circ@battery1@path#1{\pgf@circ@bipole@path{battery1}{#1}}
-\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
-\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
-\def\pgf@circ@inductor@path#1{%
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@europeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@cuteinductor@path{#1}%
- \else%
- \pgf@circ@americaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@vinductor@path#1{
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@veuropeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@vcuteinductor@path{#1}%
- \else%
- \pgf@circ@vamericaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
-\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
-\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
-\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
-\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
-\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
-\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
-\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
-\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
-\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
-\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
-\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
-\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
-\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
-\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
-\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
-\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
-\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
-\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
-\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
-\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
-\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
-\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
-\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
-\def\pgf@circ@spst@path#1{\pgf@circ@bipole@path{spst}{#1}}
-\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
-\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
-\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
-\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
-\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
-\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
-\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
-\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
-\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
-\def\pgf@circ@empty@path#1{}
-\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
-\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
-\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
-\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
-\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
-\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
-\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
-\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
-\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
-\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
-\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
-\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
-\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
-
-\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
-\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
-\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
-
-\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
-\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
-\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
-\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
-\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
-\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
-\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
-\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
-\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
-\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
-\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
-\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
-\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
-\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
-\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
-\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
-\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
-\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
-
-%%Mechanical
-\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
-\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
-\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
-
-
-
-
-%% Styles
-
-\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
-\def\compattikzset#1{\tikzset{\comnpatname#1}}
-
-%\def\ctikzsetbipole#1#2{%
-% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
-%}
-
-\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
-\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
-\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
-\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
-\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
-\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
-\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
-\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
-\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
-\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
-\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
-\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
-\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
-\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
-\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
-\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
-\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
-\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
-\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
-\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
-\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
-\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery1@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
-\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
-\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
-\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
-\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
-\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
-\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
-\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
-\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
-\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
-\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
-\compattikzset{transmission line/.style = {tline = #1}}
-\compattikzset{TL/.style = {tline = #1}}
-\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-
-\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source, \circuitikzbasekey/bipole/is current=true, i=#1}}
-
-
-\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
-\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
-\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
-\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
-\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
-\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
-\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
-
-\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
-
-\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
-\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
-\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
-\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
-\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
-
-\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
-\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
-\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
-\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
-\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
-\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
-\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
-\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
-\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
-\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
-\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
-\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
-\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
-\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
-\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
-\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
-\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
-\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
-
-% % % % % %
-% % Beginn of Diodes
-% % % % % %
-
-\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
-\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
-\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
-\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
-\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
-\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
-\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
-\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
-\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
-\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
-\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
-\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
-\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
-\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
-\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
-\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
-
-\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
-\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
-\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
-\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
-\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
-\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
-\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
-\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
-\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
-\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
-
-\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
-\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
-%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
-
-\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
-\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
-\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
-\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
-\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
-\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
-\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
-\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
-\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
-\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
-
-%% Define Shortcuts
-\compattikzset{Do/.style = {\comnpatname empty diode}}
-\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
-\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
-\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
-\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
-\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
-\compattikzset{leDo/.style = {\comnpatname empty led}}
-\compattikzset{VCo/.style = {\comnpatname empty varcap}}
-\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
-\compattikzset{Tro/.style = {\comnpatname empty triac}}
-
-\compattikzset{D*/.style = {\comnpatname full diode}}
-\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
-\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
-\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
-\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
-\compattikzset{pD*/.style = {\comnpatname full photodiode}}
-\compattikzset{leD*/.style = {\comnpatname full led}}
-\compattikzset{VC*/.style = {\comnpatname full varcap}}
-\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
-\compattikzset{Tr*/.style = {\comnpatname full triac}}
-
-\compattikzset{D/.style = {\comnpatname diode}}
-\compattikzset{tD/.style = {\comnpatname tunnel diode}}
-\compattikzset{zD/.style = {\comnpatname Zener diode}}
-\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
-\compattikzset{sD/.style = {\comnpatname Schottky diode}}
-\compattikzset{pD/.style = {\comnpatname photodiode}}
-\compattikzset{leD/.style = {\comnpatname led}}
-\compattikzset{VC/.style = {\comnpatname varcap}}
-\compattikzset{Ty/.style = {\comnpatname thyristor}}
-\compattikzset{Tr/.style = {\comnpatname triac}}
-
-\compattikzset{D-/.style = {\comnpatname stroke diode}}
-\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
-\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
-\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
-\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
-\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
-\compattikzset{leD-/.style = {\comnpatname stroke led}}
-\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
-\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
-\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
-
-% % % % % %
-% % End of Diodes
-% % % % % %
-
-
-\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
-\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
-\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
-\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spst@path, l=#1}}
-\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
-
-\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
-\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
-\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
-
-% short forms
-\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-
-\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path}}
-\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosource@path}}
-
-\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
-\compattikzset{isource/.style = {\comnpatname current source = #1}}
-\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
-\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-
-\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-
-\compattikzset{R/.style= {\comnpatname resistor = #1}}
-%\ifpgf@circuit@compat\else\compattikzset{R/.style= {resistor = #1}}\fi
-\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
-\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
-\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
-\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
-\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
-\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
-\compattikzset{C/.style = {\comnpatname capacitor = #1}}
-\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
-\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
-\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
-\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
-\compattikzset{L/.style = {\comnpatname inductor = #1}}
-\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
-\compattikzset{V/.style = {\comnpatname voltage source = #1}}
-\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
-\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\def\pgf@temp#1{
- \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
- \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
- \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
- \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-\compattikzset{I/.style = {\comnpatname current source = #1}}
-\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\def\pgf@temp#1{
- \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
- \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
- \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
- \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-
-
-
-\compattikzset{Mr/.style = {\comnpatname memristor}}
-
-\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
-\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
-\compattikzset{spst/.style = {\comnpatname switch = #1}}
-
-\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
-
-\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
-\compattikzset{vss/.style = {\comnpatname vee = #1}}
-
-\def\inheritlogicport#1#2{
- \pgfdeclareshape{#2 port}{
- \inheritsavedanchors[from=#1 #2 port]
- \inheritbackgroundpath[from=#1 #2 port]
- \inheritanchor[from=#1 #2 port]{in}
- \inheritanchor[from=#1 #2 port]{in 1}
- \inheritanchor[from=#1 #2 port]{in 2}
- \inheritanchor[from=#1 #2 port]{out}
- \inheritanchor[from=#1 #2 port]{center}
- \inheritanchor[from=#1 #2 port]{left}
- }
-}
-
-\ifpgf@circuit@europeanlogicport
- \inheritlogicport{european}{and}
- \inheritlogicport{european}{or}
- \inheritlogicport{european}{xor}
- \inheritlogicport{european}{not}
- \inheritlogicport{european}{nand}
- \inheritlogicport{european}{nor}
- \inheritlogicport{european}{xnor}
-\else
- \inheritlogicport{american}{and}
- \inheritlogicport{american}{or}
- \inheritlogicport{american}{xor}
- \inheritlogicport{american}{not}
- \inheritlogicport{american}{nand}
- \inheritlogicport{american}{nor}
- \inheritlogicport{american}{xnor}
-\fi
-
-% Transistor like bipoles
-
-\def\pgf@circ@trans@path#1#2{
- \pgfextra{
- \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
- \def\pgf@circ@temp{#2}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
- \fi
- }
- \ifpgf@circuit@bipole@reversed
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- \else
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- \fi
- \pgfextra{
- \pgf@circ@slope{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \pgfmathadd{\pgfmathresult}{-90}
- \edef\pgf@circ@direction{\pgfmathresult}
- }
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)
- node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
- (\ctikzvalof{bipole/name}) {} node {\ctikzvalof{bipole/label/name}}
- \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
- (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
- \else
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
- (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
- \fi
- \pgfextra{
- \pgfcircresetpath
- }
- (\tikztotarget) \tikztonodes % e si continua
-}
-
-
-\def\pgf@circ@definetranspath#1{
- \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
-}
-
-\pgf@circ@definetranspath{elmech}
-\pgf@circ@definetranspath{nmos}
-\pgf@circ@definetranspath{pmos}
-\pgf@circ@definetranspath{npn}
-\pgf@circ@definetranspath{pnp}
-\pgf@circ@definetranspath{nfet}
-\pgf@circ@definetranspath{nigfete}
-\pgf@circ@definetranspath{nigfetd}
-\pgf@circ@definetranspath{nigfetebulk}
-\pgf@circ@definetranspath{pfet}
-\pgf@circ@definetranspath{pigfete}
-\pgf@circ@definetranspath{pigfetd}
-\pgf@circ@definetranspath{pigfetebulk}
-\pgf@circ@definetranspath{njfet}
-\pgf@circ@definetranspath{pjfet}
-\pgf@circ@definetranspath{pigbt}
-\pgf@circ@definetranspath{nigbt}
-\pgf@circ@definetranspath{Lpigbt}
-\pgf@circ@definetranspath{Lnigbt}%%%---------- close: tex/pgfcircpath
-
-\ifpgf@circ@siunitx
- \RequirePackage{xstring}[2009/03/13]
- %\expandafter\let\csname angstrom\endcsname\relax
- \RequirePackage{siunitx}
-\fi
-
-
-
-\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
-%override (unused) circuitikz environment for compability to externalization)
-\let\circuitikz\tikzpicture
-\let\endcircuitikz\endtikzpicture
+\input{circuitikz-0.6-body.tex}
-\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.7-body.tex b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.7-body.tex
new file mode 100644
index 0000000000..625aadf4f7
--- /dev/null
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.7-body.tex
@@ -0,0 +1,10682 @@
+% Copyright 2018-2021 by Romano Giannetti
+% Copyright 2015-2021 by Stefan Lindner
+% Copyright 2013-2021 by Stefan Erhardt
+% Copyright 2007-2021 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+
+%%%%%
+%%%%%
+%%%%%
+%%%%% Se c'รจ l'opzione symbol, fallback to siunitx with warning
+%%%%%
+%%%%%
+
+\NeedsTeXFormat{LaTeX2e}
+
+\def\pgfcircversion{0.7}
+\def\pgfcircversiondate{2016/09/08}
+
+%% Version 2.0 of pgf/TikZ is required
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+\usepgflibrary{arrows}
+
+
+% The options are listed in the manual in this order
+
+\DeclareOption{europeanvoltage}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{straightvoltages}{
+ \pgf@circuit@bipole@voltage@straighttrue
+}
+
+\DeclareOption{americanvoltage}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrent}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrent}{
+ \ctikzset{current = american}
+}
+
+
+
+\DeclareOption{americanresistor}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistor}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductor}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductor}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductor}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanport}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanport}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{europeanport}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{european}{
+ \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
+ \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester = european}
+}
+
+\DeclareOption{american}{
+ \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester = american}
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{fulldiodes}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiodes}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{europeanvoltages}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{americanvoltages}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrents}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrents}{
+ \ctikzset{current = american}
+}
+
+\DeclareOption{americanresistors}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistors}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductors}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductors}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductors}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanports}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanports}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{americangfsurgearrester}{
+ \ctikzset{gas filled surge arrester = american}
+}
+
+\DeclareOption{europeangfsurgearrester}{
+ \ctikzset{gas filled surge arrester = european}
+}
+
+\DeclareOption{siunitx}{
+ \pgf@circ@siunitxtrue
+}
+
+\DeclareOption{nosiunitx}{
+ \pgf@circ@siunitxfalse
+}
+
+\DeclareOption{fulldiode}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiode}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{strokediode}{
+ \ctikzset{diode = stroke}
+}
+
+\DeclareOption{arrowmos}{
+ \pgf@circuit@mos@arrowstrue
+}
+
+\DeclareOption{noarrowmos}{
+ \pgf@circuit@mos@arrowsfalse
+}
+
+\DeclareOption{fetbodydiode}{
+ \pgf@circuit@fet@bodydiodetrue
+}
+
+\DeclareOption{nofetbodydiode}{
+ \pgf@circuit@fet@bodydiodefalse
+}
+
+\DeclareOption{fetsolderdot}{
+ \pgf@circuit@fet@solderdottrue
+}
+
+\DeclareOption{nofetsolderdot}{
+ \pgf@circuit@fet@solderdotfalse
+}
+
+\DeclareOption{emptypmoscircle}{
+ \pgf@circuit@pmos@emptycircletrue
+}
+
+
+\DeclareOption{lazymos}{
+ \ctikzset{tripoles/nmos/width=.5}
+ \ctikzset{tripoles/nmos/gate height=.35}
+ \ctikzset{tripoles/nmos/base height=.35}
+ \ctikzset{tripoles/nmos/height/.initial=1.2}
+ \ctikzset{tripoles/nmos/base width=.5}
+ \ctikzset{tripoles/nmos/gate width=.65}
+
+ \ctikzset{tripoles/pmos/width=.5}
+ \ctikzset{tripoles/pmos/gate height=.35}
+ \ctikzset{tripoles/pmos/base height=.35}
+ \ctikzset{tripoles/pmos/height/.initial=1.2}
+ \ctikzset{tripoles/pmos/base width=.5}
+ \ctikzset{tripoles/pmos/gate width=.65}
+
+ \pgf@circuit@pmos@emptycircletrue
+}
+
+\DeclareOption{straightlabels}{
+ \ctikzset{label/align = straight}
+}
+
+\DeclareOption{rotatelabels}{
+ \ctikzset{label/align = rotate}
+}
+
+\DeclareOption{smartlabels}{
+ \ctikzset{label/align = smart}
+}
+
+\DeclareOption{compatibility}{
+ \pgf@circuit@compattrue
+}
+
+\DeclareOption{oldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectiontrue
+}
+\DeclareOption{nooldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectionfalse
+}
+
+\DeclareOption{betterproportions}{
+ \ctikzset{monopoles/ground/width/.initial=.15}
+
+ \ctikzset{bipoles/resistor/height/.initial=.23}
+ \ctikzset{bipoles/resistor/width/.initial=.6}
+ \ctikzset{bipoles/capacitor/height/.initial=.4}
+ \ctikzset{bipoles/capacitor/width/.initial=.1}
+ \ctikzset{bipoles/potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
+ \ctikzset{bipoles/photoresistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistor/main/.initial=.7}
+ \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
+ \ctikzset{bipoles/thermistorptc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorptc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/main/.initial=.7}
+ \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/width/.initial=.6}
+ \ctikzset{bipoles/vresistor/height/.initial=.45}
+ \ctikzset{bipoles/vresistor/width/.initial=.6}
+ \ctikzset{bipoles/generic/height/.initial=.23}
+ \ctikzset{bipoles/generic/width/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/ageneric/height/.initial=.23}
+ \ctikzset{bipoles/ageneric/width/.initial=.6}
+ \ctikzset{bipoles/memristor/height/.initial=.23}
+ \ctikzset{bipoles/memristor/wave height/.initial=.375}
+ \ctikzset{bipoles/memristor/width/.initial=.60}
+ \ctikzset{bipoles/tgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tgeneric/width/.initial=.6}
+ \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
+ \ctikzset{bipoles/fullgeneric/height/.initial=.23}
+ \ctikzset{bipoles/fullgeneric/width/.initial=.6}
+ \ctikzset{bipoles/diode/height/.initial=.3}
+ \ctikzset{bipoles/diode/width/.initial=.25}
+
+ \ctikzset{tripoles/thyristor/height/.initial=.66}
+ \ctikzset{tripoles/thyristor/height 2/.initial=.3}
+ \ctikzset{tripoles/thyristor/width/.initial=.6}
+ \ctikzset{tripoles/thyristor/diode height/.initial=.3}
+ \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+ \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+ \ctikzset{tripoles/triac/height/.initial=.66}
+ \ctikzset{tripoles/triac/width/.initial=.6}
+ \ctikzset{tripoles/triac/diode width left/.initial=.3}
+ \ctikzset{tripoles/triac/diode width right/.initial=.3}
+}
+
+%%%%%%%%%
+%%%%%%%%%%% Springe nach tex/pgfcirc.defines
+%%%---------- open: tex/pgfcirc.defines.tex
+
+%% Options
+
+%%%%%%%%%%%%
+%% Dimensions
+
+% coordinates
+\newdimen\pgf@circ@res@up
+\newdimen\pgf@circ@res@down
+\newdimen\pgf@circ@res@zero
+\newdimen\pgf@circ@res@left
+\newdimen\pgf@circ@res@right
+\newdimen\pgf@circ@res@other
+\newdimen\pgf@circ@res@step
+\newdimen\pgf@circ@res@temp
+% inital thickness
+\newdimen \pgfstartlinewidth
+%% Keys
+
+\long\def\pgf@circ@comment#1{}
+
+\def\circuitikzbasekey{/tikz/circuitikz}
+
+\pgfkeys{\circuitikzbasekey/.is family}
+
+\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
+\let\ctikzset\circuitikzset
+\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
+\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circuit@compat
+\newif\ifpgf@circ@oldvoltagedirection
+
+% Option ">" for twoports
+\newif\ifpgf@circuit@inputarrow
+\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/.is choice}
+\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
+
+% Option "boxed" for nodes and twoports
+\newif\ifpgf@circuit@boxed
+\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
+
+% Option "dashed" for nodes and twoports
+\newif\ifpgf@circuit@dashed
+\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
+\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}
+
+% Option "t=*" for nodes
+\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
+
+
+
+\ctikzset{bipoles/.is family}
+\ctikzset{bipoles/border margin/.initial=1.1}
+\ctikzset{bipoles/thickness/.initial=2}
+\ctikzset{bipoles/length/.initial=1.4cm}
+\ctikzset{nodes width/.initial=.04}
+\newdimen\pgf@circ@Rlen
+\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1}}
+
+\ctikzset{monopoles/.is family}
+\ctikzset{monopoles/ground/width/.initial=.25}
+\ctikzset{monopoles/tground/thickness/.initial=3}
+\ctikzset{monopoles/vcc/width/.initial=.2}
+\ctikzset{monopoles/match/width/.initial=.4}
+\ctikzset{monopoles/chassis/width/.initial=.25}
+\ctikzset{monopoles/alternative chassis/width/.initial=.25}
+\ctikzset{monopoles/equipotentiality/width/.initial=.25}
+\ctikzset{monopoles/tlinestub/width/.initial=.25}
+\ctikzset{monopoles/antenna/width/.initial=.25}
+\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/width/.initial=.25}
+\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/rxantenna/width/.initial=.25}
+
+\ctikzset{bipoles/resistor/height/.initial=.3}
+\ctikzset{bipoles/resistor/width/.initial=.8}
+\ctikzset{bipoles/potentiometer/height/.initial=.8}
+\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
+\ctikzset{bipoles/potentiometer/width/.initial=.8}
+\ctikzset{bipoles/photoresistor/height/.initial=.6}
+\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
+\ctikzset{bipoles/photoresistor/width/.initial=.8}
+\ctikzset{bipoles/thermistor/main/.initial=.7}
+\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/width/.initial=.8}
+\ctikzset{bipoles/thermistorntc/main/.initial=.7}
+\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistorptc/width/.initial=.8}
+\ctikzset{bipoles/thermistorptc/main/.initial=.7}
+\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistor/width/.initial=.8}
+\ctikzset{bipoles/varistor/main/.initial=.7}
+\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/varistor/width/.initial=.8}
+\ctikzset{bipoles/vresistor/height/.initial=.6}
+\ctikzset{bipoles/vresistor/width/.initial=.8}
+\ctikzset{bipoles/cuteinductor/height/.initial=.3}
+\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
+\ctikzset{bipoles/cuteinductor/width/.initial=.6}
+\ctikzset{bipoles/cuteinductor/coils/.initial=5}
+\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+\ctikzset{bipoles/americaninductor/height/.initial=.3}
+\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
+\ctikzset{bipoles/americaninductor/width/.initial=.8}
+\ctikzset{bipoles/americaninductor/coils/.initial=4}
+\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
+\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
+\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
+\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
+\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
+\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
+\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/esource/height/.initial=.60}
+\ctikzset{bipoles/esource/width/.initial=.60}
+\ctikzset{bipoles/pvsource/height/.initial=.60}
+\ctikzset{bipoles/pvsource/width/.initial=.60}
+\ctikzset{bipoles/isource/height/.initial=.60}
+\ctikzset{bipoles/isource/width/.initial=.60}
+\ctikzset{bipoles/oosource/height/.initial=.60}
+\ctikzset{bipoles/oosource/width/.initial=.60}
+\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/dcisource/height/.initial=.60}
+\ctikzset{bipoles/dcisource/width/.initial=.60}
+\ctikzset{bipoles/dcvsource/height/.initial=.60}
+\ctikzset{bipoles/dcvsource/width/.initial=.60}
+\ctikzset{bipoles/vsourcetri/height/.initial=.60}
+\ctikzset{bipoles/vsourcetri/width/.initial=.60}
+\ctikzset{bipoles/isourceam/height/.initial=.60}
+\ctikzset{bipoles/isourceam/width/.initial=.60}
+\ctikzset{bipoles/vsource/height/.initial=.60}
+\ctikzset{bipoles/vsource/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/height/.initial=.60}
+\ctikzset{bipoles/vsourceam/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/margin/.initial=.7}
+\ctikzset{bipoles/isourcesin/height/.initial=.60}
+\ctikzset{bipoles/isourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesin/height/.initial=.60}
+\ctikzset{bipoles/vsourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
+\ctikzset{bipoles/cisource/height/.initial=.7}
+\ctikzset{bipoles/cisource/width/.initial=.7}
+\ctikzset{bipoles/cisourceam/height/.initial=.7}
+\ctikzset{bipoles/cisourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsource/height/.initial=.7}
+\ctikzset{bipoles/cvsource/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/height/.initial=.7}
+\ctikzset{bipoles/cvsourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
+\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
+\ctikzset{bipoles/cisourcesin/width/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
+\ctikzset{bipoles/capacitor/height/.initial=.6}
+\ctikzset{bipoles/capacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/height/.initial=.5}
+\ctikzset{bipoles/ecapacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/font/.initial= \fontsize{6}{0}\selectfont\boldmath}
+\ctikzset{bipoles/pcapacitor/height/.initial=.6}
+\ctikzset{bipoles/pcapacitor/width/.initial=.2}
+\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
+\ctikzset{bipoles/vcapacitor/height/.initial=.6}
+\ctikzset{bipoles/vcapacitor/width/.initial=.5}
+\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
+\ctikzset{bipoles/piezoelectric/height/.initial=.7}
+\ctikzset{bipoles/piezoelectric/width/.initial=.5}
+\ctikzset{bipoles/battery/height/.initial=.6}
+\ctikzset{bipoles/battery/width/.initial=.3}
+\ctikzset{bipoles/battery1/height/.initial=.6}
+\ctikzset{bipoles/battery1/width/.initial=.3}
+\ctikzset{bipoles/diode/height/.initial=.50}
+\ctikzset{bipoles/diode/width/.initial=.40}
+\ctikzset{bipoles/varcap/height/.initial=.50}
+\ctikzset{bipoles/varcap/width/.initial=.45}
+\ctikzset{bipoles/interr/height/.initial=.35}
+\ctikzset{bipoles/interr/width/.initial=.35}
+\ctikzset{bipoles/interr/height 2/.initial=.1}
+\ctikzset{bipoles/generic/height/.initial=.30}
+\ctikzset{bipoles/generic/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
+\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
+\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
+\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
+\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
+\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
+\ctikzset{bipoles/fuse/height/.initial=.20}
+\ctikzset{bipoles/fuse/width/.initial=.50}
+\ctikzset{bipoles/afuse/height/.initial=.20}
+\ctikzset{bipoles/afuse/width/.initial=.50}
+\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
+\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
+\ctikzset{bipoles/ageneric/height/.initial=.30}
+\ctikzset{bipoles/ageneric/width/.initial=.80}
+\ctikzset{bipoles/memristor/height/.initial=.30}
+\ctikzset{bipoles/memristor/wave height/.initial=.5}
+\ctikzset{bipoles/memristor/width/.initial=.80}
+\ctikzset{bipoles/tgeneric/height/.initial=.70}
+\ctikzset{bipoles/tgeneric/width/.initial=.80}
+\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
+\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
+\ctikzset{bipoles/fullgeneric/height/.initial=.30}
+\ctikzset{bipoles/fullgeneric/width/.initial=.80}
+\ctikzset{bipoles/open/height/.initial=.25}
+\ctikzset{bipoles/open/width/.initial=.8}
+\ctikzset{bipoles/ammeter/height/.initial=.60}
+\ctikzset{bipoles/ammeter/width/.initial=.60}
+\ctikzset{bipoles/ohmmeter/height/.initial=.60}
+\ctikzset{bipoles/ohmmeter/width/.initial=.60}
+\ctikzset{bipoles/voltmeter/height/.initial=.60}
+\ctikzset{bipoles/voltmeter/width/.initial=.60}
+\ctikzset{bipoles/buffer/height/.initial=1}
+\ctikzset{bipoles/buffer/width/.initial=1}
+\ctikzset{bipoles/not port/width/.initial=1}
+\ctikzset{bipoles/not port/height/.initial=.8}
+\ctikzset{bipoles/not port/circle width/.initial=.15}
+\ctikzset{bipoles/lamp/height/.initial=.60}
+\ctikzset{bipoles/lamp/width/.initial=.60}
+\ctikzset{bipoles/tline/height/.initial=.3}
+\ctikzset{bipoles/tline/width/.initial=.8}
+\ctikzset{bipoles/squid/height/.initial=.60}
+\ctikzset{bipoles/squid/width/.initial=.60}
+\ctikzset{bipoles/barrier/height/.initial=.60}
+\ctikzset{bipoles/barrier/width/.initial=.60}
+\ctikzset{bipoles/thermocouple/height/.initial=.250}
+\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
+\ctikzset{bipoles/thermocouple/width/.initial=.140}
+\ctikzset{bipoles/pushbutton/height/.initial=.5}
+\ctikzset{bipoles/pushbutton/height 2/.initial=.0}
+\ctikzset{bipoles/pushbutton/width/.initial=.50}
+
+\ctikzset{bipoles/twoport/width/.initial=.7}
+\ctikzset{bipoles/twoport/height/.initial=.7}
+\ctikzset{bipoles/twoport/text/.initial=}
+\ctikzset{bipoles/vco/width/.initial=.7}
+\ctikzset{bipoles/bandpass/width/.initial=.7}
+\ctikzset{bipoles/highpass/width/.initial=.7}
+\ctikzset{bipoles/lowpass/width/.initial=.7}
+\ctikzset{bipoles/adc/width/.initial=.7}
+\ctikzset{bipoles/dac/width/.initial=.7}
+\ctikzset{bipoles/dsp/width/.initial=.7}
+\ctikzset{bipoles/fft/width/.initial=.7}
+\ctikzset{bipoles/amp/width/.initial=.7}
+\ctikzset{bipoles/vamp/width/.initial=.7}
+\ctikzset{bipoles/piattenuator/width/.initial=.7}
+\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
+\ctikzset{bipoles/tattenuator/width/.initial=.7}
+\ctikzset{bipoles/vtattenuator/width/.initial=.7}
+\ctikzset{bipoles/phaseshifter/width/.initial=.7}
+\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
+\ctikzset{bipoles/detector/width/.initial=.7}
+
+
+\newif\ifpgf@circuit@trans@depletiontype
+\pgf@circuit@trans@depletiontypefalse
+
+\newif\ifpgf@circuit@mos@arrows
+\ctikzset{tripoles/mos style/.is choice}
+\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
+\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
+
+% Option solderdot for fet
+\newif\ifpgf@circuit@fet@solderdot
+\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+
+% Option bodydiode for fet
+\newif\ifpgf@circuit@fet@bodydiode
+\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+
+% Option draw fet without gate connection
+\newif\ifpgf@circuit@bpt@drawgate
+\pgf@circuit@bpt@drawgatetrue
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+
+% Option draw bpt without base connection
+\newif\ifpgf@circuit@bpt@drawbase
+\pgf@circuit@bpt@drawbasetrue
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+
+% Option draw bpt with optical input
+\newif\ifpgf@circuit@bpt@drawphoto
+\pgf@circuit@bpt@drawphotofalse
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+
+% Option draw pmos with empty circle
+\newif\ifpgf@circuit@pmos@emptycircle
+\newif\ifpgf@circuit@pmos@emptycircle
+\pgf@circuit@pmos@emptycirclefalse
+\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+
+
+\newif\ifpgf@circuit@trans@ntype
+\pgf@circuit@trans@ntypetrue %default true
+%\newif\ifpgf@circuit@trans@ptype
+%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
+\ctikzset{tripoles/nmos/width/.initial=.7}
+\ctikzset{tripoles/nmos/gate height/.initial=.35}
+\ctikzset{tripoles/nmos/base height/.initial=.5}
+\ctikzset{tripoles/nmos/conn height/.initial=0}
+\ctikzset{tripoles/nmos/height/.initial=1.1}
+\ctikzset{tripoles/nmos/base width/.initial=.5}
+\ctikzset{tripoles/nmos/gate width/.initial=.62}
+\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nmos/curr direction/.initial=1}
+
+\ctikzset{tripoles/pmos/width/.initial=.7}
+\ctikzset{tripoles/pmos/gate height/.initial=.35}
+\ctikzset{tripoles/pmos/base height/.initial=.5}
+\ctikzset{tripoles/pmos/conn height/.initial=0}
+\ctikzset{tripoles/pmos/height/.initial=1.1}
+\ctikzset{tripoles/pmos/base width/.initial=.5}
+\ctikzset{tripoles/pmos/gate width/.initial=.62}
+\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pmos/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nfet/width/.initial=.7}
+\ctikzset{tripoles/nfet/gate height/.initial=.35}
+\ctikzset{tripoles/nfet/base height/.initial=.5}
+\ctikzset{tripoles/nfet/conn height/.initial=0}
+\ctikzset{tripoles/nfet/height/.initial=1.1}
+\ctikzset{tripoles/nfet/base width/.initial=.5}
+\ctikzset{tripoles/nfet/gate width/.initial=.62}
+\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pfet/width/.initial=.7}
+\ctikzset{tripoles/pfet/gate height/.initial=.35}
+\ctikzset{tripoles/pfet/base height/.initial=.5}
+\ctikzset{tripoles/pfet/conn height/.initial=0}
+\ctikzset{tripoles/pfet/height/.initial=1.1}
+\ctikzset{tripoles/pfet/base width/.initial=.5}
+\ctikzset{tripoles/pfet/gate width/.initial=.62}
+\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigfete/width/.initial=.7}
+\ctikzset{tripoles/nigfete/gate height/.initial=.35}
+\ctikzset{tripoles/nigfete/base height/.initial=.5}
+\ctikzset{tripoles/nigfete/conn height/.initial=.35}
+\ctikzset{tripoles/nigfete/height/.initial=1.1}
+\ctikzset{tripoles/nigfete/base width/.initial=.5}
+\ctikzset{tripoles/nigfete/gate width/.initial=.62}
+\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfete/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetd/width/.initial=.7}
+\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetd/base height/.initial=.5}
+\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetd/height/.initial=1.1}
+\ctikzset{tripoles/nigfetd/base width/.initial=.5}
+\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
+
+\ctikzset{tripoles/pigfete/width/.initial=.7}
+\ctikzset{tripoles/pigfete/gate height/.initial=.35}
+\ctikzset{tripoles/pigfete/base height/.initial=.5}
+\ctikzset{tripoles/pigfete/conn height/.initial=.35}
+\ctikzset{tripoles/pigfete/height/.initial=1.1}
+\ctikzset{tripoles/pigfete/base width/.initial=.5}
+\ctikzset{tripoles/pigfete/gate width/.initial=.62}
+\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetd/width/.initial=.7}
+\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetd/base height/.initial=.5}
+\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetd/height/.initial=1.1}
+\ctikzset{tripoles/pigfetd/base width/.initial=.5}
+\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
+
+\ctikzset{tripoles/npn/width/.initial=.6}
+\ctikzset{tripoles/npn/base height/.initial=.45}
+\ctikzset{tripoles/npn/base height 2/.initial=.15}
+\ctikzset{tripoles/npn/base height/.initial=.4}
+\ctikzset{tripoles/npn/conn height/.initial=0}
+\ctikzset{tripoles/npn/height/.initial=1.1}
+\ctikzset{tripoles/npn/base width/.initial=.5}
+\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/npn/curr direction/.initial=1}
+
+\ctikzset{tripoles/pnp/width/.initial=.6}
+\ctikzset{tripoles/pnp/base height/.initial=.45}
+\ctikzset{tripoles/pnp/base height 2/.initial=.15}
+\ctikzset{tripoles/pnp/base height/.initial=.4}
+\ctikzset{tripoles/pnp/conn height/.initial=0}
+\ctikzset{tripoles/pnp/height/.initial=1.1}
+\ctikzset{tripoles/pnp/base width/.initial=.5}
+\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pnp/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigbt/width/.initial=.6}
+\ctikzset{tripoles/pigbt/gate height/.initial=.45}
+\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/pigbt/base height/.initial=.4}
+\ctikzset{tripoles/pigbt/conn height/.initial=0}
+\ctikzset{tripoles/pigbt/height/.initial=1.1}
+\ctikzset{tripoles/pigbt/gate width/.initial=.62}
+\ctikzset{tripoles/pigbt/base width/.initial=.5}
+\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigbt/width/.initial=.6}
+\ctikzset{tripoles/nigbt/gate height/.initial=.45}
+\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/nigbt/base height/.initial=.4}
+\ctikzset{tripoles/nigbt/conn height/.initial=0}
+\ctikzset{tripoles/nigbt/height/.initial=1.1}
+\ctikzset{tripoles/nigbt/gate width/.initial=.62}
+\ctikzset{tripoles/nigbt/base width/.initial=.5}
+\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/Lpigbt/width/.initial=.6}
+\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/Lnigbt/width/.initial=.6}
+\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/njfet/width/.initial=.7}
+\ctikzset{tripoles/njfet/gate height/.initial=.5}
+\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/njfet/gate width/.initial=.5}
+\ctikzset{tripoles/njfet/conn height/.initial=.35}
+\ctikzset{tripoles/njfet/height/.initial=1.1}
+\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/njfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pjfet/width/.initial=.7}
+\ctikzset{tripoles/pjfet/gate height/.initial=.5}
+\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/pjfet/gate width/.initial=.5}
+\ctikzset{tripoles/pjfet/conn height/.initial=.35}
+\ctikzset{tripoles/pjfet/height/.initial=1.1}
+\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/isfet/width/.initial=1}
+\ctikzset{tripoles/isfet/gate height/.initial=.35}
+\ctikzset{tripoles/isfet/base height/.initial=.5}
+\ctikzset{tripoles/isfet/height/.initial=1.1}
+\ctikzset{tripoles/isfet/base width/.initial=.3}
+\ctikzset{tripoles/isfet/gate width/.initial=.5}
+\ctikzset{tripoles/isfet/conn height/.initial=0}
+\ctikzset{tripoles/isfet/wave width/.initial=.16}
+\ctikzset{tripoles/isfet/wave amp/.initial=.06}
+\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
+\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
+\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/isfet/curr direction/.initial=1}
+
+\newif\ifpgf@circuit@europeanlogicport
+\ctikzset{logic ports/.is choice}
+\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue } }
+\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse } }
+
+
+\ctikzset{tripoles/american and port/width/.initial=1.1}
+\ctikzset{tripoles/american and port/height/.initial=.8}
+\ctikzset{tripoles/american and port/port width/.initial=.7}
+\ctikzset{tripoles/american and port/input height/.initial=.5}
+\ctikzset{tripoles/american nand port/width/.initial=1.1}
+\ctikzset{tripoles/american nand port/height/.initial=.8}
+\ctikzset{tripoles/american nand port/port width/.initial=.7}
+\ctikzset{tripoles/american nand port/circle width/.initial=.15}
+\ctikzset{tripoles/american nand port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/width/.initial=1.1}
+\ctikzset{tripoles/american or port/height/.initial=.8}
+\ctikzset{tripoles/american or port/port width/.initial=.7}
+\ctikzset{tripoles/american or port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/input skip/.initial=.25}
+\ctikzset{tripoles/american or port/aaa/.initial=.6}
+\ctikzset{tripoles/american or port/bbb/.initial=.4}
+\ctikzset{tripoles/american or port/ccc/.initial=.5}
+\ctikzset{tripoles/american or port/ddd/.initial=.0}
+\ctikzset{tripoles/american nor port/width/.initial=1.1}
+\ctikzset{tripoles/american nor port/height/.initial=.8}
+\ctikzset{tripoles/american nor port/port width/.initial=.7}
+\ctikzset{tripoles/american nor port/input height/.initial=.5}
+\ctikzset{tripoles/american nor port/input skip/.initial=.25}
+\ctikzset{tripoles/american nor port/circle width/.initial=.15}
+\ctikzset{tripoles/american nor port/aaa/.initial=.6}
+\ctikzset{tripoles/american nor port/bbb/.initial=.4}
+\ctikzset{tripoles/american nor port/ccc/.initial=.5}
+\ctikzset{tripoles/american nor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xor port/width/.initial=1.1}
+\ctikzset{tripoles/american xor port/height/.initial=.8}
+\ctikzset{tripoles/american xor port/port width/.initial=.7}
+\ctikzset{tripoles/american xor port/input height/.initial=.5}
+\ctikzset{tripoles/american xor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xor port/distance/.initial=.1}
+\ctikzset{tripoles/american xor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/width/.initial=1.1}
+\ctikzset{tripoles/american xnor port/height/.initial=.8}
+\ctikzset{tripoles/american xnor port/port width/.initial=.7}
+\ctikzset{tripoles/american xnor port/input height/.initial=.5}
+\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xnor port/distance/.initial=.1}
+\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
+\ctikzset{tripoles/european and port/width/.initial=1.4}
+\ctikzset{tripoles/european and port/height/.initial=.65}
+\ctikzset{tripoles/european and port/reserved/.initial=.6}
+\ctikzset{tripoles/european and port/input height/.initial=.6}
+\ctikzset{tripoles/european or port/width/.initial=1.4}
+\ctikzset{tripoles/european or port/height/.initial=.65}
+\ctikzset{tripoles/european or port/reserved/.initial=.6}
+\ctikzset{tripoles/european or port/input height/.initial=.6}
+\ctikzset{tripoles/european xor port/width/.initial=1.4}
+\ctikzset{tripoles/european xor port/height/.initial=.65}
+\ctikzset{tripoles/european xor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xor port/input height/.initial=.6}
+\ctikzset{tripoles/european nand port/width/.initial=1.4}
+\ctikzset{tripoles/european nand port/not height/.initial=.3}
+\ctikzset{tripoles/european nand port/not width/.initial=.8}
+\ctikzset{tripoles/european nand port/height/.initial=.65}
+\ctikzset{tripoles/european nand port/reserved/.initial=.6}
+\ctikzset{tripoles/european nand port/input height/.initial=.6}
+\ctikzset{tripoles/european not port/width/.initial=1.4}
+\ctikzset{tripoles/european not port/not height/.initial=.3}
+\ctikzset{tripoles/european not port/not width/.initial=.8}
+\ctikzset{tripoles/european not port/height/.initial=.65}
+\ctikzset{tripoles/european not port/reserved/.initial=.6}
+\ctikzset{tripoles/european not port/input height/.initial=0}
+\ctikzset{tripoles/european xnor port/width/.initial=1.4}
+\ctikzset{tripoles/european xnor port/not height/.initial=.3}
+\ctikzset{tripoles/european xnor port/not width/.initial=.8}
+\ctikzset{tripoles/european xnor port/height/.initial=.65}
+\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xnor port/input height/.initial=.6}
+\ctikzset{tripoles/european nor port/width/.initial=1.4}
+\ctikzset{tripoles/european nor port/not height/.initial=.3}
+\ctikzset{tripoles/european nor port/not width/.initial=.8}
+\ctikzset{tripoles/european nor port/height/.initial=.65}
+\ctikzset{tripoles/european nor port/reserved/.initial=.6}
+\ctikzset{tripoles/european nor port/input height/.initial=.6}
+\ctikzset{tripoles/op amp/width/.initial=1.7}
+\ctikzset{tripoles/op amp/port width/.initial=.7}
+\ctikzset{tripoles/op amp/height/.initial=1.4}
+\ctikzset{tripoles/op amp/input height/.initial=.5}
+\ctikzset{tripoles/op amp/up pos/.initial=.45}
+\ctikzset{tripoles/op amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolut font size needed!
+\ctikzset{tripoles/gm amp/width/.initial=1.7}
+\ctikzset{tripoles/gm amp/port width/.initial=.7}
+\ctikzset{tripoles/gm amp/height/.initial=1.4}
+\ctikzset{tripoles/gm amp/input height/.initial=.5}
+\ctikzset{tripoles/gm amp/up pos/.initial=.45}
+\ctikzset{tripoles/plain amp/width/.initial=1.7}
+\ctikzset{tripoles/plain amp/port width/.initial=.7}
+\ctikzset{tripoles/plain amp/height/.initial=1.4}
+\ctikzset{tripoles/plain amp/input height/.initial=.5}
+\ctikzset{tripoles/plain amp/up pos/.initial=.45}
+
+\ctikzset{tripoles/thyristor/height/.initial=1.10}
+\ctikzset{tripoles/thyristor/height 2/.initial=.5}
+\ctikzset{tripoles/thyristor/width/.initial=1.0}
+\ctikzset{tripoles/thyristor/diode height/.initial=.5}
+\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+\ctikzset{tripoles/triac/height/.initial=1.1}
+\ctikzset{tripoles/triac/width/.initial=1}
+\ctikzset{tripoles/triac/diode width left/.initial=.3}
+\ctikzset{tripoles/triac/diode width right/.initial=.3}
+
+\ctikzset{tripoles/spdt/width/.initial=.85}
+\ctikzset{tripoles/spdt/height/.initial=.45}
+\ctikzset{tripoles/spdt/margin/.initial=.45}
+
+\ctikzset{tripoles/toggleswitch/height/.initial=.8}
+\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
+\ctikzset{tripoles/toggleswitch/width/.initial=.80}
+
+\ctikzset{tripoles/mixer/width/.initial=0.7}
+\ctikzset{tripoles/adder/width/.initial=0.7}
+\ctikzset{tripoles/circulator/width/.initial=.7}
+\ctikzset{tripoles/oscillator/width/.initial=.7}
+
+
+\ctikzset{tripoles/wilkinson/height/.initial=1.3}
+\ctikzset{tripoles/wilkinson/width/.initial=1.3}
+
+\ctikzset{quadpoles/transformer/width/.initial=1.5}
+\ctikzset{quadpoles/transformer/width1/.initial=.4}
+\ctikzset{quadpoles/transformer/height/.initial=1.5}
+\ctikzset{quadpoles/transformer/height1/.initial=.8}
+\ctikzset{quadpoles/transformer core/width/.initial=1.5}
+\ctikzset{quadpoles/transformer core/height/.initial=1.5}
+\ctikzset{quadpoles/transformer core/core height/.initial=.5}
+\ctikzset{quadpoles/transformer core/core width/.initial=.05}
+\ctikzset{quadpoles/gyrator/width/.initial=1.5}
+\ctikzset{quadpoles/gyrator/height/.initial=1.5}
+\ctikzset{quadpoles/fourport/width/.initial=1.3}
+\ctikzset{quadpoles/fourport/height/.initial=1.3}
+\ctikzset{quadpoles/coupler/width/.initial=1.3}
+\ctikzset{quadpoles/coupler/height/.initial=1.3}
+\ctikzset{quadpoles/coupler2/width/.initial=1.3}
+\ctikzset{quadpoles/coupler2/height/.initial=1.3}
+
+\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
+
+
+% %Mechanical section
+\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
+\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
+\ctikzset{bipoles/spring/height/.initial=.5}
+\ctikzset{bipoles/spring/width/.initial=.5}
+\ctikzset{bipoles/mass/height/.initial=.55}
+\ctikzset{bipoles/mass/box height/.initial=.4}
+\ctikzset{bipoles/mass/width/.initial=.5}
+
+\ctikzset{bipoles/damper/height/.initial=.35}
+\ctikzset{bipoles/damper/length/.initial=.3}
+\ctikzset{bipoles/damper/width/.initial=.4}
+
+
+\ctikzset{bipole/.is family}
+\ctikzset{bipole/kind/.initial = }
+\ctikzset{bipole/name/.initial = }
+\newif\ifpgf@circuit@bipole@isvoltage
+\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
+\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
+\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
+\newif\ifpgf@circuit@bipole@strokedsymbol
+\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
+\newif\ifpgf@circuit@bipole@iscurrent
+\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
+
+\ctikzset{bipole/voltage/.is family}
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+\newif\ifpgf@circuit@bipole@voltage@below
+\ctikzset{bipole/voltage/position/.is choice}
+\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
+\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
+
+\ctikzset{bipole/voltage/label/unit/.initial=}
+\ctikzset{bipole/voltage/label/name/.initial=}
+
+\ctikzset{bipole/current/.is family}
+\newif\ifpgf@circuit@bipole@current@backward
+\ctikzset{bipole/current/direction/.is choice}
+\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
+\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
+\newif\ifpgf@circuit@bipole@current@before
+\ctikzset{bipole/current/x position/.is choice}
+\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
+\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
+\newif\ifpgf@circuit@bipole@current@below
+\ctikzset{bipole/current/y position/.is choice}
+\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
+\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
+
+\ctikzset{bipole/current/label/unit/.initial=}
+\ctikzset{bipole/current/label/name/.initial=}
+
+\ctikzset{bipole/label/.is family}
+\ctikzset{bipole/label/position/.initial=90}
+\ctikzset{bipole/label/unit/.initial=}
+\ctikzset{bipole/label/name/.initial=}
+\ctikzset{bipole/annotation/.is family}
+\ctikzset{bipole/annotation/position/.initial=-90}
+\ctikzset{bipole/annotation/unit/.initial=}
+\ctikzset{bipole/annotation/name/.initial=}
+\ctikzset{bipole/nodes/.is family}
+\ctikzset{bipole/nodes/left/.is choice}
+\ctikzset{bipole/nodes/left/none/.code={\ctikzsetvalof{bipole/nodes/left}{none}}}
+\ctikzset{bipole/nodes/left/empty/.code={\ctikzsetvalof{bipole/nodes/left}{empty}}}
+\ctikzset{bipole/nodes/left/full/.code={\ctikzsetvalof{bipole/nodes/left}{full}}}
+\ctikzset{bipole/nodes/left/diamond/.code={\ctikzsetvalof{bipole/nodes/left}{diamond}}}
+\ctikzset{bipole/nodes/right/.is choice}
+\ctikzset{bipole/nodes/right/none/.code={\ctikzsetvalof{bipole/nodes/right}{none}}}
+\ctikzset{bipole/nodes/right/empty/.code={\ctikzsetvalof{bipole/nodes/right}{empty}}}
+\ctikzset{bipole/nodes/right/full/.code={\ctikzsetvalof{bipole/nodes/right}{full}}}
+\ctikzset{bipole/nodes/right/diamond/.code={\ctikzsetvalof{bipole/nodes/right}{diamond}}}
+
+
+
+
+\newif\ifpgf@circuit@europeanresistor
+\ctikzset{resistor/.is choice}
+\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
+\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
+
+\ctikzset{inductor/.is choice}
+\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
+\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
+\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
+
+\newif\ifpgf@circuit@strokediode
+\newif\ifpgf@circuit@fulldiode
+\pgf@circuit@strokediodefalse
+\pgf@circuit@fulldiodefalse
+
+\ctikzset{diode/.is choice}
+\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
+\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
+\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
+
+\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full }}
+\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty }}
+\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke }}
+
+\ctikzset{thickness/.initial=2}
+\ctikzset{color/.initial=black}
+\pgfkeys{/tikz/color/.add code={}{\ctikzset{color=#1}}}
+
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circ@siunitx@res
+
+\ctikzset{straight/.is choice}
+\ctikzset{straightvoltage value/.initial=true}
+\ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}}
+\ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}}
+\ctikzset{straightvoltage/.style = {/tikz/circuitikz/straight=true}}
+\newif\ifpgf@circuit@bipole@voltage@straight
+\ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight}
+
+
+\ctikzset{voltage/.is family}
+\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
+\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
+\ctikzset{voltage/bump a/.initial=1.2}
+\ctikzset{voltage/bump b/.initial=1.5}
+\ctikzset{voltage/european label distance/.initial=1.4}
+\ctikzset{voltage/american label distance/.initial=1.1}
+% special cases
+\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
+\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
+\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
+\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
+\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
+%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
+%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
+
+\ctikzset{current/.is family}
+\ctikzset{current/distance/.initial = .5}
+
+\tikzset{american currents/.style = { \circuitikzbasekey/current = american } }
+\tikzset{european currents/.style = { \circuitikzbasekey/current = european } }
+\tikzset{american voltages/.style = { \circuitikzbasekey/voltage = american } }
+\tikzset{european voltages/.style = { \circuitikzbasekey/voltage = european } }
+\tikzset{american resistors/.style = { \circuitikzbasekey/resistor = american } }
+\tikzset{european resistors/.style = { \circuitikzbasekey/resistor = european } }
+
+\newif\ifpgf@circuit@europeangfsurgearrester
+\ctikzset{gas filled surge arrester/.is choice}
+\ctikzset{gas filled surge arrester/european/.code= {\pgf@circuit@europeangfsurgearrestertrue } }
+\ctikzset{gas filled surge arrester/american/.code= {\pgf@circuit@europeangfsurgearresterfalse } }
+
+\tikzset{american gas filled surge arrester/.style = { \circuitikzbasekey/gas filled surge arrester = american } }
+\tikzset{european gas filled surge arrester/.style = { \circuitikzbasekey/gas filled surge arrester = european } }
+\tikzset{american inductors/.style = { \circuitikzbasekey/inductor = american } }
+\tikzset{european inductors/.style = { \circuitikzbasekey/inductor = european } }
+\tikzset{cute inductors/.style = { \circuitikzbasekey/inductor = cute } }
+\tikzset{american ports/.style = { \circuitikzbasekey/logic ports = american } }
+\tikzset{european ports/.style = { \circuitikzbasekey/logic ports = european } }
+\tikzset{european/.style = { european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester } }
+\tikzset{american/.style = { american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester } }
+\tikzset{cute/.style = { european currents, european voltages, american resistors, cute inductors, american ports } }
+
+% I should try to make the tree clearer (this voltaege conflicts with the options above)
+
+\newif\ifpgf@circuit@europeanvoltage
+\ctikzset{voltage/.is choice}
+\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse } }
+\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue } }
+
+\newif\ifpgf@circuit@europeancurrent
+\ctikzset{current/.is choice}
+\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse }
+\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue }
+
+\ctikzset{label/align/.is choice}
+\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
+\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
+\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
+
+%%%%%%%%%% new
+\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
+%%%---------- close: tex/pgfcirc.defines
+%%%%%%%%%%% Springe nach tex/pgfcircutils
+%%%---------- open: tex/pgfcircutils.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%\def\pgf@circ@handleSI#1{%
+ % \pgf@circ@siunitx@resfalse
+%
+ % \edef\len{\stringlength[e]{#1}}
+ %\testmatchingchar[e]{#1}{\len}{>}%
+ %\ifmatchingchar%
+ % \ifnum\findchars{#1}{<}=0
+ % \def\pgf@circ@handleSI@val{\substring{#1}{1}{\findchars{#1}{<}-1}}
+ %\def\pgf@circ@handleSI@unit{\substring{#1}{\findchars{#1}{<}-1}+1}{\stringlength{#1}}
+ %\pgf@circ@siunitx@restrue
+% \else
+% \fi
+ %\else
+ %\fi
+%}
+
+\def\pgf@circ@handleSI#1{
+ \noexpandarg
+ \def\pgf@temp{}
+ \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
+ \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
+
+ \ifnum\pgf@circ@handleSI@unit@len=0
+ \pgf@circ@siunitx@resfalse
+ \else
+ \IfEndWith{#1}{>}{
+ \pgf@circ@siunitx@restrue
+ \noexpandarg
+ \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
+ %\typeout{si |#1|}
+ }{
+ \pgf@circ@siunitx@resfalse
+ %\typeout{no si |#1|}
+ }
+ \fi
+}
+
+\def\pgf@circ@ifkeyempty#1{
+ \pgfextra{
+ \ctikzset{#1/.get=\pgf@circ@temp}
+ \edef\pgf@temp{}
+ }
+ \ifx\pgf@circ@temp\pgf@temp
+}
+
+%%%---------- close: tex/pgfcircutils
+%%%%%%%%%%% Springe nach tex/pgfcircmath
+%%%---------- open: tex/pgfcircmath.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Math routines
+
+\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
+
+% angle between 0 and 360
+\def\pgf@circ@slope#1#2{%
+ \pgf@process{#1}%
+ \pgf@xa=\pgf@x%
+ \pgf@ya=\pgf@y%
+ \pgf@process{#2}%
+ \advance\pgf@x by-\pgf@xa%
+ \advance\pgf@y by-\pgf@ya%
+ \ifdim\pgf@x<0.1pt
+ \ifdim\pgf@x>-0.1pt % vertical
+ \ifdim\pgf@y<0pt
+ \def\pgfmathresult{-90.0}
+ \else
+ \def\pgfmathresult{+90.0}
+ \fi
+ \else % oblique with dx < 0
+ \pgfmathdivide{\pgf@y}{\pgf@x}
+ \pgfmathatan{\pgfmathresult}
+ \ifdim\pgf@x<0pt
+ \pgfmathsubtract{\pgfmathresult}{+180}
+ \fi
+ \fi
+ \else % oblique with dx > 0
+ \pgfmathdivide{\pgf@y}{\pgf@x}
+ \pgfmathatan{\pgfmathresult}
+ \ifdim\pgf@x<0pt
+ \pgfmathsubtract{\pgfmathresult}{+180}
+ \fi
+ \fi
+ \pgf@x=\pgfmathresult pt
+ \ifdim\pgf@x<0pt
+ \pgfmathadd{\pgfmathresult}{+360}
+ \fi
+ }
+
+
+%%%---------- close: tex/pgfcircmath
+
+%%%%%%%%%%% Springe nach tex/pgfcircshapes
+%%%---------- open: tex/pgfcircshapes.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Other shapes
+
+
+%% Nothing
+
+\pgfdeclareshape{emptyshape}{
+ \savedanchor{\northeast}{%
+ \pgf@x=.5\wd\pgfnodeparttextbox%
+ \pgf@y=.5\ht\pgfnodeparttextbox%
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{east}{%
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{south}{%
+ \northeast
+ \pgf@y=-\pgf@y
+ \pgf@x=0cm
+ }
+ \anchor{west}{
+ \northeast
+ \pgf@y=0cm
+ \pgf@x=-\pgf@x
+ }
+ \anchor{text}{%
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+}
+
+%% Full terminal
+
+\pgfdeclareshape{circ}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}}
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Empty terminal
+
+\pgfdeclareshape{ocirc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}}
+ }
+
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Diamond terminal
+
+\pgfdeclareshape{diamondpole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ \pgftransformrotate{45}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@temp}{\pgf@circ@res@up+\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up-\pgf@circ@res@temp}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% Current arrow
+
+\pgfdeclareshape{currarrow}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \divide \pgf@circ@res@step by 16
+
+ \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+
+ \endpgfscope
+ }
+
+}
+
+%% Current arrow
+
+\pgfdeclareshape{inputarrow}{
+ \savedanchor{\tip}{
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \tip
+ }
+ \anchor{tip}{
+ \tip
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \divide \pgf@circ@res@step by 16
+
+ \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{fill}
+
+ \endpgfscope
+ }
+
+}
+
+
+%% box
+
+\pgfdeclareshape{box}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@circ@res@step = 0.5\pgf@circ@res@step
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+
+}
+
+%%%---------- close: tex/pgfcircshapes
+%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
+%%%---------- open: tex/pgfcircmonopoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Monopoles
+
+%% Ground symbol
+
+\pgfdeclareshape{ground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+
+
+\pgfdeclareshape{rground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{tground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ %\pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{sground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+% noiseless ground
+\pgfdeclareshape{nground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{1.3\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpatharc{0}{180}{1.3\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \endpgfscope
+ }
+}
+
+% protective ground
+\pgfdeclareshape{pground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathcircle{\pgfpoint{0pt}{-\pgf@circ@res@step}} {1.2\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \endpgfscope
+ }
+}
+
+% chassis ground
+\pgfdeclareshape{cground}{
+\anchor{center}{
+ \pgfpointorigin
+}
+\behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/chassis/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-1.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% Contributed by Leonardo Azzinnari
+\pgfdeclareshape{tlinestub}{
+ \anchor{center}{\pgfpointorigin}
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+
+
+
+\pgfdeclareshape{antenna}{
+\anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
+ \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=6\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
+
+ % \pgfpathmoveto{\pgfpointorigin}
+ % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ % \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgftransformxshift{ -4\pgf@circ@res@step }
+
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+ }
+
+
+\pgfdeclareshape{txantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
+ \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=6\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
+% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+ }
+
+
+\pgfdeclareshape{rxantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
+ \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=6\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
+% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+% Vcc
+\pgfdeclareshape{vcc}{
+\anchor{center}{\pgfpointorigin}
+\anchor{text}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=2\pgf@circ@res@step
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+\behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+}
+
+}
+
+% Vee
+\pgfdeclareshape{vee}{
+\anchor{center}{\pgfpointorigin}
+\anchor{text}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=-2\pgf@circ@res@step
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+
+\behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+}
+
+}
+
+
+% match
+\pgfdeclareshape{match}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
+ \pgf@x=1.5\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \pgf@y=-1.5\ht\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
+ \pgfusepath{fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+
+%%%---------- close: tex/pgfcircmonopoles
+%%%%%%%%%%% Springe nach tex/pgfcircbipoles
+%%%---------- open: tex/pgfcircbipoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%% Generic macro for defining a bipole shape
+% #1 - additional anchors
+% #2 - lower y-size of the bipole (from the center).
+% #3 - #shape is the name of the shape
+% #4 - upper y-size of the bipole (from the center)
+% #5 - width of the bipole
+% #6 - macros drawing the bipole
+
+
+\long\def\pgfcircdeclarebipole#1#2#3#4#5#6{
+ \pgfdeclareshape{#3shape}{
+
+ \savedanchor{\northeast}{
+ \pgf@y=#4\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\northeastborder}{
+ \pgf@y=#4\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwestborder}{
+ \pgf@y=-#2\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=-#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwest}{
+ \pgf@y=-#2\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\centerpoint}{
+ \pgf@circ@res@down=-#2\pgf@circ@Rlen
+ \pgf@circ@res@up=#4\pgf@circ@Rlen
+ \pgfpointorigin
+ \pgf@y=\pgf@circ@res@up
+ \advance\pgf@y by\pgf@circ@res@down
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{n}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{ne}{
+ \northeast
+ }
+ \anchor{nw}{
+ \northeast
+ \pgf@x=-\pgf@x
+ }
+ \anchor{e}{%
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{s}{%
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{se}{%
+ \southwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{sw}{%
+ \southwest
+ }
+ \anchor{w}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{east}{%
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{south}{%
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{west}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{right}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{above}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{left}{%
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{below}{%
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{a}{%
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{b} {
+ \southwest
+ \pgf@y=0cm
+ }
+ \savedanchor{\textanchor}{%
+ \pgf@y=\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \anchor{text}{%
+ \textanchor
+ }
+ \anchorborder{%
+ \ifpgf@circuit@bipole@inverted
+ \pgf@circ@res@left=-\pgf@x
+ \pgf@circ@res@right=-\pgf@y
+ \else
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@right=\pgf@y
+ \fi
+ \ifdim\pgf@circ@res@right>0cm
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
+ \else
+ \southwestborder
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
+ \fi
+ }
+
+ #1
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@zero = 0cm
+ \pgf@circ@res@left = -\pgf@x
+ \pgf@circ@res@right = \pgf@x
+ \southwest
+ \pgf@circ@res@down = \pgf@y
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ #6
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ }
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Standard bipole shapes declarations
+
+%% Resistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/resistor/height}}{resistor}{\ctikzvalof{bipoles/resistor/height}}{\ctikzvalof{bipoles/resistor/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \divide \pgf@circ@res@step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+}
+
+
+
+%% Variable resistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vresistor/height}}{vresistor}{\ctikzvalof{bipoles/vresistor/height}}{\ctikzvalof{bipoles/vresistor/width}}{ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \divide \pgf@circ@res@step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+%% Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/capacitor/height}}{capacitor}{\ctikzvalof{bipoles/capacitor/height}}{\ctikzvalof{bipoles/capacitor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/capacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+%% Polar Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pcapacitor/height}}{polarcapacitor}{\ctikzvalof{bipoles/pcapacitor/height}}{\ctikzvalof{bipoles/pcapacitor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/pcapacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgftransformrotate{-90}
+ \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+}
+
+%% Electrolytic Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ecapacitor/height}}{ecapacitor}{\ctikzvalof{bipoles/ecapacitor/height}}{\ctikzvalof{bipoles/ecapacitor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/ecapacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+ \pgfsetrectcap
+ % % % Draw plus pole
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ % % Draw minus pole
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{black}
+ \pgfusepath{draw,fill}
+ \pgfsetfillcolor{black}
+ % % plus pole annotation
+ \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
+ {\pgfkeysvalueof{/tikz/circuitikz/bipoles/ecapacitor/font} $+$}
+}
+
+%% Battery
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery/height}}{battery}{\ctikzvalof{bipoles/battery/height}}{\ctikzvalof{bipoles/battery/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 6
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+
+%% Battery 1
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery1/height}}{battery1}{\ctikzvalof{bipoles/battery1/height}}{\ctikzvalof{bipoles/battery1/width}}{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+
+
+
+ \pgfusepath{draw}
+}
+
+
+
+%% cute inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cuteinductor/lower coil height}}{cuteinductor}{\ctikzvalof{bipoles/cuteinductor/height}}{\ctikzvalof{bipoles/cuteinductor/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% variable cute inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}{vcuteinductor}{\ctikzvalof{bipoles/vcuteinductor/height}}{\ctikzvalof{bipoles/vcuteinductor/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% american inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/americaninductor/height 2}}{americaninductor}{\ctikzvalof{bipoles/americaninductor/height}}{\ctikzvalof{bipoles/americaninductor/width}}{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@Rlen
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% variable american inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vamericaninductor/height 2}}{vamericaninductor}{\ctikzvalof{bipoles/vamericaninductor/height}}{\ctikzvalof{bipoles/vamericaninductor/width}}{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@Rlen
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Independent voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsource/height}}{vsource}{\ctikzvalof{bipoles/vsource/height}}{\ctikzvalof{bipoles/vsource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+%% Independent voltage source - American style
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourceam/height}}{vsourceAM}{\ctikzvalof{bipoles/vsourceam/height}}{\ctikzvalof{bipoles/vsourceam/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+
+ \ifpgf@circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$-$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$+$}
+ \fi
+ \fi
+ \pgfusepath{draw}
+}
+
+
+
+%% Independent sinusoidal voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesin/height}}{vsourcesin}{\ctikzvalof{bipoles/vsourcesin/height}}{\ctikzvalof{bipoles/vsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Triangle Voltage source - contributed by Ralf Farkas
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+% contributed by Alistair Kwan
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesquare/height}}{vsourcesquare}{\ctikzvalof{bipoles/vsourcesquare/height}}{\ctikzvalof{bipoles/vsourcesquare/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Triangle Voltage source - contributed by Ralf Farkas
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Empty Source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% PV Source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pvsource/height}}{pvsource}{\ctikzvalof{bipoles/pvsource/height}}{\ctikzvalof{bipoles/pvsource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ %Adapted from battery1
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %Arrow Part
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty Source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% DC Current Source with open shape
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcisource/height}}{dcisource}{\ctikzvalof{bipoles/dcisource/height}}{\ctikzvalof{bipoles/dcisource/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}}\pgfpatharc{0}{90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}}\pgfpatharc{0}{-90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}\pgfpatharc{180}{270}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}\pgfpatharc{180}{90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \ifpgf@circ@oldvoltagedirection
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \else
+ \ifpgf@circuit@bipole@current@backward
+ \pgftransformshift{\pgfpoint{-.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgftransformrotate{180}
+ \else
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \fi\fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% DC-Voltage source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcvsource/height}}{dcvsource}{\ctikzvalof{bipoles/dcvsource/height}}{\ctikzvalof{bipoles/dcvsource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
+ \pgfusepath{draw}
+}
+
+
+%% Independent current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isource}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Independent double oo source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/oosource/height}}{oosource}{\ctikzvalof{bipoles/oosource/height}}{\ctikzvalof{bipoles/oosource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
+ \pgfusepath{draw}
+}
+
+
+%% Independent current source - American
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isourceam/height}}{isourceAM}{\ctikzvalof{bipoles/isourceam/height}}{\ctikzvalof{bipoles/isourceam/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \ifpgf@circ@oldvoltagedirection
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \else
+ \ifpgf@circuit@bipole@current@backward
+ \pgftransformshift{\pgfpoint{-.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgftransformrotate{180}
+ \else
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \fi\fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+
+
+
+%% Independent sinusoidal current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isourcesin}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+
+%% Controlled voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsource/height}}{cvsource}{\ctikzvalof{bipoles/cvsource/height}}{\ctikzvalof{bipoles/cvsource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Controlled voltage source - American
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourceam/height}}{cvsourceAM}{\ctikzvalof{bipoles/cvsourceam/height}}{\ctikzvalof{bipoles/cvsourceam/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$-$}
+ \pgfusepath{draw}
+}
+
+
+%% Controlled sinusoidal voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cvsourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+%% Controlled sinusoidal current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cisourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+%% Controlled current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisource/height}}{cisource}{\ctikzvalof{bipoles/cisource/height}}{\ctikzvalof{bipoles/cisource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Controlled current source - American
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisourceam/height}}{cisourceAM}{\ctikzvalof{bipoles/cisourceam/height}}{\ctikzvalof{bipoles/cisourceam/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{draw}}
+ \endpgfscope
+}
+
+%% Black generic diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulldiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black Zener diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black alternative zigzag Zener diode
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black Schottky diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullsdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Black tunnel diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulltdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black light emitting diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulllediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+}
+
+%% Black photodiode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullpdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black varcap
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varcap/height}}{fullvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
+ \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfusepath{draw,fill}
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty generic diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptydiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty Zener diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty alternative zigzag Zener diode
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%% Empty Schottky diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptysdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty tunnel diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptytdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty light emitting diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptylediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty photodiode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptypdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty varcap
+
+\pgfcircdeclarebipole{
+ \anchor{strokepathstart}{
+ \northeast
+ \pgf@y=0cm
+ \advance\pgf@x by -\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth
+ \advance\pgf@x by -\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth
+ }
+ \anchor{strokepathend}{
+ \northeast
+ \pgf@y=0cm
+ }
+ }{\ctikzvalof{bipoles/varcap/height}}{emptyvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
+ \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfusepath{draw}
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% SPST
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{spst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@left}{.9\pgf@circ@res@up}}
+ \pgfpatharc{65}{25}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
+ %\pgfsetarrowsend{latex'}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.1\pgf@circ@res@right}{-.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.14\pgf@circ@res@right}{-.35\pgf@circ@res@up}}
+ \pgfsetarrowsend{latex'}
+ \pgfusepath{draw}
+
+}
+
+%% Closing SPST
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{cspst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@left}{.9\pgf@circ@res@up}}
+ \pgfpatharc{65}{25}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
+ %\pgfsetarrowsend{latex'}
+ \pgfusepath{draw}
+
+}
+
+%% Opening SPST
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{ospst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@right}{.1\pgf@circ@res@down}}
+ \pgfpatharc{15}{50}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
+ %\pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.85\pgf@circ@res@left}{1.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.87\pgf@circ@res@left}{1.26\pgf@circ@res@up}}
+ \pgfsetarrowsend{latex'}
+ \pgfusepath{draw}
+
+
+}
+
+
+%% Push Button
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pushbutton/height 2}}{pushbutton}{\ctikzvalof{bipoles/pushbutton/height}}{\ctikzvalof{bipoles/pushbutton/width}}{
+
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+
+%METERINGSHAPE
+\long\def\drawmeteringcircle{
+ \def\pgf@circ@temp{right}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \def\pgf@circ@temp{below}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \pgf@circ@res@step=1.2\pgf@circ@res@up
+ \fi
+ \fi
+ %draw connections to circle
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ %draw circle
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgfusepath{draw}
+ \endpgfscope
+ %draw arrow
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%AMPEREMETER
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ammeter/height}}{ammeter}{\ctikzvalof{bipoles/ammeter/height}}{\ctikzvalof{bipoles/ammeter/width}}{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\textbf{A}}{}{}
+}
+%OHMMETER
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ohmmeter/height}}{ohmmeter}{\ctikzvalof{bipoles/ohmmeter/height}}{\ctikzvalof{bipoles/ohmmeter/width}}{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
+}
+%VOLTMETER
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/voltmeter/height}}{voltmeter}{\ctikzvalof{bipoles/voltmeter/height}}{\ctikzvalof{bipoles/voltmeter/width}}{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\textbf{V}}{}{}
+
+}
+
+%% Short circuit
+
+\pgfcircdeclarebipole{}{0}{short}{0}{0}{ }
+
+%% Open circuit
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/open/height}}{open}{\ctikzvalof{bipoles/open/height}}{\ctikzvalof{bipoles/open/width}}{
+
+}
+
+%% Generic bipole - used as resistor by some (bleah)
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/generic/height}}{generic}{\ctikzvalof{bipoles/generic/height}}{\ctikzvalof{bipoles/generic/width}}{
+
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+}
+
+
+%% fuse
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fuse/height}}{fuse}{\ctikzvalof{bipoles/fuse/height}}{\ctikzvalof{bipoles/fuse/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+}
+
+
+
+%% Generic bipole, filled - used as inductor by some (bleah)
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fullgeneric/height}}{fullgeneric}{\ctikzvalof{bipoles/fullgeneric/height}}{\ctikzvalof{bipoles/fullgeneric/width}}{
+
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw,fill}
+}
+
+
+%% Generic asymmetric bipole
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ageneric/height}}{ageneric}{\ctikzvalof{bipoles/ageneric/height}}{\ctikzvalof{bipoles/ageneric/width}}{
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+%% asymmetric fuse
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/afuse/height}}{afuse}{\ctikzvalof{bipoles/afuse/height}}{\ctikzvalof{bipoles/afuse/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+
+
+%% Memristor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/memristor/height}}{memristor}{\ctikzvalof{bipoles/memristor/height}}{\ctikzvalof{bipoles/memristor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+
+
+%% Generic empty tunable
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tgeneric/height}}{tgeneric}{\ctikzvalof{bipoles/tgeneric/height}}{\ctikzvalof{bipoles/tgeneric/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Photoresistor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/photoresistor/height 2}}{photoresistor}{\ctikzvalof{bipoles/photoresistor/height}}{\ctikzvalof{bipoles/photoresistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+%% Thermistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistor/height}}{thermistor}{\ctikzvalof{bipoles/thermistor/height}}{\ctikzvalof{bipoles/thermistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ %\pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ %\endpgfscope
+}
+
+
+%% Thermistor PTC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorptc/height 2}}{thermistorptc}{\ctikzvalof{bipoles/thermistorptc/height}}{\ctikzvalof{bipoles/thermistorptc/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Thermistor NTC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorntc/height 2}}{thermistorntc}{\ctikzvalof{bipoles/thermistorntc/height}}{\ctikzvalof{bipoles/thermistorntc/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% thermocouple
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermocouple/height 2}}{thermocouple}{\ctikzvalof{bipoles/thermocouple/height}}{\ctikzvalof{bipoles/thermocouple/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+}
+
+%% Varistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varistor/height}}{varistor}{\ctikzvalof{bipoles/varistor/height}}{\ctikzvalof{bipoles/varistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\tiny\textsf{U}}}
+}
+
+
+
+%% Generic full tunable
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tfullgeneric/height}}{tfullgeneric}{\ctikzvalof{bipoles/tfullgeneric/height}}{\ctikzvalof{bipoles/tfullgeneric/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw,fill}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+
+
+
+%% Variable Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcapacitor/height}}{vcapacitor}{\ctikzvalof{bipoles/vcapacitor/height}}{\ctikzvalof{bipoles/vcapacitor/width}}{
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/width}\pgf@circ@Rlen
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfusepath{draw}
+}
+
+
+%% Piezoelectric Element
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piezoelectric/height}}{piezoelectric}{\ctikzvalof{bipoles/piezoelectric/height}}{\ctikzvalof{bipoles/piezoelectric/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ %% Outer markings
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %% Inner Box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left+4}{\pgf@circ@res@up-1}}{\pgfpoint{\pgf@circ@res@right-4}{\pgf@circ@res@down+1}}
+ \pgfusepath{draw}
+
+}
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Handling of terminals
+
+
+%% Easily usable styles
+
+\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=diamond}}
+
+\tikzset{reversed/.style = {\circuitikzbasekey/bipole/inverted=true}}
+
+
+%% The output routine
+
+\def\drawpoles{
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{diamond} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztostart) node[diamondpole] {} }
+ \else
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{empty} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztostart) node[ocirc] {} }
+ \else
+ \pgfextra{ \def\pgf@temp{full} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztostart) node[circ] {} }
+ \fi
+ \fi
+ \fi
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} \def\pgf@temp{diamond} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztotarget) node[diamondpole] {} }
+ \else
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} \def\pgf@temp{empty} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztotarget) node[ocirc] {} }
+ \else
+ \pgfextra{ \def\pgf@temp{full} }
+ \ifx\pgf@temp\pgf@circ@temp
+ { (\tikztotarget) node[circ] {} }
+ \fi
+ \fi
+ \fi
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+%% Lamp
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lamp/height}}{lamp}{\ctikzvalof{bipoles/lamp/height}}{\ctikzvalof{bipoles/lamp/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tline/height}
+ }{tline}{\ctikzvalof{bipoles/tline/height}
+ }{\ctikzvalof{bipoles/tline/width}
+ }
+ {
+ \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0}}
+ {\pgfpoint{\pgf@circ@res@step}{0}}
+ {\pgfpoint{0}{-\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% SQUID added by Cor Molenaar 5 March 2010
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/squid/height}}{squid}{\ctikzvalof{bipoles/squid/height}}{\ctikzvalof{bipoles/squid/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+
+
+% Generic barrier added by Cor Molenaar 5 March 2010
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/barrier/height}}{barrier}{\ctikzvalof{bipoles/barrier/height}}{\ctikzvalof{bipoles/barrier/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
+
+ \pgfusepath{draw}
+}
+
+
+% Contributed by Danilo Piazzalunga
+
+\pgfdeclareshape{buffer}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ }
+ }
+
+
+
+
+
+\pgfdeclareshape{plain amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+
+
+ }
+ }
+
+%% Generic two port box
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/twoport/height}}{twoport}{\ctikzvalof{bipoles/twoport/height}}{\ctikzvalof{bipoles/twoport/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+}
+
+%% voltage controled oscillator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vco/width}}{vco}{\ctikzvalof{bipoles/twoport/width}}{\ctikzvalof{bipoles/vco/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw circle
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+}
+
+%% bandpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bandpass/width}}{bandpass}{\ctikzvalof{bipoles/bandpass/width}}{\ctikzvalof{bipoles/bandpass/width}}{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% highpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/highpass/width}}{highpass}{\ctikzvalof{bipoles/highpass/width}}{\ctikzvalof{bipoles/highpass/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% lowpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lowpass/width}}{lowpass}{\ctikzvalof{bipoles/lowpass/width}}{\ctikzvalof{bipoles/lowpass/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% ADC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/adc/width}}{adc}{\ctikzvalof{bipoles/adc/width}}{\ctikzvalof{bipoles/adc/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{A}
+ \def\textii{D}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{A}
+ \def\textii{D}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DAC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dac/width}}{dac}{\ctikzvalof{bipoles/dac/width}}{\ctikzvalof{bipoles/dac/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{D}
+ \def\textii{A}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{D}
+ \def\textii{A}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DSP
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dsp/width}}{dsp}{\ctikzvalof{bipoles/dsp/width}}{\ctikzvalof{bipoles/dsp/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{DSP}}
+}
+
+%% FFT
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fft/width}}{fft}{\ctikzvalof{bipoles/fft/width}}{\ctikzvalof{bipoles/fft/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{FFT}}
+}
+
+%% Amplifier
+\pgfcircdeclarebipole{}{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{amp}{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgfusepath{draw}
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+}
+
+
+%% variable amplifier
+\pgfcircdeclarebipole{}{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{vamp}{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgfusepath{draw}
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+ % draw arrow
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% pi attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piattenuator/width}}{piattenuator}{\ctikzvalof{bipoles/piattenuator/width}}{\ctikzvalof{bipoles/piattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable pi attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vpiattenuator/width}}{vpiattenuator}{\ctikzvalof{bipoles/vpiattenuator/width}}{\ctikzvalof{bipoles/vpiattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% T attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tattenuator/width}}{tattenuator}{\ctikzvalof{bipoles/tattenuator/width}}{\ctikzvalof{bipoles/tattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable T attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vtattenuator/width}}{vtattenuator}{\ctikzvalof{bipoles/vtattenuator/width}}{\ctikzvalof{bipoles/vtattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% phase shifter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{phaseshifter}{\ctikzvalof{bipoles/phaseshifter/width}}{\ctikzvalof{bipoles/phaseshifter/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+}
+
+%% variable phase shifter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{vphaseshifter}{\ctikzvalof{bipoles/vphaseshifter/width}}{\ctikzvalof{bipoles/vphaseshifter/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% detector
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/detector/width}}{detector}{\ctikzvalof{bipoles/detector/width}}{\ctikzvalof{bipoles/detector/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{0.8\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@fulldiode
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
+ \fi
+
+}
+
+
+
+
+%% european gas filled surge arrester
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{european gas filled surge arrester}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{\ctikzvalof{bipoles/european gas filled surge arrester/width}}{
+
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+}
+
+
+
+
+%% american gas filled surge arrester
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{american gas filled surge arrester}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
+ %\def\pgf@circ@temp{right}
+ %\ifx\tikz@res@label@pos\pgf@circ@temp
+ % \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ %\else
+% \def\pgf@circ@temp{below}
+% \ifx\tikz@res@label@pos\pgf@circ@temp
+% \pgf@circ@res@step=-1.2\pgf@circ@res@up
+% \else
+% \pgf@circ@res@step=1.2\pgf@circ@res@up
+% \fi
+% \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfnode{circle}{center}{}{}{}
+
+ \pgfscope
+ \pgfsetarrowsend{latex}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope{}
+
+ %\pgftransformshift{\pgfpoint{.25\pgf@circ@res@left}{.45\pgf@circ@res@down}}
+ %\pgfnode{circ}{center}{}{}{}
+ %\pgftransformshift{}
+ \pgfcircle{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
+ \pgfusepath{fill}
+}
+
+% % MECHANICAL SYMBOLS
+
+%% mechanical capacitance - stiffness/spring
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spring/height}}{spring}{\ctikzvalof{bipoles/spring/height}}{\ctikzvalof{bipoles/spring/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical inductance - mass
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/mass/box height}}{mass}{\ctikzvalof{bipoles/mass/height}}{\ctikzvalof{bipoles/mass/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
+
+\pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical resistor - damper
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/damper/height}}{damper}{\ctikzvalof{bipoles/damper/height}}{\ctikzvalof{bipoles/damper/width}}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {\pgf@circ@res@zero}}
+ \pgfusepath{stroke}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{stroke}
+
+}
+
+
+%%%---------- close: tex/pgfcircbipoles
+%%%%%%%%%%% Springe nach tex/pgfcirctripoles
+%%%---------- open: tex/pgfcirctripoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Tripoles
+
+
+
+\pgfdeclareshape{spdt}
+ {
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out 1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{out 2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/margin}\pgf@circ@res@left
+
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
+ {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
+ }
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Logic ports
+%%
+
+
+
+
+
+
+\long\def\pgfcircdeclarelogicport#1#2{
+ \pgfdeclareshape{american #1 port}
+ {
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in 1}{
+ \inOne
+ }
+ \anchor{in}{
+ \inOne
+ }
+ \anchor{in 2}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ #2
+
+ }
+ }
+}
+
+
+\pgfcircdeclarelogicport{and}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@down}}
+ \pgfpathcurveto
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {.5\pgf@circ@res@down}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {0pt}}
+ \pgfpathcurveto
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {.5\pgf@circ@res@up}}
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+
+\pgfcircdeclarelogicport{nand}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathcurveto
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarelogicport{nor}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+}
+
+
+
+
+\pgfcircdeclarelogicport{or}{
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarelogicport{xor}{
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/distance}\pgf@circ@res@right+}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+
+
+\pgfcircdeclarelogicport{xnor}{
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/circle width}\pgf@circ@res@right
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/distance}\pgf@circ@res@right+}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
+
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+}
+
+
+\pgfdeclareshape{american not port}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ }
+ }
+
+\pgfdeclareshape{invschmitt}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ %draw inner shape
+
+ \pgfsetlinewidth{2\pgflinewidth}
+
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ }
+ }
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% #1 - name
+% #2 - text inside
+% #3 - number of inputs
+% #4 - is it a not
+
+\long\def\pgfcircdeclareeurologicport#1#2#3#4{
+ \pgfdeclareshape{european #1 port}
+ {
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \inOne
+ }
+ \anchor{in 1}{
+ \inOne
+ }
+ \anchor{in 2}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \def\pgf@temp{1}
+ \def\pgf@circ@temp{#3}
+ \ifx\pgftemp\pgf@circ@temp % one input
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}
+ \else % two inputs
+ \pgfpathmoveto{
+ \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathmoveto{
+ \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
+ \fi%
+ %
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
+ %
+ \edef\pgf@temp{not}
+ \edef\pgf@circ@temp{#4}
+ \ifx\pgf@temp\pgf@circ@temp % is a not
+ \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not height}\pgf@circ@res@up}}
+ \fi
+ %
+ \pgfusepath{draw}
+ %
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgftext{#2}
+ %
+ %
+ %
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+%
+%
+ }
+ }
+}
+
+
+
+\pgfcircdeclareeurologicport{and}{$\&$}{2}{}
+\pgfcircdeclareeurologicport{or}{$\ge 1$}{2}{}
+\pgfcircdeclareeurologicport{xor}{$=1$}{2}{}
+\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
+\pgfcircdeclareeurologicport{nand}{$\&$}{2}{not}
+\pgfcircdeclareeurologicport{nor}{$\ge 1$}{2}{not}
+\pgfcircdeclareeurologicport{xnor}{$=1$}{2}{not}
+
+\long\def\pgfcircdeclaretransistor#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northeast{% upper right
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%center left
+ \pgf@y=0pt
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/width}\pgf@x
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@y=.7\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=0.1\pgf@x
+ }
+ \anchor{pathstart}{ % south
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{pathend}{
+ \northeast
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \northeast
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ }
+ \anchor{north east}{
+ \northeast
+ }
+ \anchor{north west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{south east}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{base}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{G}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{gate}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{nobase}{
+ \left
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@x
+ }
+ \anchor{nogate}{
+ \left
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@x
+ }
+ \anchor{E}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{emitter}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{C}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{collector}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{D}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{drain}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ #2
+ \backgroundpath{
+ \pgftransformationadjustments
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ %
+ \ifnum \pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction} > 0
+ \pgf@circuit@trans@ntypetrue
+ \else
+ \pgf@circuit@trans@ntypefalse
+ \fi
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \left
+ \pgf@circ@res@left = \pgf@x
+ %
+ #3
+ % BODY DIODE
+ \ifpgf@circuit@fet@bodydiode
+ \drawbodydiode{#1}
+ \fi
+ %
+ }
+ }
+}
+
+\long\def\drawbodydiode#1{
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgftransformrotate{90}
+ \pgftransformscale{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode scale}}
+ \ifpgf@circuit@fulldiode
+ \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \else
+ \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \fi
+ \endpgfscope
+ %Draw upper connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope{}
+ %Draw lower connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+}
+
+\long\def\declarebpt#1{
+ \pgfcircdeclaretransistor{#1}{}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transiytor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@ntype
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{.5}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \ifpgf@circuit@bpt@drawphoto
+ \pgfscope
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \else
+ \ifpgf@circuit@bpt@drawbase
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+ \fi
+ }
+}
+
+\declarebpt{npn}
+\declarebpt{pnp}
+
+\long\def\declareigbt#1{
+\pgfcircdeclaretransistor{#1}{}
+{
+ %draw upper connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ %draw thicker gate lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %draw lower connection
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transiytor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@ntype
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{.5}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ %draw gate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
+ \fi
+ \pgfusepath{draw}
+}
+}
+
+\declareigbt{pigbt}
+\declareigbt{nigbt}
+\declareigbt{Lnigbt}
+\declareigbt{Lpigbt}
+
+
+\pgfcircdeclaretransistor{nmos}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+}
+
+
+\pgfcircdeclaretransistor{pmos}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.4}{%
+ \pgfpoint%
+ {\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+
+
+ \pgfusepath{draw}
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+ \pgfpathcircle{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left - \pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
+ \ifpgf@circuit@pmos@emptycircle
+ \pgfsetfillcolor{white}
+ \fi
+ \pgfusepath{draw,fill}
+}
+
+\long\def\drawfetcore#1{
+ \pgftransformationadjustments
+ %top connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
+ \ifpgf@circuit@trans@depletiontype
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \else
+
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.45}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.25}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down*0.25}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \fi
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %Bulk connection line
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ %bottom connection
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ %draw thick gate line
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \ifpgf@circuit@trans@ntype
+ \else
+ \pgftransformrotate{180}
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ % GATE CONNECTION
+ \ifpgf@circuit@bpt@drawgate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+ \fi
+
+}
+
+\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
+{\pgfcircdeclaretransistor{#1}{
+ \anchor{bulk}{\left\pgf@x=0pt}
+ \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
+ #2
+ }
+ {#3}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nfet}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pfet}
+}
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfete}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+
+
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
+\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfetebulk}
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+
+
+% N-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{nigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfete}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
+\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfetebulk}
+}
+
+
+% P-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{pigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+\pgfcircdeclaretransistor{njfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclaretransistor{pjfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.4}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{isfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ % DRAIN CONNECTION
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ % DRAIN
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % GATE, DEPLETION TYPE
+ \pgfscope %% added
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth} %% added
+ \pgfusepath{draw} %% added
+ \endpgfscope %% added
+
+ % BULK
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ % SOURCE
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ % GATE
+ %\pgfscope
+ %\pgfpathmoveto{\pgfpoint
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ %\pgfpathlineto{\pgfpoint
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ %\pgfsetlinewidth{2\pgflinewidth}
+ %\pgfusepath{draw}
+ %\endpgfscope
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+ % ARROW
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfusepath{draw}
+
+ % Wavy lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+
+%% Black thyristor
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/thyristor/height 2}}{fullthyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty thyristor
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/thyristor/height 2}}{emptythyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty triac
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/triac/height}}{emptytriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty triac
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/triac/height}}{fulltriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+
+
+
+
+
+
+\pgfcircdeclarebipole{
+ \anchor{out 1}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{out 2}{
+ \northeast
+ \pgf@y=.8\pgf@y
+ }
+}{\ctikzvalof{tripoles/toggleswitch/height 2}}{toggleswitch}{\ctikzvalof{tripoles/toggleswitch/height}}{\ctikzvalof{tripoles/toggleswitch/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetdash{}{0cm}
+}
+
+
+
+
+
+
+
+
+
+
+\pgfdeclareshape{op amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgfusepath{draw}
+ \endpgfscope
+
+
+
+ }
+ }
+
+%%Transkonduktanzverstรคrker
+\pgfdeclareshape{gm amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{0pt}} %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ %Umrandung:
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}} %geรคndert startpunkt neu am ausgangsstrich
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}%vom Ausgang nach oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}%ecke links unten nach rechts unten
+ \pgfpathclose
+ \pgfusepath{draw}
+ \endpgfscope
+
+ }
+ }
+
+
+
+%% Potentiometer
+\pgfcircdeclarebipole{
+ \anchor{wiper}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+ \anchor{W}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+}{\ctikzvalof{bipoles/potentiometer/height 2}}{potentiometer}{\ctikzvalof{bipoles/potentiometer/height}}{\ctikzvalof{bipoles/potentiometer/width}}{
+\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+\pgftransformationadjustments
+\pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+\divide \pgf@circ@res@step by 12
+
+\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+
+\pgf@circ@res@other = \pgf@circ@res@left
+\advance\pgf@circ@res@other by \pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by \pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+\pgfsetbeveljoin
+\pgfusepath{draw}
+
+\pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+\endpgfscope
+}
+
+
+
+
+
+%% Generic tunable
+
+\pgfcircdeclarebipole{
+ \anchor{wiper}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+}{\ctikzvalof{bipoles/generic potentiometer/height 2}}{genericpotentiometer}{\ctikzvalof{bipoles/generic potentiometer/height}}{\ctikzvalof{bipoles/generic potentiometer/width}}{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+\pgfdeclareshape{mixer}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{adder}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{oscillator}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
+ \else
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{text}{
+ \pgf@x=-2\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@Rlen{}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
+
+ % draw outer box
+ \ifpgf@circuit@boxed{}
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{circulator}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed{}
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % inner arrow
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
+ \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+
+% Wilkinson divider
+\pgfdeclareshape{wilkinson}{
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{out2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ % draw inner resisitor - european or american style is recognised
+ {
+ \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgftransformrotate{90}
+
+ % calculate size of resistor
+ \ifpgf@circuit@europeanresistor
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{genericshape}{center}{}{pgf@generic}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{resistorshape}{center}{}{pgf@resistor}{\pgfusepath{fill}}
+ \fi
+ }
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+
+% electromechanical device (motor/generator)
+\pgfdeclareshape{elmech}
+{
+ \savedanchor\northwest{
+ %\ifpgf@circuit@boxed
+ % \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ % \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
+ % \pgf@y=.5\pgf@y
+ % \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ % \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
+ % \pgf@x=.5\pgf@x
+ %\else
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ %\fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@Rlen
+ \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ % draw outer box
+ % \ifpgf@circuit@boxed
+ % \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ % \fi
+ % draw outer circle
+ %\ifpgf@circuit@boxed
+ % \pgf@circ@res@step=.7\pgf@circ@res@step
+ % \pgfsetdash{}{0pt} % draw solid circle if boxed
+ %\else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ %\fi
+ \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{black}
+ \pgfusepath{draw,fill}
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{magnetron}
+{
+ \savedanchor\northwest{
+ %\ifpgf@circuit@boxed
+ % \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ % \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
+ % \pgf@y=.5\pgf@y
+ % \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ % \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
+ % \pgf@x=.5\pgf@x
+ %\else
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ %\fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{anode}{
+ \northwest
+ \pgf@circ@res@step= \pgf@y
+ \pgfpointorigin
+ \pgfpathmoveto{ \pgfpointpolar{-90}{\pgf@circ@res@step}}
+ }
+ \anchor{cathode1}{
+ \northwest
+ \pgf@circ@res@step= \pgf@y
+ \pgfpointorigin
+ \pgfpathmoveto{ \pgfpointpolar{105}{\pgf@circ@res@step}}
+ }
+ \anchor{cathode2}{
+ \northwest
+ \pgf@circ@res@step= \pgf@y
+ \pgfpointorigin
+ \pgfpathmoveto{ \pgfpointpolar{75}{\pgf@circ@res@step}}
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgf@circ@res@step=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@Rlen
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfmathsetlength{\pgf@circ@res@other}{sin(15)*\pgf@circ@res@up}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ % draw outer box
+ % \ifpgf@circuit@boxed
+ % \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ % \fi
+ % draw outer circle
+ %\ifpgf@circuit@boxed
+ % \pgf@circ@res@step=.7\pgf@circ@res@step
+ % \pgfsetdash{}{0pt} % draw solid circle if boxed
+ %\else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ %\fi
+ %create outer circle
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@right}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw}
+ %create chambers
+ \foreach \angle in {45,135,225,315}{
+ \pgfpathmoveto{ \pgfpointpolar{\angle}{0.6\pgf@circ@res@right}}
+ \pgfpathlineto{ \pgfpointpolar{\angle}{\pgf@circ@res@right}}
+ }
+ \pgfsetroundcap
+ \pgfusepath{draw}
+ \pgfscope
+ %draw connection from outside
+ %anode
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ %cathodes
+ \pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ %create cathode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.15\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ %create anode
+ \pgfpathmoveto{\pgfpoint{0.3\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+%%%---------- close: tex/pgfcirctripoles
+%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
+%%%---------- open: tex/pgfcircquadpoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Quadripoles
+
+\long\def\pgfcircdeclarequadpole#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
+ }
+ \anchor{A2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{A1}{
+ \northwest
+ }
+ \anchor{B2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{base}{
+ \northwest
+ \pgf@x=0pt
+ }
+ #3
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ %\pgf@circ@Rlen=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+
+ #2
+
+ }
+ }
+}
+
+
+
+\def\pgf@circ@drawtransformerbasicanchor{
+ \pgfkeysvalueof{/tikz/circuitikz/quadpoles/trans/height}
+ \anchor{AA2}{
+ \northwest
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{AA1}{
+ \northwest
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+}
+
+\def\pgf@circ@drawtransformerbasicbody{
+ \def\stretto{.4}
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@down}%
+ }
+
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+
+ \endpgfscope
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@up}%
+ }
+
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@inductor1}{b}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf@inductor1}{a}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@inductor2}{a}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf@inductor2}{b}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+}
+
+
+
+ % contrib Kristofer M. Monisit
+
+ \pgfdeclareshape{fd op amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out +}{
+ \northwest
+ \pgf@y=.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{out -}{
+ \northwest
+ \pgf@y=-.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+
+ % Negative output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ % Positive output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+ \pgfsetrectcap
+ % Draw them all!
+ \pgfusepath{draw}
+
+ % Triangle
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathclose
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+
+
+
+
+\pgfcircdeclarequadpole{transformer}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+}{\pgf@circ@drawtransformerbasicanchor}
+
+\pgfcircdeclarequadpole{transformer core}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+}{\pgf@circ@drawtransformerbasicanchor}
+
+
+\pgfcircdeclarequadpole{gyrator}{
+
+ \def\stretto{.4}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{.7*\stretto\pgf@circ@res@down}}
+ \pgfpatharc{90}{270}{.7*\stretto\pgf@circ@res@down}
+
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{.7*\stretto\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{.7*\stretto\pgf@circ@res@down}
+ \pgfusepath{draw}
+
+}{}
+
+%% four-port
+% defines a general outer box for four-ports
+% TikZ usage:
+% \draw (0,0) node[coupler](coup){\SI{-3}{dB}}
+% (coup.port1) to[short,-o] ++(-1,0)
+%
+
+\long\def\pgfcircdeclarefourport#1#2{
+ \pgfdeclareshape{#1}{
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@y
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{port1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{port4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ #2
+
+ % draw inner text
+ \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+ }
+ }
+}
+
+% four-port
+\pgfcircdeclarefourport{fourport}{}
+
+
+% straight coupler
+\pgfcircdeclarefourport{coupler}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+}
+
+% "bended" coupler
+\pgfcircdeclarefourport{coupler2}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+
+
+}
+%%%---------- close: tex/pgfcircquadpoles
+
+%%%%%%%%%%% Springe nach tex/pgfcirclabel
+%%%---------- open: tex/pgfcirclabel.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Bipole label positioning
+
+%% Options
+\ctikzset{label/.style = { l=#1 } }
+\ctikzset{l/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
+ \ctikzsetvalof{bipole/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+
+\ctikzset{label above/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l^/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{label below/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+\ctikzset{l_/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+%value options
+\ctikzset{annotation/.style = { a=#1 } }
+\ctikzset{a/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/annotation/name=#1}
+ \ctikzsetvalof{bipole/annotation/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ }}
+
+
+
+\ctikzset{annotation above/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+\ctikzset{a^/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+
+\ctikzset{annotation below/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+\ctikzset{a_/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+
+
+
+\def\pgf@circ@drawlabels#1{
+ \pgfextra{
+ \edef\pgf@temp{\ctikzvalof{label/align}}
+ \def\pgf@circ@temp{straight}
+ }
+ \ifx\pgf@temp\pgf@circ@temp %straight
+ \pgf@circ@drawreglabels{#1}
+ \else
+ \pgfextra{\def\pgf@circ@temp{rotate}}
+ \ifx\pgf@temp\pgf@circ@temp %rotate
+ \pgf@circ@drawrotlabels{#1}
+ \else % smart
+ \pgf@circ@drawsmartlabels{#1}
+ \fi
+ \fi
+}
+
+
+\def\pgf@circ@drawsmartlabels#1{
+ \pgfextra{
+ %\pgfmathadd{\pgf@circ@direction}{360}
+ \pgfmathmod{\pgf@circ@direction}{90}
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ \ifnum \pgfcircmathresult > 20
+ \ifnum \pgfcircmathresult < 70 % NON quasi retto
+ \pgf@circ@drawrotlabels{#1}
+ \else
+ \pgf@circ@drawreglabels{#1}
+ \fi
+ \else
+ \pgf@circ@drawreglabels{#1}
+ \fi
+}
+
+%% Output routing
+%% #1 - node name
+
+\def\pgf@circ@drawrotlabels#1{
+ \pgfextra{
+ % calcolo rotazione label
+ \def\pgf@circ@temp{\ctikzvalof{bipole/#1/position}} %%% ร ncora label
+ \edef\pgfcirclabrot{\pgf@circ@direction} % primo e quarto quadrante
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 90 \ifnum \pgfcircmathresult < 270 % terzo e secondo
+ \pgfmathsubtract{\pgf@circ@direction}{180}
+ \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \pgfmathadd{\pgf@circ@temp}{180} %%%
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil} %%%
+ \fi\fi
+
+ }
+ \ifnum \ctikzvalof{mirror value} = -1
+ % \pgfmathadd{\pgf@circ@temp}{180}
+ % \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ coordinate (labelcoor) at ($(\ctikzvalof{bipole/name})!2!(\ctikzvalof{bipole/name}.south)$)
+ (labelcoor) node [rotate=\pgfcirclabrot] {\pgf@circ@finallabels{#1}} % c'era un transform shape
+ \else
+ coordinate (labelcoor) at ($(\ctikzvalof{bipole/name})!2!(\ctikzvalof{bipole/name}.north)$)
+ (labelcoor) node [rotate=\pgfcirclabrot] {\pgf@circ@finallabels{#1}} % c'era un transform shape
+ \fi
+
+}
+
+\def\pgf@circ@drawreglabels#1{
+ \pgfextra{
+ \pgfmathsubtract{\pgf@circ@direction}{90}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/position}} %%% ร ncora label
+ \ifnum \pgf@circ@temp < 0
+ \pgfmathadd{\pgf@circ@labanc}{180}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ \ifpgf@circuit@bipole@inverted
+ \pgfmathadd{\pgf@circ@temp}{180}
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+
+ \ifnum \ctikzvalof{mirror value} = -1
+ \pgfmathadd{\pgf@circ@temp}{180}
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ }
+ node [ anchor = \pgf@circ@labanc]
+ at (\ctikzvalof{bipole/name}.\pgf@circ@temp) {\pgf@circ@finallabels{#1}}
+}
+
+\def\pgf@circ@finallabels#1{%
+ \edef\pgf@temp{}%
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/unit}}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \ctikzvalof{bipole/#1/name}%
+ \else%
+ $\SI{\ctikzvalof{bipole/#1/name}}{\ctikzvalof{bipole/#1/unit}}$%
+ \fi%
+}
+
+
+\ctikzset{text/.style = { t=#1 } }
+\ctikzset{t/.code = {
+ \ctikzsetvalof{bipoles/twoport/text}{#1}
+}}
+
+%%%---------- close: tex/pgfcirclabel
+%%%%%%%%%%% Springe nach tex/pgfcircvoltage
+%%%---------- open: tex/pgfcircvoltage.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Voltage management
+
+
+\ctikzset{v^>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v^</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v_>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+
+% Default position varies whether the component is a voltage source
+% or not
+\ctikzset{v/.code = {
+ \ifpgf@circuit@bipole@isvoltage
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \fi
+ \fi
+ \ifpgf@circ@oldvoltagedirection\else
+ \ifpgf@circuit@bipole@iscurrent
+ \ifpgf@circuit@bipole@current@backward
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \fi\fi\fi
+ \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
+ \ctikzsetvalof{bipole/voltage/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ }
+}
+
+\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
+\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
+\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
+\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
+
+
+%% Output routine for generic bipoles
+
+\def\pgf@circ@drawvoltagegeneric{
+ \pgfextra{
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{\eudist}
+ \else
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{-\eudist}
+ \else
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
+ \fi
+ \fi
+ \else
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{-\eudist}
+ \else
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{\eudist}
+ \else
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
+ \fi
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@voltage@angle{90}
+ \else
+ \def\pgf@circ@voltage@angle{-90}
+ \fi
+
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\distacefromnode{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}} }
+ { \edef\distacefromnode{\ctikzvalof{voltage/distance from node}} }
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\bumpb{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}} }
+ { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
+ }
+
+
+ coordinate (pgfcirc@midtmp) at ($(\tikztostart) ! \distacefromnode ! (anchorstartnode)$)
+ coordinate (pgfcirc@Vfrom) at ($(pgfcirc@midtmp) ! -\distfromline ! \pgf@circ@voltage@angle:(anchorstartnode)$)
+ coordinate (pgfcirc@mid) at ($(\tikztotarget) ! \distacefromnode ! (anchorendnode)$)
+ coordinate (pgfcirc@Vto) at ($(pgfcirc@mid) ! \distfromline ! \pgf@circ@voltage@angle : (anchorendnode)$)
+
+ \ifpgf@circuit@bipole@voltage@below
+ coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
+ coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
+ \else
+ coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
+ coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
+ \fi
+
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@straight
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) --(pgfcirc@Vfrom) node[currarrow, sloped, allow upside down, pos=1] {}
+ \else
+ (pgfcirc@Vfrom) --(pgfcirc@Vto) node[currarrow, sloped, allow upside down, pos=1] {}
+
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
+ node[currarrow, sloped, allow upside down, pos=1] {}
+ (pgfcirc@Vfrom)
+ \else
+ (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
+ node[currarrow, sloped, allow upside down, pos=1] {}
+ (pgfcirc@Vto)
+ \fi
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
+ \else
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
+ \fi
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
+ \else
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
+ \fi
+ \fi
+ \fi
+}
+
+%% Output routine for voltage sources
+
+\def\pgf@circ@drawvoltagegenerator{
+ \ifpgf@circuit@bipole@voltage@below
+ coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-120)$)
+ coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-60)$)
+ \else
+ coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.120)$)
+ coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.60)$)
+ \fi
+
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vcont2) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont1)
+ \else
+ (pgfcirc@Vcont1) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont2)
+ \fi
+
+ \else % american voltage
+
+ \ifpgf@circuit@bipole@voltageoutsideofsymbol
+ % if it is a battery, must put + and -
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vcont1) node {$-$} (pgfcirc@Vcont2) node {$+$}
+ \else
+ (pgfcirc@Vcont1) node {$+$} (pgfcirc@Vcont2) node {$-$}
+ \fi
+ \fi
+
+ \fi
+}
+
+%% Output routine
+
+\def\pgf@circ@drawvoltage{ % node name
+ \pgfextra{
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >284 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@voltage@below
+ \pgf@circuit@bipole@voltage@belowfalse
+ \else
+ \pgf@circuit@bipole@voltage@belowtrue
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@below
+ \pgf@circuit@bipole@voltage@belowfalse
+ \else
+ \pgf@circuit@bipole@voltage@belowtrue
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@voltage@label@where{90}
+ \fi
+
+
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label
+ distance}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\eudist{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}} }
+ { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
+
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ } %end pgfextra
+
+ \ifpgf@circuit@bipole@isvoltage
+ \pgf@circ@drawvoltagegenerator
+ \else
+ \pgf@circ@drawvoltagegeneric
+ \fi
+
+
+
+ (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)
+ coordinate (Vlab) at ($(\ctikzvalof{bipole/name}.center) !
+ \ifpgf@circuit@europeanvoltage\eudist\else\ctikzvalof{voltage/american label distance}\fi !
+ (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)$)
+ node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=0]
+ at (Vlab) { \pgf@circ@finallabels{voltage/label} }
+}
+
+%%%---------- close: tex/pgfcircvoltage
+%%%%%%%%%%% Springe nach tex/pgfcirccurrent
+%%%---------- open: tex/pgfcirccurrent.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Current handling
+
+%% Options
+
+
+\ctikzset{i^>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i>^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i>_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i^</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i<^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i<_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i/.code = {
+% \ifpgf@circuit@bipole@iscurrent
+% \pgfkeys{\circuitikzbasekey/bipole/current/position=above}
+% \else
+% \pgfkeys{\circuitikzbasekey/bipole/current/position=below}
+% \fi
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
+ \ctikzsetvalof{bipole/current/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+%reverse current direction for voltage sources
+ \ifpgf@circ@oldvoltagedirection\else
+ \ifpgf@circuit@bipole@isvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below }
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \fi\fi\fi
+}
+}
+
+
+\ifpgf@circ@oldvoltagedirection
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
+\else
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
+\fi
+\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
+\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
+\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
+
+
+\def\pgf@circ@drawnormalcurrent{
+ \ifpgf@circuit@bipole@current@before
+ \ifpgf@circuit@bipole@current@backward
+ { (anchorstartnode) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\tikztostart)
+ }
+ \else
+ { (\tikztostart) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (anchorstartnode)
+ }
+ \fi
+ \else
+ \ifpgf@circuit@bipole@current@backward
+ { (\tikztotarget) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (anchorendnode)
+ }
+ \else
+ { (anchorendnode) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\tikztotarget)
+ }
+ \fi
+ \fi
+}
+
+%% Output routine
+%% #1 - node name
+
+\def\pgf@circ@drawcurrent{
+ \pgfextra{
+ \edef\pgf@circ@ffffff{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >284 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@bipole@current@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@current@label@where{+90}
+ \fi
+ }
+
+
+ \pgfextra{ \def\pgf@temp{short} \edef\pgf@circ@temp{\ctikzvalof{bipole/kind}} }
+
+ \ifx\pgf@circ@temp\pgf@temp % caso di corrente (centrata) su un corto
+ \ifpgf@circuit@bipole@current@backward
+ { (\tikztotarget) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\tikztostart) }
+ \else
+ { (\tikztostart) --
+ node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
+ (\tikztotarget) }
+ \fi
+
+ \else % altri bipoli - e quindi tra nodo e target
+
+ \ifpgf@circuit@bipole@iscurrent
+ \ifpgf@circuit@europeancurrent
+ \pgf@circ@drawnormalcurrent
+ \else
+ \fi
+ \else
+ \pgf@circ@drawnormalcurrent
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@iscurrent
+ node [anchor=\pgf@circ@dir] at (\ctikzvalof{bipole/name}.\pgf@circ@bipole@current@label@where)
+ { \pgf@circ@finallabels{current/label} }
+ \else
+ (Iarrow.\pgf@circ@bipole@current@label@where) node [anchor=\pgf@circ@dir]
+ { \pgf@circ@finallabels{current/label} }
+ \fi
+
+}
+
+
+
+
+%%%---------- close: tex/pgfcirccurrent
+
+\ExecuteOptions{nofetbodydiode,nofetsolderdot,nooldvoltagedirection,europeancurrents,europeanvoltages,americanports,americanresistors,cuteinductors,europeangfsurgearrester,nosiunitx,noarrowmos,smartlabels,nocompatibility}
+
+\ProcessOptions\relax
+
+%%%%%%%%%%% Springe nach tex/pgfcircpath
+%%%---------- open: tex/pgfcircpath.tex
+
+\pgf@circ@Rlen = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
+\def\pgf@circ@direction{0.0}
+
+% Names
+\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
+\ctikzset{n/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/name=#1}
+}}
+
+% Reflect the node along
+\ctikzset{mirrored/.is choice}
+\ctikzset{mirror value/.initial=1}
+\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
+\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
+\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
+
+% Invert node along path
+\ctikzset{inverted/.is choice}
+\ctikzset{invert value/.initial=1}
+\ctikzset{inverted/true/.code = {\ctikzsetvalof{invert value}{-1}\pgf@circuit@bipole@invertedtrue}}
+\ctikzset{inverted/false/.code = {\ctikzsetvalof{invert value}{1}\pgf@circuit@bipole@invertedfalse}}
+\ctikzset{invert/.style = {/tikz/circuitikz/inverted=true}}
+\newif\ifpgf@circuit@bipole@inverted
+\ctikzset{bipole/inverted/.is if=pgf@circuit@bipole@inverted}
+
+
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+
+
+
+% Initialize paths
+\def\pgfcircresetpath{
+ \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90, ,bipole/annotation/name=, bipole/annotation/position=-90,
+ bipole/inverted=false, bipole/kind=,
+ bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
+ bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
+ bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
+ bipole/current/y position=above, bipole/current/direction=forward,
+ mirrored=false
+ }
+}
+
+
+%% Generic bipole path
+\def\pgf@circ@bipole@path#1#2{
+ \pgfextra{
+ \ctikzset{bipole/kind = #1}
+
+ \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
+ \def\pgf@circ@temp{}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = #2\pgf@circ@rand} % create it
+ \fi
+
+ \def\pgf@temp{open}
+ \def\pgf@circ@temp{#1}
+ }
+
+ (\tikztostart) coordinate (\ctikzvalof{bipole/name}start)
+ (\tikztotarget) coordinate (\ctikzvalof{bipole/name}end)
+ \pgfextra{
+ \pgf@circ@slope{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \edef\pgf@circ@direction{\pgfmathresult}
+ }
+
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)
+ node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}, xscale=\ctikzvalof{invert value}]
+ (\ctikzvalof{bipole/name}) {}
+ \ifpgf@circuit@bipole@inverted
+ \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathend)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathstart)
+ \else
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.right)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.left)
+ \fi
+ \else
+ \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathstart)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathend)
+ \else
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.left)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.right)
+ \fi
+ \fi
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ \else
+ \ifpgf@circuit@bipole@strokedsymbol%draw line thrue symbol(e.g. diodes)
+ \ifcsname pgf@anchor@#1shape@strokepathstart\endcsname%if special path-anchors are defined, use them!
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.strokepathstart)
+ (\ctikzvalof{bipole/name}.strokepathend) -- (\ctikzvalof{bipole/name}end.center)
+ \else
+ (\ctikzvalof{bipole/name}start.center)--(\ctikzvalof{bipole/name}end.center)
+ \fi
+ \else
+ (\ctikzvalof{bipole/name}start.center) --(anchorstartnode)
+ (anchorendnode) -- (\ctikzvalof{bipole/name}end.center)
+
+ \fi
+ \fi
+
+
+ \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabels{label}\fi
+ \pgf@circ@ifkeyempty{bipole/annotation/name}\else\pgf@circ@drawlabels{annotation}\fi
+ \drawpoles
+ \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
+ \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
+ % reset
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ (\tikztotarget) \tikztonodes % e si continua
+}
+
+
+%% Path definitions
+\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
+\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
+\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
+\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
+\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
+\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
+\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
+\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
+\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
+\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
+\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
+\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
+\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
+\def\pgf@circ@battery1@path#1{\pgf@circ@bipole@path{battery1}{#1}}
+\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
+\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
+\def\pgf@circ@inductor@path#1{%
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@europeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@cuteinductor@path{#1}%
+ \else%
+ \pgf@circ@americaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@vinductor@path#1{
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@veuropeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@vcuteinductor@path{#1}%
+ \else%
+ \pgf@circ@vamericaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
+\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
+\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
+\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
+\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
+\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
+\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
+\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
+\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
+\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
+\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
+\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
+\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
+\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
+\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
+\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
+\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
+\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
+\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
+\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
+\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
+\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
+\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
+\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
+\def\pgf@circ@spst@path#1{\pgf@circ@bipole@path{spst}{#1}}
+\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
+\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
+\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
+\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
+\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
+\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
+\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
+\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
+\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
+\def\pgf@circ@empty@path#1{}
+\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
+\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
+\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
+\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
+\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
+\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
+\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
+\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
+\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
+\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
+\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
+\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
+\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
+
+\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
+\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
+\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
+
+\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
+\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
+\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
+\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
+\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
+\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
+\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
+\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
+\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
+\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
+\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
+\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
+\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
+\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
+\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
+\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
+\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
+\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
+
+%%Mechanical
+\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
+\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
+\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
+
+
+
+
+%% Styles
+
+\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
+\def\compattikzset#1{\tikzset{\comnpatname#1}}
+
+%\def\ctikzsetbipole#1#2{%
+% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
+%}
+
+\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
+\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
+\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
+\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
+\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
+\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
+\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
+\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
+\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
+\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
+\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
+\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
+\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
+\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
+\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
+\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
+\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
+\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
+\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
+\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
+\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
+\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery1@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
+\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
+\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
+\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
+\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
+\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
+\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
+\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
+\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
+\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
+\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
+\compattikzset{transmission line/.style = {tline = #1}}
+\compattikzset{TL/.style = {tline = #1}}
+\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+
+\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source, \circuitikzbasekey/bipole/is current=true, i=#1}}
+
+
+\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
+\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
+\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
+\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
+\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
+\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
+\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
+
+\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
+
+\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
+\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
+\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
+\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
+\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
+
+\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
+\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
+\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
+\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
+\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
+\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
+\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
+\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
+\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
+\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
+\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
+\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
+\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
+\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
+\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
+\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
+\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
+\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
+
+% % % % % %
+% % Beginn of Diodes
+% % % % % %
+
+\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
+\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
+\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
+\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
+\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
+\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
+\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
+\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
+\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
+\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
+\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
+\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
+\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
+\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
+\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
+\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
+
+\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
+\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
+\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
+\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
+\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
+\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
+\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
+\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
+\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
+\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
+
+\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
+\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
+%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
+
+\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
+\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
+\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
+\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
+\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
+\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
+\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
+\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
+\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
+\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
+
+%% Define Shortcuts
+\compattikzset{Do/.style = {\comnpatname empty diode}}
+\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
+\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
+\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
+\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
+\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
+\compattikzset{leDo/.style = {\comnpatname empty led}}
+\compattikzset{VCo/.style = {\comnpatname empty varcap}}
+\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
+\compattikzset{Tro/.style = {\comnpatname empty triac}}
+
+\compattikzset{D*/.style = {\comnpatname full diode}}
+\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
+\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
+\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
+\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
+\compattikzset{pD*/.style = {\comnpatname full photodiode}}
+\compattikzset{leD*/.style = {\comnpatname full led}}
+\compattikzset{VC*/.style = {\comnpatname full varcap}}
+\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
+\compattikzset{Tr*/.style = {\comnpatname full triac}}
+
+\compattikzset{D/.style = {\comnpatname diode}}
+\compattikzset{tD/.style = {\comnpatname tunnel diode}}
+\compattikzset{zD/.style = {\comnpatname Zener diode}}
+\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
+\compattikzset{sD/.style = {\comnpatname Schottky diode}}
+\compattikzset{pD/.style = {\comnpatname photodiode}}
+\compattikzset{leD/.style = {\comnpatname led}}
+\compattikzset{VC/.style = {\comnpatname varcap}}
+\compattikzset{Ty/.style = {\comnpatname thyristor}}
+\compattikzset{Tr/.style = {\comnpatname triac}}
+
+\compattikzset{D-/.style = {\comnpatname stroke diode}}
+\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
+\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
+\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
+\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
+\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
+\compattikzset{leD-/.style = {\comnpatname stroke led}}
+\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
+\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
+\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
+
+% % % % % %
+% % End of Diodes
+% % % % % %
+
+
+\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
+\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
+\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
+\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spst@path, l=#1}}
+\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
+
+\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
+\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
+\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
+
+% short forms
+\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+
+\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path}}
+\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosource@path}}
+
+\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
+\compattikzset{isource/.style = {\comnpatname current source = #1}}
+\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
+\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+
+\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+
+\compattikzset{R/.style= {\comnpatname resistor = #1}}
+%\ifpgf@circuit@compat\else\compattikzset{R/.style= {resistor = #1}}\fi
+\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
+\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
+\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
+\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
+\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
+\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
+\compattikzset{C/.style = {\comnpatname capacitor = #1}}
+\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
+\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
+\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
+\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
+\compattikzset{L/.style = {\comnpatname inductor = #1}}
+\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
+\compattikzset{V/.style = {\comnpatname voltage source = #1}}
+\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
+\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
+ \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
+ \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
+ \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+\compattikzset{I/.style = {\comnpatname current source = #1}}
+\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
+ \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
+ \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
+ \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+
+
+
+\compattikzset{Mr/.style = {\comnpatname memristor}}
+
+\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
+\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
+\compattikzset{spst/.style = {\comnpatname switch = #1}}
+
+\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
+
+\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
+\compattikzset{vss/.style = {\comnpatname vee = #1}}
+
+\def\inheritlogicport#1#2{
+ \pgfdeclareshape{#2 port}{
+ \inheritsavedanchors[from=#1 #2 port]
+ \inheritbackgroundpath[from=#1 #2 port]
+ \inheritanchor[from=#1 #2 port]{in}
+ \inheritanchor[from=#1 #2 port]{in 1}
+ \inheritanchor[from=#1 #2 port]{in 2}
+ \inheritanchor[from=#1 #2 port]{out}
+ \inheritanchor[from=#1 #2 port]{center}
+ \inheritanchor[from=#1 #2 port]{left}
+ }
+}
+
+\ifpgf@circuit@europeanlogicport
+ \inheritlogicport{european}{and}
+ \inheritlogicport{european}{or}
+ \inheritlogicport{european}{xor}
+ \inheritlogicport{european}{not}
+ \inheritlogicport{european}{nand}
+ \inheritlogicport{european}{nor}
+ \inheritlogicport{european}{xnor}
+\else
+ \inheritlogicport{american}{and}
+ \inheritlogicport{american}{or}
+ \inheritlogicport{american}{xor}
+ \inheritlogicport{american}{not}
+ \inheritlogicport{american}{nand}
+ \inheritlogicport{american}{nor}
+ \inheritlogicport{american}{xnor}
+\fi
+
+% Transistor like bipoles
+
+\def\pgf@circ@trans@path#1#2{
+ \pgfextra{
+ \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
+ \def\pgf@circ@temp{#2}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
+ \fi
+ }
+ \ifpgf@circuit@bipole@inverted
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ \else
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ \fi
+ \pgfextra{
+ \pgf@circ@slope{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \pgfmathadd{\pgfmathresult}{-90}
+ \edef\pgf@circ@direction{\pgfmathresult}
+ }
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)
+ node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
+ (\ctikzvalof{bipole/name}) {} node {\ctikzvalof{bipole/label/name}}
+ node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
+ (\ctikzvalof{bipole/name}) {} node {\ctikzvalof{bipole/value/name}}
+ \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
+ (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
+ \else
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
+ (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ (\tikztotarget) \tikztonodes % e si continua
+}
+
+
+\def\pgf@circ@definetranspath#1{
+ \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
+}
+
+\pgf@circ@definetranspath{elmech}
+\pgf@circ@definetranspath{nmos}
+\pgf@circ@definetranspath{pmos}
+\pgf@circ@definetranspath{npn}
+\pgf@circ@definetranspath{pnp}
+\pgf@circ@definetranspath{nfet}
+\pgf@circ@definetranspath{nigfete}
+\pgf@circ@definetranspath{nigfetd}
+\pgf@circ@definetranspath{nigfetebulk}
+\pgf@circ@definetranspath{pfet}
+\pgf@circ@definetranspath{pigfete}
+\pgf@circ@definetranspath{pigfetd}
+\pgf@circ@definetranspath{pigfetebulk}
+\pgf@circ@definetranspath{njfet}
+\pgf@circ@definetranspath{pjfet}
+\pgf@circ@definetranspath{pigbt}
+\pgf@circ@definetranspath{nigbt}
+\pgf@circ@definetranspath{Lpigbt}
+\pgf@circ@definetranspath{Lnigbt}%%%---------- close: tex/pgfcircpath
+
+\ifpgf@circ@siunitx
+ \RequirePackage{xstring}[2009/03/13]
+ %\expandafter\let\csname angstrom\endcsname\relax
+ \RequirePackage{siunitx}
+\fi
+
+
+
+\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
+%override (unused) circuitikz environment for compability to externalization)
+\let\circuitikz\tikzpicture
+\let\endcircuitikz\endtikzpicture
+
+\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.7.sty b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.7.sty
index 3b0a448ef0..d3f41fd302 100644
--- a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.7.sty
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.7.sty
@@ -1,20 +1,16 @@
-% Copyright 2007-2016 by Massimo Redaelli
+% Copyright 2018-2021 by Romano Giannetti
+% Copyright 2015-2021 by Stefan Lindner
+% Copyright 2013-2021 by Stefan Erhardt
+% Copyright 2007-2021 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
%
-% See the file doc/LICENSE for more details.
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-%%%%%
-%%%%%
-%%%%%
-%%%%% Se c'รจ l'opzione symbol, fallback to siunitx with warning
-%%%%%
-%%%%%
-
\NeedsTeXFormat{LaTeX2e}
\def\pgfcircversion{0.7}
@@ -23,10660 +19,5 @@
\ProvidesPackage{circuitikz-0.7}
[\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]
-%% Version 2.0 of pgf/TikZ is required
-\RequirePackage{tikz}
-\usetikzlibrary{calc}
-\usepgflibrary{arrows}
-
-
-% The options are listed in the manual in this order
-
-\DeclareOption{europeanvoltage}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{straightvoltages}{
- \pgf@circuit@bipole@voltage@straighttrue
-}
-
-\DeclareOption{americanvoltage}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrent}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrent}{
- \ctikzset{current = american}
-}
-
-
-
-\DeclareOption{americanresistor}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistor}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductor}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductor}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductor}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanport}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanport}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{europeanport}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{european}{
- \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
- \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester = european}
-}
-
-\DeclareOption{american}{
- \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester = american}
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{fulldiodes}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiodes}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{europeanvoltages}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{americanvoltages}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrents}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrents}{
- \ctikzset{current = american}
-}
-
-\DeclareOption{americanresistors}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistors}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductors}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductors}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductors}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanports}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanports}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{americangfsurgearrester}{
- \ctikzset{gas filled surge arrester = american}
-}
-
-\DeclareOption{europeangfsurgearrester}{
- \ctikzset{gas filled surge arrester = european}
-}
-
-\DeclareOption{siunitx}{
- \pgf@circ@siunitxtrue
-}
-
-\DeclareOption{nosiunitx}{
- \pgf@circ@siunitxfalse
-}
-
-\DeclareOption{fulldiode}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiode}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{strokediode}{
- \ctikzset{diode = stroke}
-}
-
-\DeclareOption{arrowmos}{
- \pgf@circuit@mos@arrowstrue
-}
-
-\DeclareOption{noarrowmos}{
- \pgf@circuit@mos@arrowsfalse
-}
-
-\DeclareOption{fetbodydiode}{
- \pgf@circuit@fet@bodydiodetrue
-}
-
-\DeclareOption{nofetbodydiode}{
- \pgf@circuit@fet@bodydiodefalse
-}
-
-\DeclareOption{fetsolderdot}{
- \pgf@circuit@fet@solderdottrue
-}
-
-\DeclareOption{nofetsolderdot}{
- \pgf@circuit@fet@solderdotfalse
-}
-
-\DeclareOption{emptypmoscircle}{
- \pgf@circuit@pmos@emptycircletrue
-}
-
-
-\DeclareOption{lazymos}{
- \ctikzset{tripoles/nmos/width=.5}
- \ctikzset{tripoles/nmos/gate height=.35}
- \ctikzset{tripoles/nmos/base height=.35}
- \ctikzset{tripoles/nmos/height/.initial=1.2}
- \ctikzset{tripoles/nmos/base width=.5}
- \ctikzset{tripoles/nmos/gate width=.65}
-
- \ctikzset{tripoles/pmos/width=.5}
- \ctikzset{tripoles/pmos/gate height=.35}
- \ctikzset{tripoles/pmos/base height=.35}
- \ctikzset{tripoles/pmos/height/.initial=1.2}
- \ctikzset{tripoles/pmos/base width=.5}
- \ctikzset{tripoles/pmos/gate width=.65}
-
- \pgf@circuit@pmos@emptycircletrue
-}
-
-\DeclareOption{straightlabels}{
- \ctikzset{label/align = straight}
-}
-
-\DeclareOption{rotatelabels}{
- \ctikzset{label/align = rotate}
-}
-
-\DeclareOption{smartlabels}{
- \ctikzset{label/align = smart}
-}
-
-\DeclareOption{compatibility}{
- \pgf@circuit@compattrue
-}
-
-\DeclareOption{oldvoltagedirection}{
- \pgf@circ@oldvoltagedirectiontrue
-}
-\DeclareOption{nooldvoltagedirection}{
- \pgf@circ@oldvoltagedirectionfalse
-}
-
-\DeclareOption{betterproportions}{
- \ctikzset{monopoles/ground/width/.initial=.15}
-
- \ctikzset{bipoles/resistor/height/.initial=.23}
- \ctikzset{bipoles/resistor/width/.initial=.6}
- \ctikzset{bipoles/capacitor/height/.initial=.4}
- \ctikzset{bipoles/capacitor/width/.initial=.1}
- \ctikzset{bipoles/potentiometer/height/.initial=.6}
- \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/potentiometer/width/.initial=.6}
- \ctikzset{bipoles/photoresistor/height/.initial=.6}
- \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
- \ctikzset{bipoles/photoresistor/width/.initial=.6}
- \ctikzset{bipoles/thermistor/main/.initial=.7}
- \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistor/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/main/.initial=.7}
- \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
- \ctikzset{bipoles/thermistorptc/width/.initial=.6}
- \ctikzset{bipoles/thermistorptc/main/.initial=.7}
- \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/main/.initial=.7}
- \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/width/.initial=.6}
- \ctikzset{bipoles/vresistor/height/.initial=.45}
- \ctikzset{bipoles/vresistor/width/.initial=.6}
- \ctikzset{bipoles/generic/height/.initial=.23}
- \ctikzset{bipoles/generic/width/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
- \ctikzset{bipoles/ageneric/height/.initial=.23}
- \ctikzset{bipoles/ageneric/width/.initial=.6}
- \ctikzset{bipoles/memristor/height/.initial=.23}
- \ctikzset{bipoles/memristor/wave height/.initial=.375}
- \ctikzset{bipoles/memristor/width/.initial=.60}
- \ctikzset{bipoles/tgeneric/height/.initial=.525}
- \ctikzset{bipoles/tgeneric/width/.initial=.6}
- \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
- \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
- \ctikzset{bipoles/fullgeneric/height/.initial=.23}
- \ctikzset{bipoles/fullgeneric/width/.initial=.6}
- \ctikzset{bipoles/diode/height/.initial=.3}
- \ctikzset{bipoles/diode/width/.initial=.25}
-
- \ctikzset{tripoles/thyristor/height/.initial=.66}
- \ctikzset{tripoles/thyristor/height 2/.initial=.3}
- \ctikzset{tripoles/thyristor/width/.initial=.6}
- \ctikzset{tripoles/thyristor/diode height/.initial=.3}
- \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
- \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
- \ctikzset{tripoles/triac/height/.initial=.66}
- \ctikzset{tripoles/triac/width/.initial=.6}
- \ctikzset{tripoles/triac/diode width left/.initial=.3}
- \ctikzset{tripoles/triac/diode width right/.initial=.3}
-}
-
-%%%%%%%%%
-%%%%%%%%%%% Springe nach tex/pgfcirc.defines
-%%%---------- open: tex/pgfcirc.defines.tex
-
-%% Options
-
-%%%%%%%%%%%%
-%% Dimensions
-
-% coordinates
-\newdimen\pgf@circ@res@up
-\newdimen\pgf@circ@res@down
-\newdimen\pgf@circ@res@zero
-\newdimen\pgf@circ@res@left
-\newdimen\pgf@circ@res@right
-\newdimen\pgf@circ@res@other
-\newdimen\pgf@circ@res@step
-\newdimen\pgf@circ@res@temp
-% inital thickness
-\newdimen \pgfstartlinewidth
-%% Keys
-
-\long\def\pgf@circ@comment#1{}
-
-\def\circuitikzbasekey{/tikz/circuitikz}
-
-\pgfkeys{\circuitikzbasekey/.is family}
-
-\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
-\let\ctikzset\circuitikzset
-\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
-\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circuit@compat
-\newif\ifpgf@circ@oldvoltagedirection
-
-% Option ">" for twoports
-\newif\ifpgf@circuit@inputarrow
-\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/.is choice}
-\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
-
-% Option "boxed" for nodes and twoports
-\newif\ifpgf@circuit@boxed
-\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
-
-% Option "dashed" for nodes and twoports
-\newif\ifpgf@circuit@dashed
-\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
-\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}
-
-% Option "t=*" for nodes
-\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
-
-
-
-\ctikzset{bipoles/.is family}
-\ctikzset{bipoles/border margin/.initial=1.1}
-\ctikzset{bipoles/thickness/.initial=2}
-\ctikzset{bipoles/length/.initial=1.4cm}
-\ctikzset{nodes width/.initial=.04}
-\newdimen\pgf@circ@Rlen
-\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1}}
-
-\ctikzset{monopoles/.is family}
-\ctikzset{monopoles/ground/width/.initial=.25}
-\ctikzset{monopoles/tground/thickness/.initial=3}
-\ctikzset{monopoles/vcc/width/.initial=.2}
-\ctikzset{monopoles/match/width/.initial=.4}
-\ctikzset{monopoles/chassis/width/.initial=.25}
-\ctikzset{monopoles/alternative chassis/width/.initial=.25}
-\ctikzset{monopoles/equipotentiality/width/.initial=.25}
-\ctikzset{monopoles/tlinestub/width/.initial=.25}
-\ctikzset{monopoles/antenna/width/.initial=.25}
-\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/width/.initial=.25}
-\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/rxantenna/width/.initial=.25}
-
-\ctikzset{bipoles/resistor/height/.initial=.3}
-\ctikzset{bipoles/resistor/width/.initial=.8}
-\ctikzset{bipoles/potentiometer/height/.initial=.8}
-\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
-\ctikzset{bipoles/potentiometer/width/.initial=.8}
-\ctikzset{bipoles/photoresistor/height/.initial=.6}
-\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
-\ctikzset{bipoles/photoresistor/width/.initial=.8}
-\ctikzset{bipoles/thermistor/main/.initial=.7}
-\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/width/.initial=.8}
-\ctikzset{bipoles/thermistorntc/main/.initial=.7}
-\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistorptc/width/.initial=.8}
-\ctikzset{bipoles/thermistorptc/main/.initial=.7}
-\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistor/width/.initial=.8}
-\ctikzset{bipoles/varistor/main/.initial=.7}
-\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/varistor/width/.initial=.8}
-\ctikzset{bipoles/vresistor/height/.initial=.6}
-\ctikzset{bipoles/vresistor/width/.initial=.8}
-\ctikzset{bipoles/cuteinductor/height/.initial=.3}
-\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
-\ctikzset{bipoles/cuteinductor/width/.initial=.6}
-\ctikzset{bipoles/cuteinductor/coils/.initial=5}
-\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-\ctikzset{bipoles/americaninductor/height/.initial=.3}
-\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
-\ctikzset{bipoles/americaninductor/width/.initial=.8}
-\ctikzset{bipoles/americaninductor/coils/.initial=4}
-\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
-\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
-\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
-\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
-\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
-\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
-\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/esource/height/.initial=.60}
-\ctikzset{bipoles/esource/width/.initial=.60}
-\ctikzset{bipoles/pvsource/height/.initial=.60}
-\ctikzset{bipoles/pvsource/width/.initial=.60}
-\ctikzset{bipoles/isource/height/.initial=.60}
-\ctikzset{bipoles/isource/width/.initial=.60}
-\ctikzset{bipoles/oosource/height/.initial=.60}
-\ctikzset{bipoles/oosource/width/.initial=.60}
-\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/dcisource/height/.initial=.60}
-\ctikzset{bipoles/dcisource/width/.initial=.60}
-\ctikzset{bipoles/dcvsource/height/.initial=.60}
-\ctikzset{bipoles/dcvsource/width/.initial=.60}
-\ctikzset{bipoles/vsourcetri/height/.initial=.60}
-\ctikzset{bipoles/vsourcetri/width/.initial=.60}
-\ctikzset{bipoles/isourceam/height/.initial=.60}
-\ctikzset{bipoles/isourceam/width/.initial=.60}
-\ctikzset{bipoles/vsource/height/.initial=.60}
-\ctikzset{bipoles/vsource/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/height/.initial=.60}
-\ctikzset{bipoles/vsourceam/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/margin/.initial=.7}
-\ctikzset{bipoles/isourcesin/height/.initial=.60}
-\ctikzset{bipoles/isourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesin/height/.initial=.60}
-\ctikzset{bipoles/vsourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
-\ctikzset{bipoles/cisource/height/.initial=.7}
-\ctikzset{bipoles/cisource/width/.initial=.7}
-\ctikzset{bipoles/cisourceam/height/.initial=.7}
-\ctikzset{bipoles/cisourceam/width/.initial=.7}
-\ctikzset{bipoles/cvsource/height/.initial=.7}
-\ctikzset{bipoles/cvsource/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/height/.initial=.7}
-\ctikzset{bipoles/cvsourceam/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
-\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
-\ctikzset{bipoles/cisourcesin/width/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
-\ctikzset{bipoles/capacitor/height/.initial=.6}
-\ctikzset{bipoles/capacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/height/.initial=.5}
-\ctikzset{bipoles/ecapacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/font/.initial= \fontsize{6}{0}\selectfont\boldmath}
-\ctikzset{bipoles/pcapacitor/height/.initial=.6}
-\ctikzset{bipoles/pcapacitor/width/.initial=.2}
-\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
-\ctikzset{bipoles/vcapacitor/height/.initial=.6}
-\ctikzset{bipoles/vcapacitor/width/.initial=.5}
-\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
-\ctikzset{bipoles/piezoelectric/height/.initial=.7}
-\ctikzset{bipoles/piezoelectric/width/.initial=.5}
-\ctikzset{bipoles/battery/height/.initial=.6}
-\ctikzset{bipoles/battery/width/.initial=.3}
-\ctikzset{bipoles/battery1/height/.initial=.6}
-\ctikzset{bipoles/battery1/width/.initial=.3}
-\ctikzset{bipoles/diode/height/.initial=.50}
-\ctikzset{bipoles/diode/width/.initial=.40}
-\ctikzset{bipoles/varcap/height/.initial=.50}
-\ctikzset{bipoles/varcap/width/.initial=.45}
-\ctikzset{bipoles/interr/height/.initial=.35}
-\ctikzset{bipoles/interr/width/.initial=.35}
-\ctikzset{bipoles/interr/height 2/.initial=.1}
-\ctikzset{bipoles/generic/height/.initial=.30}
-\ctikzset{bipoles/generic/width/.initial=.80}
-\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
-\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
-\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
-\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
-\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
-\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
-\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
-\ctikzset{bipoles/fuse/height/.initial=.20}
-\ctikzset{bipoles/fuse/width/.initial=.50}
-\ctikzset{bipoles/afuse/height/.initial=.20}
-\ctikzset{bipoles/afuse/width/.initial=.50}
-\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
-\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
-\ctikzset{bipoles/ageneric/height/.initial=.30}
-\ctikzset{bipoles/ageneric/width/.initial=.80}
-\ctikzset{bipoles/memristor/height/.initial=.30}
-\ctikzset{bipoles/memristor/wave height/.initial=.5}
-\ctikzset{bipoles/memristor/width/.initial=.80}
-\ctikzset{bipoles/tgeneric/height/.initial=.70}
-\ctikzset{bipoles/tgeneric/width/.initial=.80}
-\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
-\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
-\ctikzset{bipoles/fullgeneric/height/.initial=.30}
-\ctikzset{bipoles/fullgeneric/width/.initial=.80}
-\ctikzset{bipoles/open/height/.initial=.25}
-\ctikzset{bipoles/open/width/.initial=.8}
-\ctikzset{bipoles/ammeter/height/.initial=.60}
-\ctikzset{bipoles/ammeter/width/.initial=.60}
-\ctikzset{bipoles/ohmmeter/height/.initial=.60}
-\ctikzset{bipoles/ohmmeter/width/.initial=.60}
-\ctikzset{bipoles/voltmeter/height/.initial=.60}
-\ctikzset{bipoles/voltmeter/width/.initial=.60}
-\ctikzset{bipoles/buffer/height/.initial=1}
-\ctikzset{bipoles/buffer/width/.initial=1}
-\ctikzset{bipoles/not port/width/.initial=1}
-\ctikzset{bipoles/not port/height/.initial=.8}
-\ctikzset{bipoles/not port/circle width/.initial=.15}
-\ctikzset{bipoles/lamp/height/.initial=.60}
-\ctikzset{bipoles/lamp/width/.initial=.60}
-\ctikzset{bipoles/tline/height/.initial=.3}
-\ctikzset{bipoles/tline/width/.initial=.8}
-\ctikzset{bipoles/squid/height/.initial=.60}
-\ctikzset{bipoles/squid/width/.initial=.60}
-\ctikzset{bipoles/barrier/height/.initial=.60}
-\ctikzset{bipoles/barrier/width/.initial=.60}
-\ctikzset{bipoles/thermocouple/height/.initial=.250}
-\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
-\ctikzset{bipoles/thermocouple/width/.initial=.140}
-\ctikzset{bipoles/pushbutton/height/.initial=.5}
-\ctikzset{bipoles/pushbutton/height 2/.initial=.0}
-\ctikzset{bipoles/pushbutton/width/.initial=.50}
-
-\ctikzset{bipoles/twoport/width/.initial=.7}
-\ctikzset{bipoles/twoport/height/.initial=.7}
-\ctikzset{bipoles/twoport/text/.initial=}
-\ctikzset{bipoles/vco/width/.initial=.7}
-\ctikzset{bipoles/bandpass/width/.initial=.7}
-\ctikzset{bipoles/highpass/width/.initial=.7}
-\ctikzset{bipoles/lowpass/width/.initial=.7}
-\ctikzset{bipoles/adc/width/.initial=.7}
-\ctikzset{bipoles/dac/width/.initial=.7}
-\ctikzset{bipoles/dsp/width/.initial=.7}
-\ctikzset{bipoles/fft/width/.initial=.7}
-\ctikzset{bipoles/amp/width/.initial=.7}
-\ctikzset{bipoles/vamp/width/.initial=.7}
-\ctikzset{bipoles/piattenuator/width/.initial=.7}
-\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
-\ctikzset{bipoles/tattenuator/width/.initial=.7}
-\ctikzset{bipoles/vtattenuator/width/.initial=.7}
-\ctikzset{bipoles/phaseshifter/width/.initial=.7}
-\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
-\ctikzset{bipoles/detector/width/.initial=.7}
-
-
-\newif\ifpgf@circuit@trans@depletiontype
-\pgf@circuit@trans@depletiontypefalse
-
-\newif\ifpgf@circuit@mos@arrows
-\ctikzset{tripoles/mos style/.is choice}
-\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
-\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
-
-% Option solderdot for fet
-\newif\ifpgf@circuit@fet@solderdot
-\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-
-% Option bodydiode for fet
-\newif\ifpgf@circuit@fet@bodydiode
-\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-
-% Option draw fet without gate connection
-\newif\ifpgf@circuit@bpt@drawgate
-\pgf@circuit@bpt@drawgatetrue
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-
-% Option draw bpt without base connection
-\newif\ifpgf@circuit@bpt@drawbase
-\pgf@circuit@bpt@drawbasetrue
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-
-% Option draw bpt with optical input
-\newif\ifpgf@circuit@bpt@drawphoto
-\pgf@circuit@bpt@drawphotofalse
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-
-% Option draw pmos with empty circle
-\newif\ifpgf@circuit@pmos@emptycircle
-\newif\ifpgf@circuit@pmos@emptycircle
-\pgf@circuit@pmos@emptycirclefalse
-\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-
-
-\newif\ifpgf@circuit@trans@ntype
-\pgf@circuit@trans@ntypetrue %default true
-%\newif\ifpgf@circuit@trans@ptype
-%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
-\ctikzset{tripoles/nmos/width/.initial=.7}
-\ctikzset{tripoles/nmos/gate height/.initial=.35}
-\ctikzset{tripoles/nmos/base height/.initial=.5}
-\ctikzset{tripoles/nmos/conn height/.initial=0}
-\ctikzset{tripoles/nmos/height/.initial=1.1}
-\ctikzset{tripoles/nmos/base width/.initial=.5}
-\ctikzset{tripoles/nmos/gate width/.initial=.62}
-\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nmos/curr direction/.initial=1}
-
-\ctikzset{tripoles/pmos/width/.initial=.7}
-\ctikzset{tripoles/pmos/gate height/.initial=.35}
-\ctikzset{tripoles/pmos/base height/.initial=.5}
-\ctikzset{tripoles/pmos/conn height/.initial=0}
-\ctikzset{tripoles/pmos/height/.initial=1.1}
-\ctikzset{tripoles/pmos/base width/.initial=.5}
-\ctikzset{tripoles/pmos/gate width/.initial=.62}
-\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pmos/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nfet/width/.initial=.7}
-\ctikzset{tripoles/nfet/gate height/.initial=.35}
-\ctikzset{tripoles/nfet/base height/.initial=.5}
-\ctikzset{tripoles/nfet/conn height/.initial=0}
-\ctikzset{tripoles/nfet/height/.initial=1.1}
-\ctikzset{tripoles/nfet/base width/.initial=.5}
-\ctikzset{tripoles/nfet/gate width/.initial=.62}
-\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pfet/width/.initial=.7}
-\ctikzset{tripoles/pfet/gate height/.initial=.35}
-\ctikzset{tripoles/pfet/base height/.initial=.5}
-\ctikzset{tripoles/pfet/conn height/.initial=0}
-\ctikzset{tripoles/pfet/height/.initial=1.1}
-\ctikzset{tripoles/pfet/base width/.initial=.5}
-\ctikzset{tripoles/pfet/gate width/.initial=.62}
-\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigfete/width/.initial=.7}
-\ctikzset{tripoles/nigfete/gate height/.initial=.35}
-\ctikzset{tripoles/nigfete/base height/.initial=.5}
-\ctikzset{tripoles/nigfete/conn height/.initial=.35}
-\ctikzset{tripoles/nigfete/height/.initial=1.1}
-\ctikzset{tripoles/nigfete/base width/.initial=.5}
-\ctikzset{tripoles/nigfete/gate width/.initial=.62}
-\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfete/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetd/width/.initial=.7}
-\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetd/base height/.initial=.5}
-\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetd/height/.initial=1.1}
-\ctikzset{tripoles/nigfetd/base width/.initial=.5}
-\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
-
-\ctikzset{tripoles/pigfete/width/.initial=.7}
-\ctikzset{tripoles/pigfete/gate height/.initial=.35}
-\ctikzset{tripoles/pigfete/base height/.initial=.5}
-\ctikzset{tripoles/pigfete/conn height/.initial=.35}
-\ctikzset{tripoles/pigfete/height/.initial=1.1}
-\ctikzset{tripoles/pigfete/base width/.initial=.5}
-\ctikzset{tripoles/pigfete/gate width/.initial=.62}
-\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetd/width/.initial=.7}
-\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetd/base height/.initial=.5}
-\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetd/height/.initial=1.1}
-\ctikzset{tripoles/pigfetd/base width/.initial=.5}
-\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
-
-\ctikzset{tripoles/npn/width/.initial=.6}
-\ctikzset{tripoles/npn/base height/.initial=.45}
-\ctikzset{tripoles/npn/base height 2/.initial=.15}
-\ctikzset{tripoles/npn/base height/.initial=.4}
-\ctikzset{tripoles/npn/conn height/.initial=0}
-\ctikzset{tripoles/npn/height/.initial=1.1}
-\ctikzset{tripoles/npn/base width/.initial=.5}
-\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/npn/curr direction/.initial=1}
-
-\ctikzset{tripoles/pnp/width/.initial=.6}
-\ctikzset{tripoles/pnp/base height/.initial=.45}
-\ctikzset{tripoles/pnp/base height 2/.initial=.15}
-\ctikzset{tripoles/pnp/base height/.initial=.4}
-\ctikzset{tripoles/pnp/conn height/.initial=0}
-\ctikzset{tripoles/pnp/height/.initial=1.1}
-\ctikzset{tripoles/pnp/base width/.initial=.5}
-\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pnp/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigbt/width/.initial=.6}
-\ctikzset{tripoles/pigbt/gate height/.initial=.45}
-\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/pigbt/base height/.initial=.4}
-\ctikzset{tripoles/pigbt/conn height/.initial=0}
-\ctikzset{tripoles/pigbt/height/.initial=1.1}
-\ctikzset{tripoles/pigbt/gate width/.initial=.62}
-\ctikzset{tripoles/pigbt/base width/.initial=.5}
-\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigbt/width/.initial=.6}
-\ctikzset{tripoles/nigbt/gate height/.initial=.45}
-\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/nigbt/base height/.initial=.4}
-\ctikzset{tripoles/nigbt/conn height/.initial=0}
-\ctikzset{tripoles/nigbt/height/.initial=1.1}
-\ctikzset{tripoles/nigbt/gate width/.initial=.62}
-\ctikzset{tripoles/nigbt/base width/.initial=.5}
-\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/Lpigbt/width/.initial=.6}
-\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/Lnigbt/width/.initial=.6}
-\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/njfet/width/.initial=.7}
-\ctikzset{tripoles/njfet/gate height/.initial=.5}
-\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/njfet/gate width/.initial=.5}
-\ctikzset{tripoles/njfet/conn height/.initial=.35}
-\ctikzset{tripoles/njfet/height/.initial=1.1}
-\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/njfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pjfet/width/.initial=.7}
-\ctikzset{tripoles/pjfet/gate height/.initial=.5}
-\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/pjfet/gate width/.initial=.5}
-\ctikzset{tripoles/pjfet/conn height/.initial=.35}
-\ctikzset{tripoles/pjfet/height/.initial=1.1}
-\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/isfet/width/.initial=1}
-\ctikzset{tripoles/isfet/gate height/.initial=.35}
-\ctikzset{tripoles/isfet/base height/.initial=.5}
-\ctikzset{tripoles/isfet/height/.initial=1.1}
-\ctikzset{tripoles/isfet/base width/.initial=.3}
-\ctikzset{tripoles/isfet/gate width/.initial=.5}
-\ctikzset{tripoles/isfet/conn height/.initial=0}
-\ctikzset{tripoles/isfet/wave width/.initial=.16}
-\ctikzset{tripoles/isfet/wave amp/.initial=.06}
-\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
-\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
-\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/isfet/curr direction/.initial=1}
-
-\newif\ifpgf@circuit@europeanlogicport
-\ctikzset{logic ports/.is choice}
-\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue } }
-\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse } }
-
-
-\ctikzset{tripoles/american and port/width/.initial=1.1}
-\ctikzset{tripoles/american and port/height/.initial=.8}
-\ctikzset{tripoles/american and port/port width/.initial=.7}
-\ctikzset{tripoles/american and port/input height/.initial=.5}
-\ctikzset{tripoles/american nand port/width/.initial=1.1}
-\ctikzset{tripoles/american nand port/height/.initial=.8}
-\ctikzset{tripoles/american nand port/port width/.initial=.7}
-\ctikzset{tripoles/american nand port/circle width/.initial=.15}
-\ctikzset{tripoles/american nand port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/width/.initial=1.1}
-\ctikzset{tripoles/american or port/height/.initial=.8}
-\ctikzset{tripoles/american or port/port width/.initial=.7}
-\ctikzset{tripoles/american or port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/input skip/.initial=.25}
-\ctikzset{tripoles/american or port/aaa/.initial=.6}
-\ctikzset{tripoles/american or port/bbb/.initial=.4}
-\ctikzset{tripoles/american or port/ccc/.initial=.5}
-\ctikzset{tripoles/american or port/ddd/.initial=.0}
-\ctikzset{tripoles/american nor port/width/.initial=1.1}
-\ctikzset{tripoles/american nor port/height/.initial=.8}
-\ctikzset{tripoles/american nor port/port width/.initial=.7}
-\ctikzset{tripoles/american nor port/input height/.initial=.5}
-\ctikzset{tripoles/american nor port/input skip/.initial=.25}
-\ctikzset{tripoles/american nor port/circle width/.initial=.15}
-\ctikzset{tripoles/american nor port/aaa/.initial=.6}
-\ctikzset{tripoles/american nor port/bbb/.initial=.4}
-\ctikzset{tripoles/american nor port/ccc/.initial=.5}
-\ctikzset{tripoles/american nor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xor port/width/.initial=1.1}
-\ctikzset{tripoles/american xor port/height/.initial=.8}
-\ctikzset{tripoles/american xor port/port width/.initial=.7}
-\ctikzset{tripoles/american xor port/input height/.initial=.5}
-\ctikzset{tripoles/american xor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xor port/distance/.initial=.1}
-\ctikzset{tripoles/american xor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xnor port/width/.initial=1.1}
-\ctikzset{tripoles/american xnor port/height/.initial=.8}
-\ctikzset{tripoles/american xnor port/port width/.initial=.7}
-\ctikzset{tripoles/american xnor port/input height/.initial=.5}
-\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xnor port/distance/.initial=.1}
-\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
-\ctikzset{tripoles/european and port/width/.initial=1.4}
-\ctikzset{tripoles/european and port/height/.initial=.65}
-\ctikzset{tripoles/european and port/reserved/.initial=.6}
-\ctikzset{tripoles/european and port/input height/.initial=.6}
-\ctikzset{tripoles/european or port/width/.initial=1.4}
-\ctikzset{tripoles/european or port/height/.initial=.65}
-\ctikzset{tripoles/european or port/reserved/.initial=.6}
-\ctikzset{tripoles/european or port/input height/.initial=.6}
-\ctikzset{tripoles/european xor port/width/.initial=1.4}
-\ctikzset{tripoles/european xor port/height/.initial=.65}
-\ctikzset{tripoles/european xor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xor port/input height/.initial=.6}
-\ctikzset{tripoles/european nand port/width/.initial=1.4}
-\ctikzset{tripoles/european nand port/not height/.initial=.3}
-\ctikzset{tripoles/european nand port/not width/.initial=.8}
-\ctikzset{tripoles/european nand port/height/.initial=.65}
-\ctikzset{tripoles/european nand port/reserved/.initial=.6}
-\ctikzset{tripoles/european nand port/input height/.initial=.6}
-\ctikzset{tripoles/european not port/width/.initial=1.4}
-\ctikzset{tripoles/european not port/not height/.initial=.3}
-\ctikzset{tripoles/european not port/not width/.initial=.8}
-\ctikzset{tripoles/european not port/height/.initial=.65}
-\ctikzset{tripoles/european not port/reserved/.initial=.6}
-\ctikzset{tripoles/european not port/input height/.initial=0}
-\ctikzset{tripoles/european xnor port/width/.initial=1.4}
-\ctikzset{tripoles/european xnor port/not height/.initial=.3}
-\ctikzset{tripoles/european xnor port/not width/.initial=.8}
-\ctikzset{tripoles/european xnor port/height/.initial=.65}
-\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xnor port/input height/.initial=.6}
-\ctikzset{tripoles/european nor port/width/.initial=1.4}
-\ctikzset{tripoles/european nor port/not height/.initial=.3}
-\ctikzset{tripoles/european nor port/not width/.initial=.8}
-\ctikzset{tripoles/european nor port/height/.initial=.65}
-\ctikzset{tripoles/european nor port/reserved/.initial=.6}
-\ctikzset{tripoles/european nor port/input height/.initial=.6}
-\ctikzset{tripoles/op amp/width/.initial=1.7}
-\ctikzset{tripoles/op amp/port width/.initial=.7}
-\ctikzset{tripoles/op amp/height/.initial=1.4}
-\ctikzset{tripoles/op amp/input height/.initial=.5}
-\ctikzset{tripoles/op amp/up pos/.initial=.45}
-\ctikzset{tripoles/op amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolut font size needed!
-\ctikzset{tripoles/gm amp/width/.initial=1.7}
-\ctikzset{tripoles/gm amp/port width/.initial=.7}
-\ctikzset{tripoles/gm amp/height/.initial=1.4}
-\ctikzset{tripoles/gm amp/input height/.initial=.5}
-\ctikzset{tripoles/gm amp/up pos/.initial=.45}
-\ctikzset{tripoles/plain amp/width/.initial=1.7}
-\ctikzset{tripoles/plain amp/port width/.initial=.7}
-\ctikzset{tripoles/plain amp/height/.initial=1.4}
-\ctikzset{tripoles/plain amp/input height/.initial=.5}
-\ctikzset{tripoles/plain amp/up pos/.initial=.45}
-
-\ctikzset{tripoles/thyristor/height/.initial=1.10}
-\ctikzset{tripoles/thyristor/height 2/.initial=.5}
-\ctikzset{tripoles/thyristor/width/.initial=1.0}
-\ctikzset{tripoles/thyristor/diode height/.initial=.5}
-\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
-\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
-\ctikzset{tripoles/triac/height/.initial=1.1}
-\ctikzset{tripoles/triac/width/.initial=1}
-\ctikzset{tripoles/triac/diode width left/.initial=.3}
-\ctikzset{tripoles/triac/diode width right/.initial=.3}
-
-\ctikzset{tripoles/spdt/width/.initial=.85}
-\ctikzset{tripoles/spdt/height/.initial=.45}
-\ctikzset{tripoles/spdt/margin/.initial=.45}
-
-\ctikzset{tripoles/toggleswitch/height/.initial=.8}
-\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
-\ctikzset{tripoles/toggleswitch/width/.initial=.80}
-
-\ctikzset{tripoles/mixer/width/.initial=0.7}
-\ctikzset{tripoles/adder/width/.initial=0.7}
-\ctikzset{tripoles/circulator/width/.initial=.7}
-\ctikzset{tripoles/oscillator/width/.initial=.7}
-
-
-\ctikzset{tripoles/wilkinson/height/.initial=1.3}
-\ctikzset{tripoles/wilkinson/width/.initial=1.3}
-
-\ctikzset{quadpoles/transformer/width/.initial=1.5}
-\ctikzset{quadpoles/transformer/width1/.initial=.4}
-\ctikzset{quadpoles/transformer/height/.initial=1.5}
-\ctikzset{quadpoles/transformer/height1/.initial=.8}
-\ctikzset{quadpoles/transformer core/width/.initial=1.5}
-\ctikzset{quadpoles/transformer core/height/.initial=1.5}
-\ctikzset{quadpoles/transformer core/core height/.initial=.5}
-\ctikzset{quadpoles/transformer core/core width/.initial=.05}
-\ctikzset{quadpoles/gyrator/width/.initial=1.5}
-\ctikzset{quadpoles/gyrator/height/.initial=1.5}
-\ctikzset{quadpoles/fourport/width/.initial=1.3}
-\ctikzset{quadpoles/fourport/height/.initial=1.3}
-\ctikzset{quadpoles/coupler/width/.initial=1.3}
-\ctikzset{quadpoles/coupler/height/.initial=1.3}
-\ctikzset{quadpoles/coupler2/width/.initial=1.3}
-\ctikzset{quadpoles/coupler2/height/.initial=1.3}
-
-\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
-
-
-% %Mechanical section
-\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
-\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
-\ctikzset{bipoles/spring/height/.initial=.5}
-\ctikzset{bipoles/spring/width/.initial=.5}
-\ctikzset{bipoles/mass/height/.initial=.55}
-\ctikzset{bipoles/mass/box height/.initial=.4}
-\ctikzset{bipoles/mass/width/.initial=.5}
-
-\ctikzset{bipoles/damper/height/.initial=.35}
-\ctikzset{bipoles/damper/length/.initial=.3}
-\ctikzset{bipoles/damper/width/.initial=.4}
-
-
-\ctikzset{bipole/.is family}
-\ctikzset{bipole/kind/.initial = }
-\ctikzset{bipole/name/.initial = }
-\newif\ifpgf@circuit@bipole@isvoltage
-\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
-\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
-\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
-\newif\ifpgf@circuit@bipole@strokedsymbol
-\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
-\newif\ifpgf@circuit@bipole@iscurrent
-\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
-
-\ctikzset{bipole/voltage/.is family}
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-\newif\ifpgf@circuit@bipole@voltage@below
-\ctikzset{bipole/voltage/position/.is choice}
-\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
-\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
-
-\ctikzset{bipole/voltage/label/unit/.initial=}
-\ctikzset{bipole/voltage/label/name/.initial=}
-
-\ctikzset{bipole/current/.is family}
-\newif\ifpgf@circuit@bipole@current@backward
-\ctikzset{bipole/current/direction/.is choice}
-\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
-\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
-\newif\ifpgf@circuit@bipole@current@before
-\ctikzset{bipole/current/x position/.is choice}
-\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
-\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
-\newif\ifpgf@circuit@bipole@current@below
-\ctikzset{bipole/current/y position/.is choice}
-\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
-\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
-
-\ctikzset{bipole/current/label/unit/.initial=}
-\ctikzset{bipole/current/label/name/.initial=}
-
-\ctikzset{bipole/label/.is family}
-\ctikzset{bipole/label/position/.initial=90}
-\ctikzset{bipole/label/unit/.initial=}
-\ctikzset{bipole/label/name/.initial=}
-\ctikzset{bipole/annotation/.is family}
-\ctikzset{bipole/annotation/position/.initial=-90}
-\ctikzset{bipole/annotation/unit/.initial=}
-\ctikzset{bipole/annotation/name/.initial=}
-\ctikzset{bipole/nodes/.is family}
-\ctikzset{bipole/nodes/left/.is choice}
-\ctikzset{bipole/nodes/left/none/.code={\ctikzsetvalof{bipole/nodes/left}{none}}}
-\ctikzset{bipole/nodes/left/empty/.code={\ctikzsetvalof{bipole/nodes/left}{empty}}}
-\ctikzset{bipole/nodes/left/full/.code={\ctikzsetvalof{bipole/nodes/left}{full}}}
-\ctikzset{bipole/nodes/left/diamond/.code={\ctikzsetvalof{bipole/nodes/left}{diamond}}}
-\ctikzset{bipole/nodes/right/.is choice}
-\ctikzset{bipole/nodes/right/none/.code={\ctikzsetvalof{bipole/nodes/right}{none}}}
-\ctikzset{bipole/nodes/right/empty/.code={\ctikzsetvalof{bipole/nodes/right}{empty}}}
-\ctikzset{bipole/nodes/right/full/.code={\ctikzsetvalof{bipole/nodes/right}{full}}}
-\ctikzset{bipole/nodes/right/diamond/.code={\ctikzsetvalof{bipole/nodes/right}{diamond}}}
-
-
-
-
-\newif\ifpgf@circuit@europeanresistor
-\ctikzset{resistor/.is choice}
-\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
-\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
-
-\ctikzset{inductor/.is choice}
-\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
-\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
-\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
-
-\newif\ifpgf@circuit@strokediode
-\newif\ifpgf@circuit@fulldiode
-\pgf@circuit@strokediodefalse
-\pgf@circuit@fulldiodefalse
-
-\ctikzset{diode/.is choice}
-\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
-\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
-\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
-
-\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full }}
-\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty }}
-\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke }}
-
-\ctikzset{thickness/.initial=2}
-\ctikzset{color/.initial=black}
-\pgfkeys{/tikz/color/.add code={}{\ctikzset{color=#1}}}
-
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circ@siunitx@res
-
-\ctikzset{straight/.is choice}
-\ctikzset{straightvoltage value/.initial=true}
-\ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}}
-\ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}}
-\ctikzset{straightvoltage/.style = {/tikz/circuitikz/straight=true}}
-\newif\ifpgf@circuit@bipole@voltage@straight
-\ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight}
-
-
-\ctikzset{voltage/.is family}
-\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
-\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
-\ctikzset{voltage/bump a/.initial=1.2}
-\ctikzset{voltage/bump b/.initial=1.5}
-\ctikzset{voltage/european label distance/.initial=1.4}
-\ctikzset{voltage/american label distance/.initial=1.1}
-% special cases
-\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
-\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
-\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
-\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
-\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
-%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
-%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
-
-\ctikzset{current/.is family}
-\ctikzset{current/distance/.initial = .5}
-
-\tikzset{american currents/.style = { \circuitikzbasekey/current = american } }
-\tikzset{european currents/.style = { \circuitikzbasekey/current = european } }
-\tikzset{american voltages/.style = { \circuitikzbasekey/voltage = american } }
-\tikzset{european voltages/.style = { \circuitikzbasekey/voltage = european } }
-\tikzset{american resistors/.style = { \circuitikzbasekey/resistor = american } }
-\tikzset{european resistors/.style = { \circuitikzbasekey/resistor = european } }
-
-\newif\ifpgf@circuit@europeangfsurgearrester
-\ctikzset{gas filled surge arrester/.is choice}
-\ctikzset{gas filled surge arrester/european/.code= {\pgf@circuit@europeangfsurgearrestertrue } }
-\ctikzset{gas filled surge arrester/american/.code= {\pgf@circuit@europeangfsurgearresterfalse } }
-
-\tikzset{american gas filled surge arrester/.style = { \circuitikzbasekey/gas filled surge arrester = american } }
-\tikzset{european gas filled surge arrester/.style = { \circuitikzbasekey/gas filled surge arrester = european } }
-\tikzset{american inductors/.style = { \circuitikzbasekey/inductor = american } }
-\tikzset{european inductors/.style = { \circuitikzbasekey/inductor = european } }
-\tikzset{cute inductors/.style = { \circuitikzbasekey/inductor = cute } }
-\tikzset{american ports/.style = { \circuitikzbasekey/logic ports = american } }
-\tikzset{european ports/.style = { \circuitikzbasekey/logic ports = european } }
-\tikzset{european/.style = { european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester } }
-\tikzset{american/.style = { american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester } }
-\tikzset{cute/.style = { european currents, european voltages, american resistors, cute inductors, american ports } }
-
-% I should try to make the tree clearer (this voltaege conflicts with the options above)
-
-\newif\ifpgf@circuit@europeanvoltage
-\ctikzset{voltage/.is choice}
-\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse } }
-\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue } }
-
-\newif\ifpgf@circuit@europeancurrent
-\ctikzset{current/.is choice}
-\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse }
-\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue }
-
-\ctikzset{label/align/.is choice}
-\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
-\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
-\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
-
-%%%%%%%%%% new
-\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
-%%%---------- close: tex/pgfcirc.defines
-%%%%%%%%%%% Springe nach tex/pgfcircutils
-%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%\def\pgf@circ@handleSI#1{%
- % \pgf@circ@siunitx@resfalse
-%
- % \edef\len{\stringlength[e]{#1}}
- %\testmatchingchar[e]{#1}{\len}{>}%
- %\ifmatchingchar%
- % \ifnum\findchars{#1}{<}=0
- % \def\pgf@circ@handleSI@val{\substring{#1}{1}{\findchars{#1}{<}-1}}
- %\def\pgf@circ@handleSI@unit{\substring{#1}{\findchars{#1}{<}-1}+1}{\stringlength{#1}}
- %\pgf@circ@siunitx@restrue
-% \else
-% \fi
- %\else
- %\fi
-%}
-
-\def\pgf@circ@handleSI#1{
- \noexpandarg
- \def\pgf@temp{}
- \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
- \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
-
- \ifnum\pgf@circ@handleSI@unit@len=0
- \pgf@circ@siunitx@resfalse
- \else
- \IfEndWith{#1}{>}{
- \pgf@circ@siunitx@restrue
- \noexpandarg
- \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
- %\typeout{si |#1|}
- }{
- \pgf@circ@siunitx@resfalse
- %\typeout{no si |#1|}
- }
- \fi
-}
-
-\def\pgf@circ@ifkeyempty#1{
- \pgfextra{
- \ctikzset{#1/.get=\pgf@circ@temp}
- \edef\pgf@temp{}
- }
- \ifx\pgf@circ@temp\pgf@temp
-}
-
-%%%---------- close: tex/pgfcircutils
-%%%%%%%%%%% Springe nach tex/pgfcircmath
-%%%---------- open: tex/pgfcircmath.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Math routines
-
-\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
-
-% angle between 0 and 360
-\def\pgf@circ@slope#1#2{%
- \pgf@process{#1}%
- \pgf@xa=\pgf@x%
- \pgf@ya=\pgf@y%
- \pgf@process{#2}%
- \advance\pgf@x by-\pgf@xa%
- \advance\pgf@y by-\pgf@ya%
- \ifdim\pgf@x<0.1pt
- \ifdim\pgf@x>-0.1pt % vertical
- \ifdim\pgf@y<0pt
- \def\pgfmathresult{-90.0}
- \else
- \def\pgfmathresult{+90.0}
- \fi
- \else % oblique with dx < 0
- \pgfmathdivide{\pgf@y}{\pgf@x}
- \pgfmathatan{\pgfmathresult}
- \ifdim\pgf@x<0pt
- \pgfmathsubtract{\pgfmathresult}{+180}
- \fi
- \fi
- \else % oblique with dx > 0
- \pgfmathdivide{\pgf@y}{\pgf@x}
- \pgfmathatan{\pgfmathresult}
- \ifdim\pgf@x<0pt
- \pgfmathsubtract{\pgfmathresult}{+180}
- \fi
- \fi
- \pgf@x=\pgfmathresult pt
- \ifdim\pgf@x<0pt
- \pgfmathadd{\pgfmathresult}{+360}
- \fi
- }
-
-
-%%%---------- close: tex/pgfcircmath
-
-%%%%%%%%%%% Springe nach tex/pgfcircshapes
-%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Other shapes
-
-
-%% Nothing
-
-\pgfdeclareshape{emptyshape}{
- \savedanchor{\northeast}{%
- \pgf@x=.5\wd\pgfnodeparttextbox%
- \pgf@y=.5\ht\pgfnodeparttextbox%
- }
- \anchor{north}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{east}{%
- \northeast
- \pgf@y=0cm
- }
- \anchor{south}{%
- \northeast
- \pgf@y=-\pgf@y
- \pgf@x=0cm
- }
- \anchor{west}{
- \northeast
- \pgf@y=0cm
- \pgf@x=-\pgf@x
- }
- \anchor{text}{%
- \pgfpointorigin
- }
- \anchor{center}{
- \pgfpointorigin
- }
-}
-
-%% Full terminal
-
-\pgfdeclareshape{circ}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
-}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}}
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Empty terminal
-
-\pgfdeclareshape{ocirc}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
-}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}}
- }
-
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetfillcolor{white}
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Diamond terminal
-
-\pgfdeclareshape{diamondpole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- \pgftransformrotate{45}
- \pgfpathrectanglecorners
- {\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@temp}{\pgf@circ@res@up+\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up-\pgf@circ@res@temp}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% Current arrow
-
-\pgfdeclareshape{currarrow}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \divide \pgf@circ@res@step by 16
-
- \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
-
- \endpgfscope
- }
-
-}
-
-%% Current arrow
-
-\pgfdeclareshape{inputarrow}{
- \savedanchor{\tip}{
- \pgfpointorigin
- }
- \anchor{center}{
- \tip
- }
- \anchor{tip}{
- \tip
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \divide \pgf@circ@res@step by 16
-
- \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{fill}
-
- \endpgfscope
- }
-
-}
-
-
-%% box
-
-\pgfdeclareshape{box}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@circ@res@step = 0.5\pgf@circ@res@step
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-
-}
-
-%%%---------- close: tex/pgfcircshapes
-%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
-%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Monopoles
-
-%% Ground symbol
-
-\pgfdeclareshape{ground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-
-}
-
-
-
-\pgfdeclareshape{rground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{tground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- %\pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{sground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
- \pgfpathclose
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-
-}
-
-% noiseless ground
-\pgfdeclareshape{nground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{1.3\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpatharc{0}{180}{1.3\pgf@circ@res@step}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \endpgfscope
- }
-}
-
-% protective ground
-\pgfdeclareshape{pground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathcircle{\pgfpoint{0pt}{-\pgf@circ@res@step}} {1.2\pgf@circ@res@step}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \endpgfscope
- }
-}
-
-% chassis ground
-\pgfdeclareshape{cground}{
-\anchor{center}{
- \pgfpointorigin
-}
-\behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/chassis/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-1.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% Contributed by Leonardo Azzinnari
-\pgfdeclareshape{tlinestub}{
- \anchor{center}{\pgfpointorigin}
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
-
- \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-
-
-
-\pgfdeclareshape{antenna}{
-\anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
- \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=6\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
-
- % \pgfpathmoveto{\pgfpointorigin}
- % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- % \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgftransformxshift{ -4\pgf@circ@res@step }
-
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
- }
-
-
-\pgfdeclareshape{txantenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
- \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=6\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
-% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
- }
-
-
-\pgfdeclareshape{rxantenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
- \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=6\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
-% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
-}
-
-% Vcc
-\pgfdeclareshape{vcc}{
-\anchor{center}{\pgfpointorigin}
-\anchor{text}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=2\pgf@circ@res@step
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
-\behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
-}
-
-}
-
-% Vee
-\pgfdeclareshape{vee}{
-\anchor{center}{\pgfpointorigin}
-\anchor{text}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=-2\pgf@circ@res@step
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
-
-\behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
-}
-
-}
-
-
-% match
-\pgfdeclareshape{match}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
- \pgf@x=1.5\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \pgf@y=-1.5\ht\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
- \pgfusepath{fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-
-}
-
-
-%%%---------- close: tex/pgfcircmonopoles
-%%%%%%%%%%% Springe nach tex/pgfcircbipoles
-%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%% Generic macro for defining a bipole shape
-% #1 - additional anchors
-% #2 - lower y-size of the bipole (from the center).
-% #3 - #shape is the name of the shape
-% #4 - upper y-size of the bipole (from the center)
-% #5 - width of the bipole
-% #6 - macros drawing the bipole
-
-
-\long\def\pgfcircdeclarebipole#1#2#3#4#5#6{
- \pgfdeclareshape{#3shape}{
-
- \savedanchor{\northeast}{
- \pgf@y=#4\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\northeastborder}{
- \pgf@y=#4\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwestborder}{
- \pgf@y=-#2\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=-#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwest}{
- \pgf@y=-#2\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\centerpoint}{
- \pgf@circ@res@down=-#2\pgf@circ@Rlen
- \pgf@circ@res@up=#4\pgf@circ@Rlen
- \pgfpointorigin
- \pgf@y=\pgf@circ@res@up
- \advance\pgf@y by\pgf@circ@res@down
- \pgf@y=.5\pgf@y
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{n}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{ne}{
- \northeast
- }
- \anchor{nw}{
- \northeast
- \pgf@x=-\pgf@x
- }
- \anchor{e}{%
- \northeast
- \pgf@y=0cm
- }
- \anchor{s}{%
- \southwest
- \pgf@x=0cm
- }
- \anchor{se}{%
- \southwest
- \pgf@x=-\pgf@x
- }
- \anchor{sw}{%
- \southwest
- }
- \anchor{w}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{north}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{east}{%
- \northeast
- \pgf@y=0cm
- }
- \anchor{south}{%
- \southwest
- \pgf@x=0cm
- }
- \anchor{west}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{right}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{above}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{left}{%
- \southwest
- \pgf@y=0cm
- }
- \anchor{below}{%
- \southwest
- \pgf@x=0cm
- }
- \anchor{a}{%
- \northeast
- \pgf@y=0cm
- }
- \anchor{b} {
- \southwest
- \pgf@y=0cm
- }
- \savedanchor{\textanchor}{%
- \pgf@y=\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \anchor{text}{%
- \textanchor
- }
- \anchorborder{%
- \ifpgf@circuit@bipole@inverted
- \pgf@circ@res@left=-\pgf@x
- \pgf@circ@res@right=-\pgf@y
- \else
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@right=\pgf@y
- \fi
- \ifdim\pgf@circ@res@right>0cm
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
- \else
- \southwestborder
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
- \fi
- }
-
- #1
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@zero = 0cm
- \pgf@circ@res@left = -\pgf@x
- \pgf@circ@res@right = \pgf@x
- \southwest
- \pgf@circ@res@down = \pgf@y
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- #6
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- }
- }
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Standard bipole shapes declarations
-
-%% Resistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/resistor/height}}{resistor}{\ctikzvalof{bipoles/resistor/height}}{\ctikzvalof{bipoles/resistor/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \divide \pgf@circ@res@step by 12
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-}
-
-
-
-%% Variable resistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vresistor/height}}{vresistor}{\ctikzvalof{bipoles/vresistor/height}}{\ctikzvalof{bipoles/vresistor/width}}{ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \divide \pgf@circ@res@step by 12
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
-
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-%% Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/capacitor/height}}{capacitor}{\ctikzvalof{bipoles/capacitor/height}}{\ctikzvalof{bipoles/capacitor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/capacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-%% Polar Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pcapacitor/height}}{polarcapacitor}{\ctikzvalof{bipoles/pcapacitor/height}}{\ctikzvalof{bipoles/pcapacitor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/pcapacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgftransformrotate{-90}
- \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
-}
-
-%% Electrolytic Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ecapacitor/height}}{ecapacitor}{\ctikzvalof{bipoles/ecapacitor/height}}{\ctikzvalof{bipoles/ecapacitor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/ecapacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
- \pgfsetrectcap
- % % % Draw plus pole
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfsetfillcolor{white}
- \pgfusepath{draw,fill}
- % % Draw minus pole
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfsetfillcolor{black}
- \pgfusepath{draw,fill}
- \pgfsetfillcolor{black}
- % % plus pole annotation
- \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
- {\pgfkeysvalueof{/tikz/circuitikz/bipoles/ecapacitor/font} $+$}
-}
-
-%% Battery
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery/height}}{battery}{\ctikzvalof{bipoles/battery/height}}{\ctikzvalof{bipoles/battery/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 6
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-
-%% Battery 1
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery1/height}}{battery1}{\ctikzvalof{bipoles/battery1/height}}{\ctikzvalof{bipoles/battery1/width}}{
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
-
-
-
-
- \pgfusepath{draw}
-}
-
-
-
-%% cute inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cuteinductor/lower coil height}}{cuteinductor}{\ctikzvalof{bipoles/cuteinductor/height}}{\ctikzvalof{bipoles/cuteinductor/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% variable cute inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}{vcuteinductor}{\ctikzvalof{bipoles/vcuteinductor/height}}{\ctikzvalof{bipoles/vcuteinductor/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% american inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/americaninductor/height 2}}{americaninductor}{\ctikzvalof{bipoles/americaninductor/height}}{\ctikzvalof{bipoles/americaninductor/width}}{
- \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@Rlen
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% variable american inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vamericaninductor/height 2}}{vamericaninductor}{\ctikzvalof{bipoles/vamericaninductor/height}}{\ctikzvalof{bipoles/vamericaninductor/width}}{
- \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@Rlen
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% Independent voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsource/height}}{vsource}{\ctikzvalof{bipoles/vsource/height}}{\ctikzvalof{bipoles/vsource/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-%% Independent voltage source - American style
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourceam/height}}{vsourceAM}{\ctikzvalof{bipoles/vsourceam/height}}{\ctikzvalof{bipoles/vsourceam/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
-
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
- \else
- \ifpgf@circuit@bipole@voltage@backward
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$-$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$+$}
- \fi
- \fi
- \pgfusepath{draw}
-}
-
-
-
-%% Independent sinusoidal voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesin/height}}{vsourcesin}{\ctikzvalof{bipoles/vsourcesin/height}}{\ctikzvalof{bipoles/vsourcesin/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Triangle Voltage source - contributed by Ralf Farkas
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-% contributed by Alistair Kwan
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesquare/height}}{vsourcesquare}{\ctikzvalof{bipoles/vsourcesquare/height}}{\ctikzvalof{bipoles/vsourcesquare/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Triangle Voltage source - contributed by Ralf Farkas
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% Empty Source
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% PV Source
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pvsource/height}}{pvsource}{\ctikzvalof{bipoles/pvsource/height}}{\ctikzvalof{bipoles/pvsource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- %Adapted from battery1
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %Arrow Part
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty Source
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% DC Current Source with open shape
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcisource/height}}{dcisource}{\ctikzvalof{bipoles/dcisource/height}}{\ctikzvalof{bipoles/dcisource/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}}\pgfpatharc{0}{90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}}\pgfpatharc{0}{-90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}\pgfpatharc{180}{270}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}\pgfpatharc{180}{90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \ifpgf@circ@oldvoltagedirection
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \else
- \ifpgf@circuit@bipole@current@backward
- \pgftransformshift{\pgfpoint{-.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgftransformrotate{180}
- \else
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \fi\fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% DC-Voltage source
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcvsource/height}}{dcvsource}{\ctikzvalof{bipoles/dcvsource/height}}{\ctikzvalof{bipoles/dcvsource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
- \pgfusepath{draw}
-}
-
-
-%% Independent current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isource}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Independent double oo source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/oosource/height}}{oosource}{\ctikzvalof{bipoles/oosource/height}}{\ctikzvalof{bipoles/oosource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
- \pgfusepath{draw}
-}
-
-
-%% Independent current source - American
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isourceam/height}}{isourceAM}{\ctikzvalof{bipoles/isourceam/height}}{\ctikzvalof{bipoles/isourceam/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \ifpgf@circ@oldvoltagedirection
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \else
- \ifpgf@circuit@bipole@current@backward
- \pgftransformshift{\pgfpoint{-.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgftransformrotate{180}
- \else
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \fi\fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-
-
-
-%% Independent sinusoidal current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isourcesin}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-
-%% Controlled voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsource/height}}{cvsource}{\ctikzvalof{bipoles/cvsource/height}}{\ctikzvalof{bipoles/cvsource/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% Controlled voltage source - American
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourceam/height}}{cvsourceAM}{\ctikzvalof{bipoles/cvsourceam/height}}{\ctikzvalof{bipoles/cvsourceam/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$-$}
- \pgfusepath{draw}
-}
-
-
-%% Controlled sinusoidal voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cvsourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-%% Controlled sinusoidal current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cisourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-%% Controlled current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisource/height}}{cisource}{\ctikzvalof{bipoles/cisource/height}}{\ctikzvalof{bipoles/cisource/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% Controlled current source - American
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisourceam/height}}{cisourceAM}{\ctikzvalof{bipoles/cisourceam/height}}{\ctikzvalof{bipoles/cisourceam/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{draw}}
- \endpgfscope
-}
-
-%% Black generic diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulldiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black Zener diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black alternative zigzag Zener diode
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black Schottky diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullsdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Black tunnel diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulltdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black light emitting diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulllediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-}
-
-%% Black photodiode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullpdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black varcap
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varcap/height}}{fullvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
- \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgfsetlinewidth{\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfusepath{draw,fill}
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty generic diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptydiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty Zener diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty alternative zigzag Zener diode
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-%% Empty Schottky diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptysdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty tunnel diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptytdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty light emitting diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptylediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty photodiode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptypdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty varcap
-
-\pgfcircdeclarebipole{
- \anchor{strokepathstart}{
- \northeast
- \pgf@y=0cm
- \advance\pgf@x by -\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth
- \advance\pgf@x by -\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth
- }
- \anchor{strokepathend}{
- \northeast
- \pgf@y=0cm
- }
- }{\ctikzvalof{bipoles/varcap/height}}{emptyvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
- \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgfsetlinewidth{\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfusepath{draw}
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% SPST
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{spst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@left}{.9\pgf@circ@res@up}}
- \pgfpatharc{65}{25}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
- %\pgfsetarrowsend{latex'}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.1\pgf@circ@res@right}{-.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.14\pgf@circ@res@right}{-.35\pgf@circ@res@up}}
- \pgfsetarrowsend{latex'}
- \pgfusepath{draw}
-
-}
-
-%% Closing SPST
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{cspst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@left}{.9\pgf@circ@res@up}}
- \pgfpatharc{65}{25}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
- %\pgfsetarrowsend{latex'}
- \pgfusepath{draw}
-
-}
-
-%% Opening SPST
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/interr/height 2}}{ospst}{\ctikzvalof{bipoles/interr/height}}{\ctikzvalof{bipoles/interr/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@right}{.1\pgf@circ@res@down}}
- \pgfpatharc{15}{50}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/interr/width}\pgf@circ@Rlen}
- %\pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.85\pgf@circ@res@left}{1.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.87\pgf@circ@res@left}{1.26\pgf@circ@res@up}}
- \pgfsetarrowsend{latex'}
- \pgfusepath{draw}
-
-
-}
-
-
-%% Push Button
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pushbutton/height 2}}{pushbutton}{\ctikzvalof{bipoles/pushbutton/height}}{\ctikzvalof{bipoles/pushbutton/width}}{
-
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-
-%METERINGSHAPE
-\long\def\drawmeteringcircle{
- \def\pgf@circ@temp{right}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \def\pgf@circ@temp{below}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \pgf@circ@res@step=1.2\pgf@circ@res@up
- \fi
- \fi
- %draw connections to circle
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- %draw circle
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgfusepath{draw}
- \endpgfscope
- %draw arrow
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-%AMPEREMETER
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ammeter/height}}{ammeter}{\ctikzvalof{bipoles/ammeter/height}}{\ctikzvalof{bipoles/ammeter/width}}{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\textbf{A}}{}{}
-}
-%OHMMETER
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ohmmeter/height}}{ohmmeter}{\ctikzvalof{bipoles/ohmmeter/height}}{\ctikzvalof{bipoles/ohmmeter/width}}{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
-}
-%VOLTMETER
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/voltmeter/height}}{voltmeter}{\ctikzvalof{bipoles/voltmeter/height}}{\ctikzvalof{bipoles/voltmeter/width}}{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\textbf{V}}{}{}
-
-}
-
-%% Short circuit
-
-\pgfcircdeclarebipole{}{0}{short}{0}{0}{ }
-
-%% Open circuit
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/open/height}}{open}{\ctikzvalof{bipoles/open/height}}{\ctikzvalof{bipoles/open/width}}{
-
-}
-
-%% Generic bipole - used as resistor by some (bleah)
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/generic/height}}{generic}{\ctikzvalof{bipoles/generic/height}}{\ctikzvalof{bipoles/generic/width}}{
-
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-}
-
-
-%% fuse
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fuse/height}}{fuse}{\ctikzvalof{bipoles/fuse/height}}{\ctikzvalof{bipoles/fuse/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-}
-
-
-
-%% Generic bipole, filled - used as inductor by some (bleah)
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fullgeneric/height}}{fullgeneric}{\ctikzvalof{bipoles/fullgeneric/height}}{\ctikzvalof{bipoles/fullgeneric/width}}{
-
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw,fill}
-}
-
-
-%% Generic asymmetric bipole
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ageneric/height}}{ageneric}{\ctikzvalof{bipoles/ageneric/height}}{\ctikzvalof{bipoles/ageneric/width}}{
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-%% asymmetric fuse
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/afuse/height}}{afuse}{\ctikzvalof{bipoles/afuse/height}}{\ctikzvalof{bipoles/afuse/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-
-
-%% Memristor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/memristor/height}}{memristor}{\ctikzvalof{bipoles/memristor/height}}{\ctikzvalof{bipoles/memristor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-
-
-%% Generic empty tunable
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tgeneric/height}}{tgeneric}{\ctikzvalof{bipoles/tgeneric/height}}{\ctikzvalof{bipoles/tgeneric/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Photoresistor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/photoresistor/height 2}}{photoresistor}{\ctikzvalof{bipoles/photoresistor/height}}{\ctikzvalof{bipoles/photoresistor/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-%% Thermistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistor/height}}{thermistor}{\ctikzvalof{bipoles/thermistor/height}}{\ctikzvalof{bipoles/thermistor/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- %\pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- %\endpgfscope
-}
-
-
-%% Thermistor PTC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorptc/height 2}}{thermistorptc}{\ctikzvalof{bipoles/thermistorptc/height}}{\ctikzvalof{bipoles/thermistorptc/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Thermistor NTC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorntc/height 2}}{thermistorntc}{\ctikzvalof{bipoles/thermistorntc/height}}{\ctikzvalof{bipoles/thermistorntc/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% thermocouple
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermocouple/height 2}}{thermocouple}{\ctikzvalof{bipoles/thermocouple/height}}{\ctikzvalof{bipoles/thermocouple/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-}
-
-%% Varistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varistor/height}}{varistor}{\ctikzvalof{bipoles/varistor/height}}{\ctikzvalof{bipoles/varistor/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\tiny\textsf{U}}}
-}
-
-
-
-%% Generic full tunable
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tfullgeneric/height}}{tfullgeneric}{\ctikzvalof{bipoles/tfullgeneric/height}}{\ctikzvalof{bipoles/tfullgeneric/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw,fill}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-
-
-
-%% Variable Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcapacitor/height}}{vcapacitor}{\ctikzvalof{bipoles/vcapacitor/height}}{\ctikzvalof{bipoles/vcapacitor/width}}{
- %\pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/width}\pgf@circ@Rlen
- \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfusepath{draw}
-}
-
-
-%% Piezoelectric Element
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piezoelectric/height}}{piezoelectric}{\ctikzvalof{bipoles/piezoelectric/height}}{\ctikzvalof{bipoles/piezoelectric/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- %% Outer markings
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %% Inner Box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left+4}{\pgf@circ@res@up-1}}{\pgfpoint{\pgf@circ@res@right-4}{\pgf@circ@res@down+1}}
- \pgfusepath{draw}
-
-}
-
-
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Handling of terminals
-
-
-%% Easily usable styles
-
-\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=diamond}}
-\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamond}}
-\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=diamond}}
-\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=diamond}}
-
-\tikzset{reversed/.style = {\circuitikzbasekey/bipole/inverted=true}}
-
-
-%% The output routine
-
-\def\drawpoles{
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{diamond} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztostart) node[diamondpole] {} }
- \else
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{empty} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztostart) node[ocirc] {} }
- \else
- \pgfextra{ \def\pgf@temp{full} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztostart) node[circ] {} }
- \fi
- \fi
- \fi
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} \def\pgf@temp{diamond} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztotarget) node[diamondpole] {} }
- \else
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} \def\pgf@temp{empty} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztotarget) node[ocirc] {} }
- \else
- \pgfextra{ \def\pgf@temp{full} }
- \ifx\pgf@temp\pgf@circ@temp
- { (\tikztotarget) node[circ] {} }
- \fi
- \fi
- \fi
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-%% Lamp
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lamp/height}}{lamp}{\ctikzvalof{bipoles/lamp/height}}{\ctikzvalof{bipoles/lamp/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tline/height}
- }{tline}{\ctikzvalof{bipoles/tline/height}
- }{\ctikzvalof{bipoles/tline/width}
- }
- {
- \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0}}
- {\pgfpoint{\pgf@circ@res@step}{0}}
- {\pgfpoint{0}{-\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% SQUID added by Cor Molenaar 5 March 2010
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/squid/height}}{squid}{\ctikzvalof{bipoles/squid/height}}{\ctikzvalof{bipoles/squid/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-
-
-% Generic barrier added by Cor Molenaar 5 March 2010
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/barrier/height}}{barrier}{\ctikzvalof{bipoles/barrier/height}}{\ctikzvalof{bipoles/barrier/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
-
- \pgfusepath{draw}
-}
-
-
-% Contributed by Danilo Piazzalunga
-
-\pgfdeclareshape{buffer}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- }
- }
-
-
-
-
-
-\pgfdeclareshape{plain amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
-
-
-
- }
- }
-
-%% Generic two port box
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/twoport/height}}{twoport}{\ctikzvalof{bipoles/twoport/height}}{\ctikzvalof{bipoles/twoport/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
-}
-
-%% voltage controled oscillator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vco/width}}{vco}{\ctikzvalof{bipoles/twoport/width}}{\ctikzvalof{bipoles/vco/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw circle
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
-}
-
-%% bandpass filter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bandpass/width}}{bandpass}{\ctikzvalof{bipoles/bandpass/width}}{\ctikzvalof{bipoles/bandpass/width}}{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% highpass filter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/highpass/width}}{highpass}{\ctikzvalof{bipoles/highpass/width}}{\ctikzvalof{bipoles/highpass/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% lowpass filter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lowpass/width}}{lowpass}{\ctikzvalof{bipoles/lowpass/width}}{\ctikzvalof{bipoles/lowpass/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% ADC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/adc/width}}{adc}{\ctikzvalof{bipoles/adc/width}}{\ctikzvalof{bipoles/adc/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{A}
- \def\textii{D}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{A}
- \def\textii{D}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DAC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dac/width}}{dac}{\ctikzvalof{bipoles/dac/width}}{\ctikzvalof{bipoles/dac/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{D}
- \def\textii{A}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{D}
- \def\textii{A}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DSP
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dsp/width}}{dsp}{\ctikzvalof{bipoles/dsp/width}}{\ctikzvalof{bipoles/dsp/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{DSP}}
-}
-
-%% FFT
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fft/width}}{fft}{\ctikzvalof{bipoles/fft/width}}{\ctikzvalof{bipoles/fft/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{FFT}}
-}
-
-%% Amplifier
-\pgfcircdeclarebipole{}{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{amp}{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
-
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgfusepath{draw}
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-}
-
-
-%% variable amplifier
-\pgfcircdeclarebipole{}{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{vamp}{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
-
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgfusepath{draw}
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
- % draw arrow
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% pi attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piattenuator/width}}{piattenuator}{\ctikzvalof{bipoles/piattenuator/width}}{\ctikzvalof{bipoles/piattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable pi attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vpiattenuator/width}}{vpiattenuator}{\ctikzvalof{bipoles/vpiattenuator/width}}{\ctikzvalof{bipoles/vpiattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% T attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tattenuator/width}}{tattenuator}{\ctikzvalof{bipoles/tattenuator/width}}{\ctikzvalof{bipoles/tattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable T attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vtattenuator/width}}{vtattenuator}{\ctikzvalof{bipoles/vtattenuator/width}}{\ctikzvalof{bipoles/vtattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% phase shifter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{phaseshifter}{\ctikzvalof{bipoles/phaseshifter/width}}{\ctikzvalof{bipoles/phaseshifter/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-}
-
-%% variable phase shifter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{vphaseshifter}{\ctikzvalof{bipoles/vphaseshifter/width}}{\ctikzvalof{bipoles/vphaseshifter/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% detector
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/detector/width}}{detector}{\ctikzvalof{bipoles/detector/width}}{\ctikzvalof{bipoles/detector/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{0.8\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@fulldiode
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
- \else
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
- \fi
-
-}
-
-
-
-
-%% european gas filled surge arrester
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{european gas filled surge arrester}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{\ctikzvalof{bipoles/european gas filled surge arrester/width}}{
-
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
-}
-
-
-
-
-%% american gas filled surge arrester
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{american gas filled surge arrester}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
- %\def\pgf@circ@temp{right}
- %\ifx\tikz@res@label@pos\pgf@circ@temp
- % \pgf@circ@res@step=-1.2\pgf@circ@res@up
- %\else
-% \def\pgf@circ@temp{below}
-% \ifx\tikz@res@label@pos\pgf@circ@temp
-% \pgf@circ@res@step=-1.2\pgf@circ@res@up
-% \else
-% \pgf@circ@res@step=1.2\pgf@circ@res@up
-% \fi
-% \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfnode{circle}{center}{}{}{}
-
- \pgfscope
- \pgfsetarrowsend{latex}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope{}
-
- %\pgftransformshift{\pgfpoint{.25\pgf@circ@res@left}{.45\pgf@circ@res@down}}
- %\pgfnode{circ}{center}{}{}{}
- %\pgftransformshift{}
- \pgfcircle{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
- \pgfusepath{fill}
-}
-
-% % MECHANICAL SYMBOLS
-
-%% mechanical capacitance - stiffness/spring
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spring/height}}{spring}{\ctikzvalof{bipoles/spring/height}}{\ctikzvalof{bipoles/spring/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% mechanical inductance - mass
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/mass/box height}}{mass}{\ctikzvalof{bipoles/mass/height}}{\ctikzvalof{bipoles/mass/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
-
-\pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-}
-
-%% mechanical resistor - damper
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/damper/height}}{damper}{\ctikzvalof{bipoles/damper/height}}{\ctikzvalof{bipoles/damper/width}}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {\pgf@circ@res@zero}}
- \pgfusepath{stroke}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
-
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{stroke}
-
-}
-
-
-%%%---------- close: tex/pgfcircbipoles
-%%%%%%%%%%% Springe nach tex/pgfcirctripoles
-%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Tripoles
-
-
-
-\pgfdeclareshape{spdt}
- {
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out 1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{out 2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/margin}\pgf@circ@res@left
-
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
- \endpgfscope
-
-
- \pgfscope
- \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
- \pgfpathlineto{
- \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
- {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
- }
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
- }
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% Logic ports
-%%
-
-
-
-
-
-
-\long\def\pgfcircdeclarelogicport#1#2{
- \pgfdeclareshape{american #1 port}
- {
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{in 1}{
- \inOne
- }
- \anchor{in}{
- \inOne
- }
- \anchor{in 2}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-.8\pgf@x
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- #2
-
- }
- }
-}
-
-
-\pgfcircdeclarelogicport{and}{
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@down}}
- \pgfpathcurveto
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {.5\pgf@circ@res@down}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {0pt}}
- \pgfpathcurveto
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {.5\pgf@circ@res@up}}
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-
-\pgfcircdeclarelogicport{nand}{
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{2\pgflinewidth}
-
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathcurveto
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclarelogicport{nor}{
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
-
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-}
-
-
-
-
-\pgfcircdeclarelogicport{or}{
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclarelogicport{xor}{
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/distance}\pgf@circ@res@right+}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-
-
-\pgfcircdeclarelogicport{xnor}{
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/circle width}\pgf@circ@res@right
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/distance}\pgf@circ@res@right+}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
-
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-}
-
-
-\pgfdeclareshape{american not port}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- }
- }
-
-\pgfdeclareshape{invschmitt}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- %draw inner shape
-
- \pgfsetlinewidth{2\pgflinewidth}
-
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- }
- }
-
-
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% #1 - name
-% #2 - text inside
-% #3 - number of inputs
-% #4 - is it a not
-
-\long\def\pgfcircdeclareeurologicport#1#2#3#4{
- \pgfdeclareshape{european #1 port}
- {
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \inOne
- }
- \anchor{in 1}{
- \inOne
- }
- \anchor{in 2}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-.8\pgf@x
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \def\pgf@temp{1}
- \def\pgf@circ@temp{#3}
- \ifx\pgftemp\pgf@circ@temp % one input
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}
- \else % two inputs
- \pgfpathmoveto{
- \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
- %
- \pgfpathmoveto{
- \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
- \fi%
- %
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
- %
- \edef\pgf@temp{not}
- \edef\pgf@circ@temp{#4}
- \ifx\pgf@temp\pgf@circ@temp % is a not
- \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not height}\pgf@circ@res@up}}
- \fi
- %
- \pgfusepath{draw}
- %
- \pgfpathmoveto{\pgfpointorigin}
- \pgftext{#2}
- %
- %
- %
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathrectanglecorners
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-%
-%
- }
- }
-}
-
-
-
-\pgfcircdeclareeurologicport{and}{$\&$}{2}{}
-\pgfcircdeclareeurologicport{or}{$\ge 1$}{2}{}
-\pgfcircdeclareeurologicport{xor}{$=1$}{2}{}
-\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
-\pgfcircdeclareeurologicport{nand}{$\&$}{2}{not}
-\pgfcircdeclareeurologicport{nor}{$\ge 1$}{2}{not}
-\pgfcircdeclareeurologicport{xnor}{$=1$}{2}{not}
-
-\long\def\pgfcircdeclaretransistor#1#2#3{
- \pgfdeclareshape{#1}
- {
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northeast{% upper right
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x=0pt
- }
- \savedanchor\left{%center left
- \pgf@y=0pt
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/width}\pgf@x
- }
- \anchor{text}{
- \northeast
- \pgf@y=.7\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=0.1\pgf@x
- }
- \anchor{pathstart}{ % south
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{pathend}{
- \northeast
- }
- \anchor{north}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \northeast
- \pgf@y=0pt
- }
- \anchor{south}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{south west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- }
- \anchor{north east}{
- \northeast
- }
- \anchor{north west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{south east}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{B}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{base}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{G}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{gate}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{nobase}{
- \left
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@x
- }
- \anchor{nogate}{
- \left
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@x
- }
- \anchor{E}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{emitter}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{C}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{collector}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{D}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{drain}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- #2
- \backgroundpath{
- \pgftransformationadjustments
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- %
- \ifnum \pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction} > 0
- \pgf@circuit@trans@ntypetrue
- \else
- \pgf@circuit@trans@ntypefalse
- \fi
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = \pgf@x
- \left
- \pgf@circ@res@left = \pgf@x
- %
- #3
- % BODY DIODE
- \ifpgf@circuit@fet@bodydiode
- \drawbodydiode{#1}
- \fi
- %
- }
- }
-}
-
-\long\def\drawbodydiode#1{
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgftransformrotate{90}
- \pgftransformscale{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode scale}}
- \ifpgf@circuit@fulldiode
- \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \else
- \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \fi
- \endpgfscope
- %Draw upper connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope{}
- %Draw lower connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope
-}
-
-\long\def\declarebpt#1{
- \pgfcircdeclaretransistor{#1}{}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transiytor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@ntype
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{.5}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}%
- }
- \fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \ifpgf@circuit@bpt@drawphoto
- \pgfscope
- \pgfsetarrowsstart{latex'}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
- \else
- \ifpgf@circuit@bpt@drawbase
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
- \fi
- }
-}
-
-\declarebpt{npn}
-\declarebpt{pnp}
-
-\long\def\declareigbt#1{
-\pgfcircdeclaretransistor{#1}{}
-{
- %draw upper connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- %draw thicker gate lines
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %draw lower connection
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transiytor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@ntype
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{.5}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}%
- }
- \fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- %draw gate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
- \fi
- \pgfusepath{draw}
-}
-}
-
-\declareigbt{pigbt}
-\declareigbt{nigbt}
-\declareigbt{Lnigbt}
-\declareigbt{Lpigbt}
-
-
-\pgfcircdeclaretransistor{nmos}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
-
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-}
-
-
-\pgfcircdeclaretransistor{pmos}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.4}{%
- \pgfpoint%
- {\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
-
-
- \pgfusepath{draw}
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
- \pgfpathcircle{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left - \pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- {\pgf@circ@res@up+\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}}
- \ifpgf@circuit@pmos@emptycircle
- \pgfsetfillcolor{white}
- \fi
- \pgfusepath{draw,fill}
-}
-
-\long\def\drawfetcore#1{
- \pgftransformationadjustments
- %top connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
- \ifpgf@circuit@trans@depletiontype
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \else
-
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.45}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.25}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down*0.25}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \fi
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %Bulk connection line
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- %bottom connection
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- %draw thick gate line
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
-
- \pgftransformlineattime{.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \ifpgf@circuit@trans@ntype
- \else
- \pgftransformrotate{180}
- \fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- % GATE CONNECTION
- \ifpgf@circuit@bpt@drawgate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
- \fi
-
-}
-
-\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
-{\pgfcircdeclaretransistor{#1}{
- \anchor{bulk}{\left\pgf@x=0pt}
- \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
- #2
- }
- {#3}
-}
-
-
-\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nfet}
-}
-
-
-\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pfet}
-}
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfete}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-
-
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
-\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfetebulk}
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-
-
-% N-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{nigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfete}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
-\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfetebulk}
-}
-
-
-% P-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{pigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-\pgfcircdeclaretransistor{njfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint{\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclaretransistor{pjfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.4}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfdeclaretransistorwrapperaddbulk{isfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- % DRAIN CONNECTION
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- % DRAIN
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % GATE, DEPLETION TYPE
- \pgfscope %% added
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth} %% added
- \pgfusepath{draw} %% added
- \endpgfscope %% added
-
- % BULK
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- % SOURCE
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- % GATE
- %\pgfscope
- %\pgfpathmoveto{\pgfpoint
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- %\pgfpathlineto{\pgfpoint
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- %\pgfsetlinewidth{2\pgflinewidth}
- %\pgfusepath{draw}
- %\endpgfscope
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
- % ARROW
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfusepath{draw}
-
- % Wavy lines
- \pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-
-%% Black thyristor
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{anode}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{G}{
- \northeast
- }
- \anchor{cathode}{
- \northeast
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/thyristor/height 2}}{fullthyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty thyristor
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{anode}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{G}{
- \northeast
- }
- \anchor{cathode}{
- \northeast
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/thyristor/height 2}}{emptythyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty triac
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{G}{
- \northeast
- }
- \anchor{anode}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{cathode}{
- \northeast
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/triac/height}}{emptytriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty triac
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{G}{
- \northeast
- }
- \anchor{anode}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{cathode}{
- \northeast
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/triac/height}}{fulltriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-
-
-
-
-
-
-\pgfcircdeclarebipole{
- \anchor{out 1}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{out 2}{
- \northeast
- \pgf@y=.8\pgf@y
- }
-}{\ctikzvalof{tripoles/toggleswitch/height 2}}{toggleswitch}{\ctikzvalof{tripoles/toggleswitch/height}}{\ctikzvalof{tripoles/toggleswitch/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetdash{}{0cm}
-}
-
-
-
-
-
-
-
-
-
-
-\pgfdeclareshape{op amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \pgfsetrectcap
- \pgfusepath{draw}
-
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgfusepath{draw}
- \endpgfscope
-
-
-
- }
- }
-
-%%Transkonduktanzverstรคrker
-\pgfdeclareshape{gm amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{0pt}} %
- \pgfsetrectcap
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
- %Umrandung:
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}} %geรคndert startpunkt neu am ausgangsstrich
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}%vom Ausgang nach oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}%ecke links unten nach rechts unten
- \pgfpathclose
- \pgfusepath{draw}
- \endpgfscope
-
- }
- }
-
-
-
-%% Potentiometer
-\pgfcircdeclarebipole{
- \anchor{wiper}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
- \anchor{W}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
-}{\ctikzvalof{bipoles/potentiometer/height 2}}{potentiometer}{\ctikzvalof{bipoles/potentiometer/height}}{\ctikzvalof{bipoles/potentiometer/width}}{
-\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-\pgftransformationadjustments
-\pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
-\divide \pgf@circ@res@step by 12
-
-\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
-
-\pgf@circ@res@other = \pgf@circ@res@left
-\advance\pgf@circ@res@other by \pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by \pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
-\pgfsetbeveljoin
-\pgfusepath{draw}
-
-\pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
-\endpgfscope
-}
-
-
-
-
-
-%% Generic tunable
-
-\pgfcircdeclarebipole{
- \anchor{wiper}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
-}{\ctikzvalof{bipoles/generic potentiometer/height 2}}{genericpotentiometer}{\ctikzvalof{bipoles/generic potentiometer/height}}{\ctikzvalof{bipoles/generic potentiometer/width}}{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-\pgfdeclareshape{mixer}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
- \pgf@x=.5\pgf@x
- \else
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@x
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{adder}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
- \pgf@x=.5\pgf@x
- \else
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@x
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{oscillator}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
- \else
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{north}{
- \northwest
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@x=.5\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{text}{
- \pgf@x=-2\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@Rlen{}
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
-
- % draw outer box
- \ifpgf@circuit@boxed{}
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{circulator}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
- \pgf@x=.5\pgf@x
- \else
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@x
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{3}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed{}
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % inner arrow
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
- \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-
-% Wilkinson divider
-\pgfdeclareshape{wilkinson}{
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=.5\pgf@x
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{out2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- % draw inner resisitor - european or american style is recognised
- {
- \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgftransformrotate{90}
-
- % calculate size of resistor
- \ifpgf@circuit@europeanresistor
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{genericshape}{center}{}{pgf@generic}{\pgfusepath{fill}}
- \else
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{resistorshape}{center}{}{pgf@resistor}{\pgfusepath{fill}}
- \fi
- }
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-
-% electromechanical device (motor/generator)
-\pgfdeclareshape{elmech}
-{
- \savedanchor\northwest{
- %\ifpgf@circuit@boxed
- % \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- % \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
- % \pgf@y=.5\pgf@y
- % \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- % \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
- % \pgf@x=.5\pgf@x
- %\else
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/width}\pgf@x
- \pgf@x=.5\pgf@x
- %\fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgfpointorigin
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -.5\ht\pgfnodeparttextbox
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{%
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{top}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathstart}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathend}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{bottom}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@Rlen
- \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- % draw outer box
- % \ifpgf@circuit@boxed
- % \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- % \fi
- % draw outer circle
- %\ifpgf@circuit@boxed
- % \pgf@circ@res@step=.7\pgf@circ@res@step
- % \pgfsetdash{}{0pt} % draw solid circle if boxed
- %\else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- %\fi
- \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfsetfillcolor{black}
- \pgfusepath{draw,fill}
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfsetfillcolor{white}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{magnetron}
-{
- \savedanchor\northwest{
- %\ifpgf@circuit@boxed
- % \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- % \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@y
- % \pgf@y=.5\pgf@y
- % \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- % \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@x
- % \pgf@x=.5\pgf@x
- %\else
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf@x
- \pgf@x=.5\pgf@x
- %\fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{anode}{
- \northwest
- \pgf@circ@res@step= \pgf@y
- \pgfpointorigin
- \pgfpathmoveto{ \pgfpointpolar{-90}{\pgf@circ@res@step}}
- }
- \anchor{cathode1}{
- \northwest
- \pgf@circ@res@step= \pgf@y
- \pgfpointorigin
- \pgfpathmoveto{ \pgfpointpolar{105}{\pgf@circ@res@step}}
- }
- \anchor{cathode2}{
- \northwest
- \pgf@circ@res@step= \pgf@y
- \pgfpointorigin
- \pgfpathmoveto{ \pgfpointpolar{75}{\pgf@circ@res@step}}
- }
- \anchor{text}{
- \pgfpointorigin
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -.5\ht\pgfnodeparttextbox
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{%
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{top}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathstart}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathend}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{bottom}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgf@circ@res@step=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@Rlen
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfmathsetlength{\pgf@circ@res@other}{sin(15)*\pgf@circ@res@up}
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- % draw outer box
- % \ifpgf@circuit@boxed
- % \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- % \fi
- % draw outer circle
- %\ifpgf@circuit@boxed
- % \pgf@circ@res@step=.7\pgf@circ@res@step
- % \pgfsetdash{}{0pt} % draw solid circle if boxed
- %\else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- %\fi
- %create outer circle
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@right}
- \pgfsetfillcolor{white}
- \pgfusepath{draw}
- %create chambers
- \foreach \angle in {45,135,225,315}{
- \pgfpathmoveto{ \pgfpointpolar{\angle}{0.6\pgf@circ@res@right}}
- \pgfpathlineto{ \pgfpointpolar{\angle}{\pgf@circ@res@right}}
- }
- \pgfsetroundcap
- \pgfusepath{draw}
- \pgfscope
- %draw connection from outside
- %anode
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- %cathodes
- \pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- %create cathode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.15\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- %create anode
- \pgfpathmoveto{\pgfpoint{0.3\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-%%%---------- close: tex/pgfcirctripoles
-%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
-%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Quadripoles
-
-\long\def\pgfcircdeclarequadpole#1#2#3{
- \pgfdeclareshape{#1}
- {
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=.5\pgf@x
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
- }
- \anchor{A2}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{B1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{A1}{
- \northwest
- }
- \anchor{B2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{base}{
- \northwest
- \pgf@x=0pt
- }
- #3
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- %\pgf@circ@Rlen=\pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
-
- #2
-
- }
- }
-}
-
-
-
-\def\pgf@circ@drawtransformerbasicanchor{
- \pgfkeysvalueof{/tikz/circuitikz/quadpoles/trans/height}
- \anchor{AA2}{
- \northwest
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{AA1}{
- \northwest
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
-}
-
-\def\pgf@circ@drawtransformerbasicbody{
- \def\stretto{.4}
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@down}%
- }
-
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
-
- \endpgfscope
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@up}%
- }
-
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@inductor1}{b}}
-
- \pgfpathmoveto{\pgfpointanchor{pgf@inductor1}{a}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@inductor2}{a}}
-
- \pgfpathmoveto{\pgfpointanchor{pgf@inductor2}{b}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
-}
-
-
-
- % contrib Kristofer M. Monisit
-
- \pgfdeclareshape{fd op amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@x
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out +}{
- \northwest
- \pgf@y=.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{out -}{
- \northwest
- \pgf@y=-.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
-
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
-
-
- % Negative output terminal
- \pgfpathmoveto{\pgfpoint
- {0.7\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
-
-
- % Positive output terminal
- \pgfpathmoveto{\pgfpoint
- {0.7\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
-
- \pgfsetrectcap
- % Draw them all!
- \pgfusepath{draw}
-
- % Triangle
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathclose
- \pgfusepath{draw}
- \endpgfscope
- }
- }
-
-
-
-
-\pgfcircdeclarequadpole{transformer}{
-
- \pgf@circ@drawtransformerbasicbody
-
-}{\pgf@circ@drawtransformerbasicanchor}
-
-\pgfcircdeclarequadpole{transformer core}{
-
- \pgf@circ@drawtransformerbasicbody
-
- \pgfmoveto{\pgfpoint%
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgfmoveto{\pgfpoint%
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
-}{\pgf@circ@drawtransformerbasicanchor}
-
-
-\pgfcircdeclarequadpole{gyrator}{
-
- \def\stretto{.4}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{.7*\stretto\pgf@circ@res@down}}
- \pgfpatharc{90}{270}{.7*\stretto\pgf@circ@res@down}
-
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{.7*\stretto\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{.7*\stretto\pgf@circ@res@down}
- \pgfusepath{draw}
-
-}{}
-
-%% four-port
-% defines a general outer box for four-ports
-% TikZ usage:
-% \draw (0,0) node[coupler](coup){\SI{-3}{dB}}
-% (coup.port1) to[short,-o] ++(-1,0)
-%
-
-\long\def\pgfcircdeclarefourport#1#2{
- \pgfdeclareshape{#1}{
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@y
- \pgf@y=.5\pgf@y
- \pgf@x= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
- \pgf@x=.5\pgf@x
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{port1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{port4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
- \anchor{1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
-
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % draw inner stuff
- #2
-
- % draw inner text
- \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
- }
- }
-}
-
-% four-port
-\pgfcircdeclarefourport{fourport}{}
-
-
-% straight coupler
-\pgfcircdeclarefourport{coupler}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
-}
-
-% "bended" coupler
-\pgfcircdeclarefourport{coupler2}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
-
-
-}
-%%%---------- close: tex/pgfcircquadpoles
-
-%%%%%%%%%%% Springe nach tex/pgfcirclabel
-%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Bipole label positioning
-
-%% Options
-\ctikzset{label/.style = { l=#1 } }
-\ctikzset{l/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
- \ctikzsetvalof{bipole/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-
-\ctikzset{label above/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l^/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-
-\ctikzset{label below/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-\ctikzset{l_/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-%value options
-\ctikzset{annotation/.style = { a=#1 } }
-\ctikzset{a/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/annotation/name=#1}
- \ctikzsetvalof{bipole/annotation/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/annotation/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/annotation/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- }}
-
-
-
-\ctikzset{annotation above/.code = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=90 }
-}
-\ctikzset{a^/.style = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=90 }
-}
-
-\ctikzset{annotation below/.code = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=-90 }
-}
-\ctikzset{a_/.style = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=-90 }
-}
-
-
-
-\def\pgf@circ@drawlabels#1{
- \pgfextra{
- \edef\pgf@temp{\ctikzvalof{label/align}}
- \def\pgf@circ@temp{straight}
- }
- \ifx\pgf@temp\pgf@circ@temp %straight
- \pgf@circ@drawreglabels{#1}
- \else
- \pgfextra{\def\pgf@circ@temp{rotate}}
- \ifx\pgf@temp\pgf@circ@temp %rotate
- \pgf@circ@drawrotlabels{#1}
- \else % smart
- \pgf@circ@drawsmartlabels{#1}
- \fi
- \fi
-}
-
-
-\def\pgf@circ@drawsmartlabels#1{
- \pgfextra{
- %\pgfmathadd{\pgf@circ@direction}{360}
- \pgfmathmod{\pgf@circ@direction}{90}
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- \ifnum \pgfcircmathresult > 20
- \ifnum \pgfcircmathresult < 70 % NON quasi retto
- \pgf@circ@drawrotlabels{#1}
- \else
- \pgf@circ@drawreglabels{#1}
- \fi
- \else
- \pgf@circ@drawreglabels{#1}
- \fi
-}
-
-%% Output routing
-%% #1 - node name
-
-\def\pgf@circ@drawrotlabels#1{
- \pgfextra{
- % calcolo rotazione label
- \def\pgf@circ@temp{\ctikzvalof{bipole/#1/position}} %%% ร ncora label
- \edef\pgfcirclabrot{\pgf@circ@direction} % primo e quarto quadrante
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 90 \ifnum \pgfcircmathresult < 270 % terzo e secondo
- \pgfmathsubtract{\pgf@circ@direction}{180}
- \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \pgfmathadd{\pgf@circ@temp}{180} %%%
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil} %%%
- \fi\fi
-
- }
- \ifnum \ctikzvalof{mirror value} = -1
- % \pgfmathadd{\pgf@circ@temp}{180}
- % \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- coordinate (labelcoor) at ($(\ctikzvalof{bipole/name})!2!(\ctikzvalof{bipole/name}.south)$)
- (labelcoor) node [rotate=\pgfcirclabrot] {\pgf@circ@finallabels{#1}} % c'era un transform shape
- \else
- coordinate (labelcoor) at ($(\ctikzvalof{bipole/name})!2!(\ctikzvalof{bipole/name}.north)$)
- (labelcoor) node [rotate=\pgfcirclabrot] {\pgf@circ@finallabels{#1}} % c'era un transform shape
- \fi
-
-}
-
-\def\pgf@circ@drawreglabels#1{
- \pgfextra{
- \pgfmathsubtract{\pgf@circ@direction}{90}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
-
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/position}} %%% ร ncora label
- \ifnum \pgf@circ@temp < 0
- \pgfmathadd{\pgf@circ@labanc}{180}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- \ifpgf@circuit@bipole@inverted
- \pgfmathadd{\pgf@circ@temp}{180}
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
-
- \ifnum \ctikzvalof{mirror value} = -1
- \pgfmathadd{\pgf@circ@temp}{180}
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- }
- node [ anchor = \pgf@circ@labanc]
- at (\ctikzvalof{bipole/name}.\pgf@circ@temp) {\pgf@circ@finallabels{#1}}
-}
-
-\def\pgf@circ@finallabels#1{%
- \edef\pgf@temp{}%
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/unit}}%
- \ifx\pgf@temp\pgf@circ@temp%
- \ctikzvalof{bipole/#1/name}%
- \else%
- $\SI{\ctikzvalof{bipole/#1/name}}{\ctikzvalof{bipole/#1/unit}}$%
- \fi%
-}
-
-
-\ctikzset{text/.style = { t=#1 } }
-\ctikzset{t/.code = {
- \ctikzsetvalof{bipoles/twoport/text}{#1}
-}}
-
-%%%---------- close: tex/pgfcirclabel
-%%%%%%%%%%% Springe nach tex/pgfcircvoltage
-%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Voltage management
-
-
-\ctikzset{v^>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v^</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v_>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-\ctikzset{v_</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-
-% Default position varies whether the component is a voltage source
-% or not
-\ctikzset{v/.code = {
- \ifpgf@circuit@bipole@isvoltage
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \ifpgf@circ@oldvoltagedirection
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \fi
- \fi
- \ifpgf@circ@oldvoltagedirection\else
- \ifpgf@circuit@bipole@iscurrent
- \ifpgf@circuit@bipole@current@backward
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \fi\fi\fi
- \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
- \ctikzsetvalof{bipole/voltage/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- }
-}
-
-\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
-\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
-\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
-\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
-
-
-%% Output routine for generic bipoles
-
-\def\pgf@circ@drawvoltagegeneric{
- \pgfextra{
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{\eudist}
- \else
- \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{-\eudist}
- \else
- \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
- \fi
- \fi
- \else
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{-\eudist}
- \else
- \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{\eudist}
- \else
- \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
- \fi
- \fi
- \fi
-
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@voltage@angle{90}
- \else
- \def\pgf@circ@voltage@angle{-90}
- \fi
-
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\distacefromnode{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}} }
- { \edef\distacefromnode{\ctikzvalof{voltage/distance from node}} }
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\bumpb{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}} }
- { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
- }
-
-
- coordinate (pgfcirc@midtmp) at ($(\tikztostart) ! \distacefromnode ! (anchorstartnode)$)
- coordinate (pgfcirc@Vfrom) at ($(pgfcirc@midtmp) ! -\distfromline ! \pgf@circ@voltage@angle:(anchorstartnode)$)
- coordinate (pgfcirc@mid) at ($(\tikztotarget) ! \distacefromnode ! (anchorendnode)$)
- coordinate (pgfcirc@Vto) at ($(pgfcirc@mid) ! \distfromline ! \pgf@circ@voltage@angle : (anchorendnode)$)
-
- \ifpgf@circuit@bipole@voltage@below
- coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
- coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
- \else
- coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
- coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
- \fi
-
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@straight
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) --(pgfcirc@Vfrom) node[currarrow, sloped, allow upside down, pos=1] {}
- \else
- (pgfcirc@Vfrom) --(pgfcirc@Vto) node[currarrow, sloped, allow upside down, pos=1] {}
-
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
- node[currarrow, sloped, allow upside down, pos=1] {}
- (pgfcirc@Vfrom)
- \else
- (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
- node[currarrow, sloped, allow upside down, pos=1] {}
- (pgfcirc@Vto)
- \fi
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
- \else
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
- \fi
- \else
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
- \else
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
- \fi
- \fi
- \fi
-}
-
-%% Output routine for voltage sources
-
-\def\pgf@circ@drawvoltagegenerator{
- \ifpgf@circuit@bipole@voltage@below
- coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-120)$)
- coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-60)$)
- \else
- coordinate (pgfcirc@Vcont1) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.120)$)
- coordinate (pgfcirc@Vcont2) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.60)$)
- \fi
-
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vcont2) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont1)
- \else
- (pgfcirc@Vcont1) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vcont2)
- \fi
-
- \else % american voltage
-
- \ifpgf@circuit@bipole@voltageoutsideofsymbol
- % if it is a battery, must put + and -
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vcont1) node {$-$} (pgfcirc@Vcont2) node {$+$}
- \else
- (pgfcirc@Vcont1) node {$+$} (pgfcirc@Vcont2) node {$-$}
- \fi
- \fi
-
- \fi
-}
-
-%% Output routine
-
-\def\pgf@circ@drawvoltage{ % node name
- \pgfextra{
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{east}
- \else \def\pgf@circ@bipole@voltage@label@anchor{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >284 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
-
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@voltage@below
- \pgf@circuit@bipole@voltage@belowfalse
- \else
- \pgf@circuit@bipole@voltage@belowtrue
- \fi
- \fi
-
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@below
- \pgf@circuit@bipole@voltage@belowfalse
- \else
- \pgf@circuit@bipole@voltage@belowtrue
- \fi
- \fi
-
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@where{-90}
- \else
- \def\pgf@circ@bipole@voltage@label@where{90}
- \fi
-
-
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label
- distance}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\eudist{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}} }
- { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
-
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- } %end pgfextra
-
- \ifpgf@circuit@bipole@isvoltage
- \pgf@circ@drawvoltagegenerator
- \else
- \pgf@circ@drawvoltagegeneric
- \fi
-
-
-
- (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)
- coordinate (Vlab) at ($(\ctikzvalof{bipole/name}.center) !
- \ifpgf@circuit@europeanvoltage\eudist\else\ctikzvalof{voltage/american label distance}\fi !
- (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)$)
- node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=0]
- at (Vlab) { \pgf@circ@finallabels{voltage/label} }
-}
-
-%%%---------- close: tex/pgfcircvoltage
-%%%%%%%%%%% Springe nach tex/pgfcirccurrent
-%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Current handling
-
-%% Options
-
-
-\ctikzset{i^>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i>^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i>_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i^</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i<^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i<_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i/.code = {
-% \ifpgf@circuit@bipole@iscurrent
-% \pgfkeys{\circuitikzbasekey/bipole/current/position=above}
-% \else
-% \pgfkeys{\circuitikzbasekey/bipole/current/position=below}
-% \fi
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above }
- \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
- \ctikzsetvalof{bipole/current/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-%reverse current direction for voltage sources
- \ifpgf@circ@oldvoltagedirection\else
- \ifpgf@circuit@bipole@isvoltage
- \ifpgf@circuit@bipole@voltage@backward
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below }
- \else
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above }
- \fi\fi\fi
-}
-}
-
-
-\ifpgf@circ@oldvoltagedirection
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
-\else
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
-\fi
-\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
-\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
-\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
-
-
-\def\pgf@circ@drawnormalcurrent{
- \ifpgf@circuit@bipole@current@before
- \ifpgf@circuit@bipole@current@backward
- { (anchorstartnode) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\tikztostart)
- }
- \else
- { (\tikztostart) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (anchorstartnode)
- }
- \fi
- \else
- \ifpgf@circuit@bipole@current@backward
- { (\tikztotarget) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (anchorendnode)
- }
- \else
- { (anchorendnode) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\tikztotarget)
- }
- \fi
- \fi
-}
-
-%% Output routine
-%% #1 - node name
-
-\def\pgf@circ@drawcurrent{
- \pgfextra{
- \edef\pgf@circ@ffffff{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >284 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- \ifnum\pgfcircmathresult >355
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
-
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@bipole@current@label@where{-90}
- \else
- \def\pgf@circ@bipole@current@label@where{+90}
- \fi
- }
-
-
- \pgfextra{ \def\pgf@temp{short} \edef\pgf@circ@temp{\ctikzvalof{bipole/kind}} }
-
- \ifx\pgf@circ@temp\pgf@temp % caso di corrente (centrata) su un corto
- \ifpgf@circuit@bipole@current@backward
- { (\tikztotarget) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\tikztostart) }
- \else
- { (\tikztostart) --
- node [currarrow, pos=\ctikzvalof{current/distance}, sloped, allow upside down] (Iarrow) {}
- (\tikztotarget) }
- \fi
-
- \else % altri bipoli - e quindi tra nodo e target
-
- \ifpgf@circuit@bipole@iscurrent
- \ifpgf@circuit@europeancurrent
- \pgf@circ@drawnormalcurrent
- \else
- \fi
- \else
- \pgf@circ@drawnormalcurrent
- \fi
- \fi
-
- \ifpgf@circuit@bipole@iscurrent
- node [anchor=\pgf@circ@dir] at (\ctikzvalof{bipole/name}.\pgf@circ@bipole@current@label@where)
- { \pgf@circ@finallabels{current/label} }
- \else
- (Iarrow.\pgf@circ@bipole@current@label@where) node [anchor=\pgf@circ@dir]
- { \pgf@circ@finallabels{current/label} }
- \fi
-
-}
-
-
-
-
-%%%---------- close: tex/pgfcirccurrent
-
-\ExecuteOptions{nofetbodydiode,nofetsolderdot,nooldvoltagedirection,europeancurrents,europeanvoltages,americanports,americanresistors,cuteinductors,europeangfsurgearrester,nosiunitx,noarrowmos,smartlabels,nocompatibility}
-
-\ProcessOptions\relax
-
-%%%%%%%%%%% Springe nach tex/pgfcircpath
-%%%---------- open: tex/pgfcircpath.tex
-
-\pgf@circ@Rlen = \pgfkeysvalueof{/tikz/circuitikz/bipoles/length}
-\def\pgf@circ@direction{0.0}
-
-% Names
-\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
-\ctikzset{n/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/name=#1}
-}}
-
-% Reflect the node along
-\ctikzset{mirrored/.is choice}
-\ctikzset{mirror value/.initial=1}
-\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
-\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
-\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
-
-% Invert node along path
-\ctikzset{inverted/.is choice}
-\ctikzset{invert value/.initial=1}
-\ctikzset{inverted/true/.code = {\ctikzsetvalof{invert value}{-1}\pgf@circuit@bipole@invertedtrue}}
-\ctikzset{inverted/false/.code = {\ctikzsetvalof{invert value}{1}\pgf@circuit@bipole@invertedfalse}}
-\ctikzset{invert/.style = {/tikz/circuitikz/inverted=true}}
-\newif\ifpgf@circuit@bipole@inverted
-\ctikzset{bipole/inverted/.is if=pgf@circuit@bipole@inverted}
-
-
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-
-
-
-% Initialize paths
-\def\pgfcircresetpath{
- \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90, ,bipole/annotation/name=, bipole/annotation/position=-90,
- bipole/inverted=false, bipole/kind=,
- bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
- bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
- bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
- bipole/current/y position=above, bipole/current/direction=forward,
- mirrored=false
- }
-}
-
-
-%% Generic bipole path
-\def\pgf@circ@bipole@path#1#2{
- \pgfextra{
- \ctikzset{bipole/kind = #1}
-
- \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
- \def\pgf@circ@temp{}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = #2\pgf@circ@rand} % create it
- \fi
-
- \def\pgf@temp{open}
- \def\pgf@circ@temp{#1}
- }
-
- (\tikztostart) coordinate (\ctikzvalof{bipole/name}start)
- (\tikztotarget) coordinate (\ctikzvalof{bipole/name}end)
- \pgfextra{
- \pgf@circ@slope{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \edef\pgf@circ@direction{\pgfmathresult}
- }
-
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)
- node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}, xscale=\ctikzvalof{invert value}]
- (\ctikzvalof{bipole/name}) {}
- \ifpgf@circuit@bipole@inverted
- \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathend)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathstart)
- \else
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.right)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.left)
- \fi
- \else
- \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathstart)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathend)
- \else
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.left)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.right)
- \fi
- \fi
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- \else
- \ifpgf@circuit@bipole@strokedsymbol%draw line thrue symbol(e.g. diodes)
- \ifcsname pgf@anchor@#1shape@strokepathstart\endcsname%if special path-anchors are defined, use them!
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.strokepathstart)
- (\ctikzvalof{bipole/name}.strokepathend) -- (\ctikzvalof{bipole/name}end.center)
- \else
- (\ctikzvalof{bipole/name}start.center)--(\ctikzvalof{bipole/name}end.center)
- \fi
- \else
- (\ctikzvalof{bipole/name}start.center) --(anchorstartnode)
- (anchorendnode) -- (\ctikzvalof{bipole/name}end.center)
-
- \fi
- \fi
-
-
- \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabels{label}\fi
- \pgf@circ@ifkeyempty{bipole/annotation/name}\else\pgf@circ@drawlabels{annotation}\fi
- \drawpoles
- \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
- \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
- % reset
- \pgfextra{
- \pgfcircresetpath
- }
- (\tikztotarget) \tikztonodes % e si continua
-}
-
-
-%% Path definitions
-\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
-\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
-\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
-\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
-\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
-\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
-\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
-\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
-\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
-\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
-\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
-\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
-\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
-\def\pgf@circ@battery1@path#1{\pgf@circ@bipole@path{battery1}{#1}}
-\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
-\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
-\def\pgf@circ@inductor@path#1{%
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@europeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@cuteinductor@path{#1}%
- \else%
- \pgf@circ@americaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@vinductor@path#1{
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@veuropeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@vcuteinductor@path{#1}%
- \else%
- \pgf@circ@vamericaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
-\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
-\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
-\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
-\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
-\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
-\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
-\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
-\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
-\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
-\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
-\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
-\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
-\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
-\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
-\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
-\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
-\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
-\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
-\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
-\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
-\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
-\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
-\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
-\def\pgf@circ@spst@path#1{\pgf@circ@bipole@path{spst}{#1}}
-\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
-\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
-\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
-\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
-\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
-\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
-\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
-\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
-\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
-\def\pgf@circ@empty@path#1{}
-\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
-\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
-\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
-\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
-\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
-\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
-\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
-\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
-\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
-\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
-\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
-\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
-\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
-
-\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
-\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
-\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
-
-\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
-\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
-\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
-\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
-\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
-\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
-\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
-\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
-\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
-\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
-\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
-\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
-\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
-\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
-\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
-\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
-\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
-\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
-
-%%Mechanical
-\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
-\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
-\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
-
-
-
-
-%% Styles
-
-\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
-\def\compattikzset#1{\tikzset{\comnpatname#1}}
-
-%\def\ctikzsetbipole#1#2{%
-% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
-%}
-
-\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
-\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
-\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
-\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
-\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
-\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
-\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
-\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
-\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
-\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
-\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
-\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
-\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
-\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
-\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
-\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
-\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
-\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
-\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
-\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
-\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
-\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery1@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
-\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
-\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
-\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
-\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
-\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
-\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
-\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
-\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
-\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
-\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
-\compattikzset{transmission line/.style = {tline = #1}}
-\compattikzset{TL/.style = {tline = #1}}
-\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-
-\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source, \circuitikzbasekey/bipole/is current=true, i=#1}}
-
-
-\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
-\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
-\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
-\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
-\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
-\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
-\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
-
-\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
-
-\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
-\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
-\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
-\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
-\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
-
-\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
-\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
-\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
-\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
-\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
-\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
-\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
-\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
-\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
-\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
-\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
-\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
-\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
-\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
-\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
-\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
-\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
-\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
-
-% % % % % %
-% % Beginn of Diodes
-% % % % % %
-
-\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
-\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
-\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
-\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
-\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
-\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
-\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
-\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
-\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
-\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
-\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
-\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
-\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
-\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
-\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
-\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
-
-\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
-\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
-\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
-\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
-\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
-\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
-\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
-\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
-\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
-\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
-
-\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
-\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
-%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
-
-\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
-\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
-\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
-\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
-\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
-\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
-\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
-\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
-\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
-\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
-
-%% Define Shortcuts
-\compattikzset{Do/.style = {\comnpatname empty diode}}
-\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
-\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
-\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
-\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
-\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
-\compattikzset{leDo/.style = {\comnpatname empty led}}
-\compattikzset{VCo/.style = {\comnpatname empty varcap}}
-\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
-\compattikzset{Tro/.style = {\comnpatname empty triac}}
-
-\compattikzset{D*/.style = {\comnpatname full diode}}
-\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
-\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
-\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
-\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
-\compattikzset{pD*/.style = {\comnpatname full photodiode}}
-\compattikzset{leD*/.style = {\comnpatname full led}}
-\compattikzset{VC*/.style = {\comnpatname full varcap}}
-\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
-\compattikzset{Tr*/.style = {\comnpatname full triac}}
-
-\compattikzset{D/.style = {\comnpatname diode}}
-\compattikzset{tD/.style = {\comnpatname tunnel diode}}
-\compattikzset{zD/.style = {\comnpatname Zener diode}}
-\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
-\compattikzset{sD/.style = {\comnpatname Schottky diode}}
-\compattikzset{pD/.style = {\comnpatname photodiode}}
-\compattikzset{leD/.style = {\comnpatname led}}
-\compattikzset{VC/.style = {\comnpatname varcap}}
-\compattikzset{Ty/.style = {\comnpatname thyristor}}
-\compattikzset{Tr/.style = {\comnpatname triac}}
-
-\compattikzset{D-/.style = {\comnpatname stroke diode}}
-\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
-\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
-\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
-\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
-\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
-\compattikzset{leD-/.style = {\comnpatname stroke led}}
-\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
-\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
-\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
-
-% % % % % %
-% % End of Diodes
-% % % % % %
-
-
-\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
-\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
-\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
-\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spst@path, l=#1}}
-\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
-
-\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
-\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
-\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
-
-% short forms
-\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-
-\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path}}
-\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosource@path}}
-
-\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
-\compattikzset{isource/.style = {\comnpatname current source = #1}}
-\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
-\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-
-\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-
-\compattikzset{R/.style= {\comnpatname resistor = #1}}
-%\ifpgf@circuit@compat\else\compattikzset{R/.style= {resistor = #1}}\fi
-\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
-\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
-\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
-\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
-\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
-\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
-\compattikzset{C/.style = {\comnpatname capacitor = #1}}
-\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
-\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
-\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
-\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
-\compattikzset{L/.style = {\comnpatname inductor = #1}}
-\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
-\compattikzset{V/.style = {\comnpatname voltage source = #1}}
-\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
-\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\def\pgf@temp#1{
- \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
- \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
- \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
- \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-\compattikzset{I/.style = {\comnpatname current source = #1}}
-\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\def\pgf@temp#1{
- \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
- \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
- \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
- \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-
-
-
-\compattikzset{Mr/.style = {\comnpatname memristor}}
-
-\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
-\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
-\compattikzset{spst/.style = {\comnpatname switch = #1}}
-
-\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
-
-\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
-\compattikzset{vss/.style = {\comnpatname vee = #1}}
-
-\def\inheritlogicport#1#2{
- \pgfdeclareshape{#2 port}{
- \inheritsavedanchors[from=#1 #2 port]
- \inheritbackgroundpath[from=#1 #2 port]
- \inheritanchor[from=#1 #2 port]{in}
- \inheritanchor[from=#1 #2 port]{in 1}
- \inheritanchor[from=#1 #2 port]{in 2}
- \inheritanchor[from=#1 #2 port]{out}
- \inheritanchor[from=#1 #2 port]{center}
- \inheritanchor[from=#1 #2 port]{left}
- }
-}
-
-\ifpgf@circuit@europeanlogicport
- \inheritlogicport{european}{and}
- \inheritlogicport{european}{or}
- \inheritlogicport{european}{xor}
- \inheritlogicport{european}{not}
- \inheritlogicport{european}{nand}
- \inheritlogicport{european}{nor}
- \inheritlogicport{european}{xnor}
-\else
- \inheritlogicport{american}{and}
- \inheritlogicport{american}{or}
- \inheritlogicport{american}{xor}
- \inheritlogicport{american}{not}
- \inheritlogicport{american}{nand}
- \inheritlogicport{american}{nor}
- \inheritlogicport{american}{xnor}
-\fi
-
-% Transistor like bipoles
-
-\def\pgf@circ@trans@path#1#2{
- \pgfextra{
- \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
- \def\pgf@circ@temp{#2}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
- \fi
- }
- \ifpgf@circuit@bipole@inverted
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- \else
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- \fi
- \pgfextra{
- \pgf@circ@slope{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \pgfmathadd{\pgfmathresult}{-90}
- \edef\pgf@circ@direction{\pgfmathresult}
- }
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)
- node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
- (\ctikzvalof{bipole/name}) {} node {\ctikzvalof{bipole/label/name}}
- node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
- (\ctikzvalof{bipole/name}) {} node {\ctikzvalof{bipole/value/name}}
- \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
- (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
- \else
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
- (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
- \fi
- \pgfextra{
- \pgfcircresetpath
- }
- (\tikztotarget) \tikztonodes % e si continua
-}
-
-
-\def\pgf@circ@definetranspath#1{
- \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
-}
-
-\pgf@circ@definetranspath{elmech}
-\pgf@circ@definetranspath{nmos}
-\pgf@circ@definetranspath{pmos}
-\pgf@circ@definetranspath{npn}
-\pgf@circ@definetranspath{pnp}
-\pgf@circ@definetranspath{nfet}
-\pgf@circ@definetranspath{nigfete}
-\pgf@circ@definetranspath{nigfetd}
-\pgf@circ@definetranspath{nigfetebulk}
-\pgf@circ@definetranspath{pfet}
-\pgf@circ@definetranspath{pigfete}
-\pgf@circ@definetranspath{pigfetd}
-\pgf@circ@definetranspath{pigfetebulk}
-\pgf@circ@definetranspath{njfet}
-\pgf@circ@definetranspath{pjfet}
-\pgf@circ@definetranspath{pigbt}
-\pgf@circ@definetranspath{nigbt}
-\pgf@circ@definetranspath{Lpigbt}
-\pgf@circ@definetranspath{Lnigbt}%%%---------- close: tex/pgfcircpath
-
-\ifpgf@circ@siunitx
- \RequirePackage{xstring}[2009/03/13]
- %\expandafter\let\csname angstrom\endcsname\relax
- \RequirePackage{siunitx}
-\fi
-
-
-
-\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
-%override (unused) circuitikz environment for compability to externalization)
-\let\circuitikz\tikzpicture
-\let\endcircuitikz\endtikzpicture
+\input{circuitikz-0.7-body.tex}
-\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.8.3-body.tex b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.8.3-body.tex
new file mode 100644
index 0000000000..330e59fd26
--- /dev/null
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.8.3-body.tex
@@ -0,0 +1,11142 @@
+% Copyright 2018-2021 by Romano Giannetti
+% Copyright 2015-2021 by Stefan Lindner
+% Copyright 2013-2021 by Stefan Erhardt
+% Copyright 2007-2021 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+
+\NeedsTeXFormat{LaTeX2e}
+
+\def\pgfcircversion{0.8.3}
+\def\pgfcircversiondate{2017/05/28}
+
+
+%% Version 3.0 of pgf/TikZ is required
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+\usepgflibrary{arrows}
+
+
+% The options are listed in the manual in this order
+
+\DeclareOption{europeanvoltage}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{straightvoltages}{
+ \pgf@circuit@bipole@voltage@straighttrue
+}
+
+\DeclareOption{americanvoltage}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrent}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrent}{
+ \ctikzset{current = american}
+}
+
+
+
+\DeclareOption{americanresistor}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistor}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductor}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductor}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductor}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanport}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanport}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{europeanport}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{european}{
+ \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
+ \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester choice = european}
+}
+
+\DeclareOption{american}{
+ \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester choice = american}
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{fulldiodes}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiodes}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{europeanvoltages}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{americanvoltages}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrents}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrents}{
+ \ctikzset{current = american}
+}
+
+\DeclareOption{americanresistors}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistors}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductors}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductors}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductors}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanports}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanports}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{americangfsurgearrester}{
+ \ctikzset{gas filled surge arrester choice = american}
+}
+
+\DeclareOption{europeangfsurgearrester}{
+ \ctikzset{gas filled surge arrester choice = european}
+}
+
+\DeclareOption{siunitx}{
+ \pgf@circ@siunitxtrue
+}
+
+\DeclareOption{nosiunitx}{
+ \pgf@circ@siunitxfalse
+}
+
+\DeclareOption{fulldiode}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiode}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{strokediode}{
+ \ctikzset{diode = stroke}
+}
+
+\DeclareOption{arrowmos}{
+ \pgf@circuit@mos@arrowstrue
+}
+
+\DeclareOption{noarrowmos}{
+ \pgf@circuit@mos@arrowsfalse
+}
+
+\DeclareOption{fetbodydiode}{
+ \pgf@circuit@fet@bodydiodetrue
+}
+
+\DeclareOption{nofetbodydiode}{
+ \pgf@circuit@fet@bodydiodefalse
+}
+
+\DeclareOption{fetsolderdot}{
+ \pgf@circuit@fet@solderdottrue
+}
+
+\DeclareOption{nofetsolderdot}{
+ \pgf@circuit@fet@solderdotfalse
+}
+
+\DeclareOption{emptypmoscircle}{
+ \pgf@circuit@pmos@emptycircletrue
+}
+
+
+\DeclareOption{lazymos}{
+ \ctikzset{tripoles/nmos/width=.5}
+ \ctikzset{tripoles/nmos/gate height=.35}
+ \ctikzset{tripoles/nmos/base height=.35}
+ \ctikzset{tripoles/nmos/height/.initial=1.2}
+ \ctikzset{tripoles/nmos/base width=.5}
+ \ctikzset{tripoles/nmos/gate width=.65}
+
+ \ctikzset{tripoles/pmos/width=.5}
+ \ctikzset{tripoles/pmos/gate height=.35}
+ \ctikzset{tripoles/pmos/base height=.35}
+ \ctikzset{tripoles/pmos/height/.initial=1.2}
+ \ctikzset{tripoles/pmos/base width=.5}
+ \ctikzset{tripoles/pmos/gate width=.65}
+
+ \pgf@circuit@pmos@emptycircletrue
+}
+
+\DeclareOption{straightlabels}{
+ \ctikzset{label/align = straight}
+}
+
+\DeclareOption{rotatelabels}{
+ \ctikzset{label/align = rotate}
+}
+
+\DeclareOption{smartlabels}{
+ \ctikzset{label/align = smart}
+}
+
+\DeclareOption{compatibility}{
+ \pgf@circuit@compattrue
+}
+
+\DeclareOption{oldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectiontrue
+}
+\DeclareOption{nooldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectionfalse
+}
+
+\DeclareOption{betterproportions}{
+ \ctikzset{monopoles/ground/width/.initial=.15}
+
+ \ctikzset{bipoles/resistor/height/.initial=.23}
+ \ctikzset{bipoles/resistor/width/.initial=.6}
+ \ctikzset{bipoles/capacitor/height/.initial=.4}
+ \ctikzset{bipoles/capacitor/width/.initial=.1}
+ \ctikzset{bipoles/potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
+ \ctikzset{bipoles/photoresistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistor/main/.initial=.7}
+ \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
+ \ctikzset{bipoles/thermistorptc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorptc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/main/.initial=.7}
+ \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/width/.initial=.6}
+ \ctikzset{bipoles/vresistor/height/.initial=.45}
+ \ctikzset{bipoles/vresistor/width/.initial=.6}
+ \ctikzset{bipoles/generic/height/.initial=.23}
+ \ctikzset{bipoles/generic/width/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/ageneric/height/.initial=.23}
+ \ctikzset{bipoles/ageneric/width/.initial=.6}
+ \ctikzset{bipoles/memristor/height/.initial=.23}
+ \ctikzset{bipoles/memristor/wave height/.initial=.375}
+ \ctikzset{bipoles/memristor/width/.initial=.60}
+ \ctikzset{bipoles/tgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tgeneric/width/.initial=.6}
+ \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
+ \ctikzset{bipoles/fullgeneric/height/.initial=.23}
+ \ctikzset{bipoles/fullgeneric/width/.initial=.6}
+ \ctikzset{bipoles/diode/height/.initial=.3}
+ \ctikzset{bipoles/diode/width/.initial=.25}
+
+ \ctikzset{tripoles/thyristor/height/.initial=.66}
+ \ctikzset{tripoles/thyristor/height 2/.initial=.3}
+ \ctikzset{tripoles/thyristor/width/.initial=.6}
+ \ctikzset{tripoles/thyristor/diode height/.initial=.3}
+ \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+ \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+ \ctikzset{tripoles/triac/height/.initial=.66}
+ \ctikzset{tripoles/triac/width/.initial=.6}
+ \ctikzset{tripoles/triac/diode width left/.initial=.3}
+ \ctikzset{tripoles/triac/diode width right/.initial=.3}
+}
+
+%%%%%%%%%
+%%%%%%%%%%% Springe nach tex/pgfcirc.defines
+%%%---------- open: tex/pgfcirc.defines.tex
+
+%% Options
+
+%%%%%%%%%%%%
+%% Dimensions
+
+% coordinates
+\newdimen\pgf@circ@res@up
+\newdimen\pgf@circ@res@down
+\newdimen\pgf@circ@res@zero
+\newdimen\pgf@circ@res@left
+\newdimen\pgf@circ@res@right
+\newdimen\pgf@circ@res@other
+\newdimen\pgf@circ@res@step
+\newdimen\pgf@circ@res@temp
+% inital thickness
+\newdimen \pgfstartlinewidth
+%% Keys
+
+\long\def\pgf@circ@comment#1{}
+
+\def\circuitikzbasekey{/tikz/circuitikz}
+
+\pgfkeys{\circuitikzbasekey/.is family}
+
+\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
+\let\ctikzset\circuitikzset
+\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
+\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circuit@compat
+\newif\ifpgf@circ@oldvoltagedirection
+
+% Option ">" for twoports
+\newif\ifpgf@circuit@inputarrow
+\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/.is choice}
+\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
+
+% Option "boxed" for nodes and twoports
+\newif\ifpgf@circuit@boxed
+\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
+
+% Option "dashed" for nodes and twoports
+\newif\ifpgf@circuit@dashed
+\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
+\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}
+
+% Option "t=*" for nodes
+\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
+
+
+
+\ctikzset{bipoles/.is family}
+\ctikzset{bipoles/border margin/.initial=1.1}
+\ctikzset{bipoles/thickness/.initial=2}
+\ctikzset{nodes width/.initial=.04}
+\newdimen\pgf@circ@Rlen
+\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1}}
+\pgf@circ@Rlen = 1.4cm
+
+\ctikzset{monopoles/.is family}
+\ctikzset{monopoles/ground/width/.initial=.25}
+\ctikzset{monopoles/tground/thickness/.initial=3}
+\ctikzset{monopoles/vcc/width/.initial=.2}
+\ctikzset{monopoles/match/width/.initial=.4}
+\ctikzset{monopoles/chassis/width/.initial=.25}
+\ctikzset{monopoles/alternative chassis/width/.initial=.25}
+\ctikzset{monopoles/equipotentiality/width/.initial=.25}
+\ctikzset{monopoles/tlinestub/width/.initial=.25}
+\ctikzset{monopoles/antenna/width/.initial=.25}
+\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/width/.initial=.25}
+\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/rxantenna/width/.initial=.25}
+
+\ctikzset{bipoles/resistor/height/.initial=.3}
+\ctikzset{bipoles/resistor/width/.initial=.8}
+\ctikzset{bipoles/potentiometer/height/.initial=.8}
+\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
+\ctikzset{bipoles/potentiometer/width/.initial=.8}
+\ctikzset{bipoles/photoresistor/height/.initial=.6}
+\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
+\ctikzset{bipoles/photoresistor/width/.initial=.8}
+\ctikzset{bipoles/thermistor/main/.initial=.7}
+\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/width/.initial=.8}
+\ctikzset{bipoles/thermistorntc/main/.initial=.7}
+\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistorptc/width/.initial=.8}
+\ctikzset{bipoles/thermistorptc/main/.initial=.7}
+\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistor/width/.initial=.8}
+\ctikzset{bipoles/varistor/main/.initial=.7}
+\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/varistor/width/.initial=.8}
+\ctikzset{bipoles/vresistor/height/.initial=.6}
+\ctikzset{bipoles/vresistor/width/.initial=.8}
+\ctikzset{bipoles/cuteinductor/height/.initial=.3}
+\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
+\ctikzset{bipoles/cuteinductor/width/.initial=.6}
+\ctikzset{bipoles/cuteinductor/coils/.initial=5}
+\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+\ctikzset{bipoles/americaninductor/height/.initial=.3}
+\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
+\ctikzset{bipoles/americaninductor/width/.initial=.8}
+\ctikzset{bipoles/americaninductor/coils/.initial=4}
+\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
+\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
+\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
+\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
+\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
+\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
+\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/esource/height/.initial=.60}
+\ctikzset{bipoles/esource/width/.initial=.60}
+\ctikzset{bipoles/pvsource/height/.initial=.60}
+\ctikzset{bipoles/pvsource/width/.initial=.60}
+\ctikzset{bipoles/isource/height/.initial=.60}
+\ctikzset{bipoles/isource/width/.initial=.60}
+\ctikzset{bipoles/oosource/height/.initial=.60}
+\ctikzset{bipoles/oosource/width/.initial=.60}
+\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/dcisource/height/.initial=.60}
+\ctikzset{bipoles/dcisource/width/.initial=.60}
+\ctikzset{bipoles/dcvsource/height/.initial=.60}
+\ctikzset{bipoles/dcvsource/width/.initial=.60}
+\ctikzset{bipoles/vsourcetri/height/.initial=.60}
+\ctikzset{bipoles/vsourcetri/width/.initial=.60}
+\ctikzset{bipoles/isourceam/height/.initial=.60}
+\ctikzset{bipoles/isourceam/width/.initial=.60}
+\ctikzset{bipoles/vsource/height/.initial=.60}
+\ctikzset{bipoles/vsource/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/height/.initial=.60}
+\ctikzset{bipoles/vsourceam/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/margin/.initial=.7}
+\ctikzset{bipoles/isourcesin/height/.initial=.60}
+\ctikzset{bipoles/isourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesin/height/.initial=.60}
+\ctikzset{bipoles/vsourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
+\ctikzset{bipoles/cisource/height/.initial=.7}
+\ctikzset{bipoles/cisource/width/.initial=.7}
+\ctikzset{bipoles/cisourceam/height/.initial=.7}
+\ctikzset{bipoles/cisourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsource/height/.initial=.7}
+\ctikzset{bipoles/cvsource/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/height/.initial=.7}
+\ctikzset{bipoles/cvsourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
+\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
+\ctikzset{bipoles/cisourcesin/width/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
+\ctikzset{bipoles/capacitor/height/.initial=.6}
+\ctikzset{bipoles/capacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/height/.initial=.5}
+\ctikzset{bipoles/ecapacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/font/.initial= \fontsize{6}{0}\selectfont\boldmath}
+\ctikzset{bipoles/pcapacitor/height/.initial=.6}
+\ctikzset{bipoles/pcapacitor/width/.initial=.2}
+\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
+\ctikzset{bipoles/vcapacitor/height/.initial=.6}
+\ctikzset{bipoles/vcapacitor/width/.initial=.5}
+\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
+\ctikzset{bipoles/piezoelectric/height/.initial=.7}
+\ctikzset{bipoles/piezoelectric/width/.initial=.5}
+\ctikzset{bipoles/battery/height/.initial=.6}
+\ctikzset{bipoles/battery/width/.initial=.3}
+\ctikzset{bipoles/battery1/height/.initial=.6}
+\ctikzset{bipoles/battery1/width/.initial=.3}
+\ctikzset{bipoles/battery2/height/.initial=.6}
+\ctikzset{bipoles/battery2/width/.initial=.3}
+\ctikzset{bipoles/diode/height/.initial=.50}
+\ctikzset{bipoles/diode/width/.initial=.40}
+\ctikzset{bipoles/varcap/height/.initial=.50}
+\ctikzset{bipoles/varcap/width/.initial=.45}
+\ctikzset{bipoles/spst/height/.initial=.35}
+\ctikzset{bipoles/spst/width/.initial=.35}
+\ctikzset{bipoles/spst/depth/.initial=.2}
+\ctikzset{bipoles/nos/height/.initial=.3}
+\ctikzset{bipoles/nos/width/.initial=.35}
+\ctikzset{bipoles/ncs/height/.initial=.35}
+\ctikzset{bipoles/ncs/width/.initial=.35}
+\ctikzset{bipoles/generic/height/.initial=.30}
+\ctikzset{bipoles/generic/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
+\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
+\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
+\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
+\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
+\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
+\ctikzset{bipoles/fuse/height/.initial=.20}
+\ctikzset{bipoles/fuse/width/.initial=.50}
+\ctikzset{bipoles/afuse/height/.initial=.20}
+\ctikzset{bipoles/afuse/width/.initial=.50}
+\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
+\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
+\ctikzset{bipoles/ageneric/height/.initial=.30}
+\ctikzset{bipoles/ageneric/width/.initial=.80}
+\ctikzset{bipoles/memristor/height/.initial=.30}
+\ctikzset{bipoles/memristor/wave height/.initial=.5}
+\ctikzset{bipoles/memristor/width/.initial=.80}
+\ctikzset{bipoles/tgeneric/height/.initial=.70}
+\ctikzset{bipoles/tgeneric/width/.initial=.80}
+\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
+\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
+\ctikzset{bipoles/fullgeneric/height/.initial=.30}
+\ctikzset{bipoles/fullgeneric/width/.initial=.80}
+\ctikzset{bipoles/open/height/.initial=.3} %necessary for curly voltages
+\ctikzset{bipoles/open/width/.initial=.3} %necessary for curly voltages
+\ctikzset{bipoles/open/voltage/straight label distance/.initial=0}
+\ctikzset{bipoles/open/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/short/height/.initial=0} %dummy height for voltage positioning
+\ctikzset{bipoles/short/width/.initial=0} %dummy width for voltage positioning
+%\ctikzset{bipoles/short/voltage/straight label distance/.initial=.2}
+%\ctikzset{bipoles/short/voltage/distance from node/.initial=.5}
+\ctikzset{bipoles/ammeter/height/.initial=.60}
+\ctikzset{bipoles/ammeter/width/.initial=.60}
+\ctikzset{bipoles/ohmmeter/height/.initial=.60}
+\ctikzset{bipoles/ohmmeter/width/.initial=.60}
+\ctikzset{bipoles/voltmeter/height/.initial=.60}
+\ctikzset{bipoles/voltmeter/width/.initial=.60}
+\ctikzset{bipoles/buffer/height/.initial=1}
+\ctikzset{bipoles/buffer/width/.initial=1}
+\ctikzset{bipoles/not port/width/.initial=1}
+\ctikzset{bipoles/not port/height/.initial=.8}
+\ctikzset{bipoles/not port/circle width/.initial=.15}
+\ctikzset{bipoles/lamp/height/.initial=.60}
+\ctikzset{bipoles/lamp/width/.initial=.60}
+\ctikzset{bipoles/tline/height/.initial=.3}
+\ctikzset{bipoles/tline/width/.initial=.8}
+\ctikzset{bipoles/squid/height/.initial=.60}
+\ctikzset{bipoles/squid/width/.initial=.60}
+\ctikzset{bipoles/barrier/height/.initial=.60}
+\ctikzset{bipoles/barrier/width/.initial=.60}
+\ctikzset{bipoles/thermocouple/height/.initial=.250}
+\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
+\ctikzset{bipoles/thermocouple/width/.initial=.140}
+\ctikzset{bipoles/pushbutton/height/.initial=.5}
+\ctikzset{bipoles/pushbutton/height 2/.initial=.0}
+\ctikzset{bipoles/pushbutton/width/.initial=.50}
+
+\ctikzset{bipoles/twoport/width/.initial=.7}
+\ctikzset{bipoles/twoport/height/.initial=.7}
+\ctikzset{bipoles/twoport/text/.initial=}
+\ctikzset{bipoles/vco/width/.initial=.7}
+\ctikzset{bipoles/bandpass/width/.initial=.7}
+\ctikzset{bipoles/bandstop/width/.initial=.7}
+\ctikzset{bipoles/highpass/width/.initial=.7}
+\ctikzset{bipoles/lowpass/width/.initial=.7}
+\ctikzset{bipoles/adc/width/.initial=.7}
+\ctikzset{bipoles/dac/width/.initial=.7}
+\ctikzset{bipoles/dsp/width/.initial=.7}
+\ctikzset{bipoles/fft/width/.initial=.7}
+\ctikzset{bipoles/amp/width/.initial=.7}
+\ctikzset{bipoles/vamp/width/.initial=.7}
+\ctikzset{bipoles/piattenuator/width/.initial=.7}
+\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
+\ctikzset{bipoles/tattenuator/width/.initial=.7}
+\ctikzset{bipoles/vtattenuator/width/.initial=.7}
+\ctikzset{bipoles/phaseshifter/width/.initial=.7}
+\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
+\ctikzset{bipoles/detector/width/.initial=.7}
+
+
+\newif\ifpgf@circuit@trans@depletiontype
+\pgf@circuit@trans@depletiontypefalse
+
+\newif\ifpgf@circuit@mos@arrows
+\ctikzset{tripoles/mos style/.is choice}
+\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
+\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
+
+% Option solderdot for fet
+\newif\ifpgf@circuit@fet@solderdot
+\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+
+% Option bodydiode for fet
+\newif\ifpgf@circuit@fet@bodydiode
+\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+
+% Option draw fet without gate connection
+\newif\ifpgf@circuit@bpt@drawgate
+\pgf@circuit@bpt@drawgatetrue
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+
+% Option draw bpt without base connection
+\newif\ifpgf@circuit@bpt@drawbase
+\pgf@circuit@bpt@drawbasetrue
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+
+% Option draw bpt with optical input
+\newif\ifpgf@circuit@bpt@drawphoto
+\pgf@circuit@bpt@drawphotofalse
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+
+% Option draw pmos with empty circle
+\newif\ifpgf@circuit@pmos@emptycircle
+\newif\ifpgf@circuit@pmos@emptycircle
+\pgf@circuit@pmos@emptycirclefalse
+\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+
+
+\newif\ifpgf@circuit@trans@ntype
+\pgf@circuit@trans@ntypetrue %default true
+%\newif\ifpgf@circuit@trans@ptype
+%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
+\ctikzset{tripoles/nmos/width/.initial=.7}
+\ctikzset{tripoles/nmos/gate height/.initial=.35}
+\ctikzset{tripoles/nmos/base height/.initial=.5}
+\ctikzset{tripoles/nmos/conn height/.initial=0}
+\ctikzset{tripoles/nmos/height/.initial=1.1}
+\ctikzset{tripoles/nmos/base width/.initial=.5}
+\ctikzset{tripoles/nmos/gate width/.initial=.62}
+\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nmos/curr direction/.initial=1}
+
+\ctikzset{tripoles/pmos/width/.initial=.7}
+\ctikzset{tripoles/pmos/gate height/.initial=.35}
+\ctikzset{tripoles/pmos/base height/.initial=.5}
+\ctikzset{tripoles/pmos/conn height/.initial=0}
+\ctikzset{tripoles/pmos/height/.initial=1.1}
+\ctikzset{tripoles/pmos/base width/.initial=.5}
+\ctikzset{tripoles/pmos/gate width/.initial=.62}
+\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pmos/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nfet/width/.initial=.7}
+\ctikzset{tripoles/nfet/gate height/.initial=.35}
+\ctikzset{tripoles/nfet/base height/.initial=.5}
+\ctikzset{tripoles/nfet/conn height/.initial=0}
+\ctikzset{tripoles/nfet/height/.initial=1.1}
+\ctikzset{tripoles/nfet/base width/.initial=.5}
+\ctikzset{tripoles/nfet/gate width/.initial=.62}
+\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pfet/width/.initial=.7}
+\ctikzset{tripoles/pfet/gate height/.initial=.35}
+\ctikzset{tripoles/pfet/base height/.initial=.5}
+\ctikzset{tripoles/pfet/conn height/.initial=0}
+\ctikzset{tripoles/pfet/height/.initial=1.1}
+\ctikzset{tripoles/pfet/base width/.initial=.5}
+\ctikzset{tripoles/pfet/gate width/.initial=.62}
+\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigfete/width/.initial=.7}
+\ctikzset{tripoles/nigfete/gate height/.initial=.35}
+\ctikzset{tripoles/nigfete/base height/.initial=.5}
+\ctikzset{tripoles/nigfete/conn height/.initial=.35}
+\ctikzset{tripoles/nigfete/height/.initial=1.1}
+\ctikzset{tripoles/nigfete/base width/.initial=.5}
+\ctikzset{tripoles/nigfete/gate width/.initial=.62}
+\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfete/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetd/width/.initial=.7}
+\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetd/base height/.initial=.5}
+\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetd/height/.initial=1.1}
+\ctikzset{tripoles/nigfetd/base width/.initial=.5}
+\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
+
+\ctikzset{tripoles/pigfete/width/.initial=.7}
+\ctikzset{tripoles/pigfete/gate height/.initial=.35}
+\ctikzset{tripoles/pigfete/base height/.initial=.5}
+\ctikzset{tripoles/pigfete/conn height/.initial=.35}
+\ctikzset{tripoles/pigfete/height/.initial=1.1}
+\ctikzset{tripoles/pigfete/base width/.initial=.5}
+\ctikzset{tripoles/pigfete/gate width/.initial=.62}
+\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetd/width/.initial=.7}
+\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetd/base height/.initial=.5}
+\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetd/height/.initial=1.1}
+\ctikzset{tripoles/pigfetd/base width/.initial=.5}
+\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
+
+\ctikzset{tripoles/npn/width/.initial=.6}
+\ctikzset{tripoles/npn/base height/.initial=.45}
+\ctikzset{tripoles/npn/base height 2/.initial=.15}
+\ctikzset{tripoles/npn/base height/.initial=.4}
+\ctikzset{tripoles/npn/conn height/.initial=0}
+\ctikzset{tripoles/npn/height/.initial=1.1}
+\ctikzset{tripoles/npn/base width/.initial=.5}
+\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/npn/curr direction/.initial=1}
+
+\ctikzset{tripoles/pnp/width/.initial=.6}
+\ctikzset{tripoles/pnp/base height/.initial=.45}
+\ctikzset{tripoles/pnp/base height 2/.initial=.15}
+\ctikzset{tripoles/pnp/base height/.initial=.4}
+\ctikzset{tripoles/pnp/conn height/.initial=0}
+\ctikzset{tripoles/pnp/height/.initial=1.1}
+\ctikzset{tripoles/pnp/base width/.initial=.5}
+\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pnp/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigbt/width/.initial=.6}
+\ctikzset{tripoles/pigbt/gate height/.initial=.45}
+\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/pigbt/base height/.initial=.4}
+\ctikzset{tripoles/pigbt/conn height/.initial=0}
+\ctikzset{tripoles/pigbt/height/.initial=1.1}
+\ctikzset{tripoles/pigbt/gate width/.initial=.62}
+\ctikzset{tripoles/pigbt/base width/.initial=.5}
+\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigbt/width/.initial=.6}
+\ctikzset{tripoles/nigbt/gate height/.initial=.45}
+\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/nigbt/base height/.initial=.4}
+\ctikzset{tripoles/nigbt/conn height/.initial=0}
+\ctikzset{tripoles/nigbt/height/.initial=1.1}
+\ctikzset{tripoles/nigbt/gate width/.initial=.62}
+\ctikzset{tripoles/nigbt/base width/.initial=.5}
+\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/Lpigbt/width/.initial=.6}
+\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/Lnigbt/width/.initial=.6}
+\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/njfet/width/.initial=.7}
+\ctikzset{tripoles/njfet/gate height/.initial=.5}
+\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/njfet/gate width/.initial=.5}
+\ctikzset{tripoles/njfet/conn height/.initial=.35}
+\ctikzset{tripoles/njfet/height/.initial=1.1}
+\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/njfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pjfet/width/.initial=.7}
+\ctikzset{tripoles/pjfet/gate height/.initial=.5}
+\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/pjfet/gate width/.initial=.5}
+\ctikzset{tripoles/pjfet/conn height/.initial=.35}
+\ctikzset{tripoles/pjfet/height/.initial=1.1}
+\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/isfet/width/.initial=1}
+\ctikzset{tripoles/isfet/gate height/.initial=.35}
+\ctikzset{tripoles/isfet/base height/.initial=.5}
+\ctikzset{tripoles/isfet/height/.initial=1.1}
+\ctikzset{tripoles/isfet/base width/.initial=.3}
+\ctikzset{tripoles/isfet/gate width/.initial=.5}
+\ctikzset{tripoles/isfet/conn height/.initial=0}
+\ctikzset{tripoles/isfet/wave width/.initial=.16}
+\ctikzset{tripoles/isfet/wave amp/.initial=.06}
+\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
+\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
+\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/isfet/curr direction/.initial=1}
+
+\newif\ifpgf@circuit@europeanlogicport
+\ctikzset{logic ports/.is choice}
+\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue } }
+\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse } }
+
+
+\ctikzset{tripoles/american and port/width/.initial=1.1}
+\ctikzset{tripoles/american and port/height/.initial=.8}
+\ctikzset{tripoles/american and port/port width/.initial=.7}
+\ctikzset{tripoles/american and port/input height/.initial=.5}
+\ctikzset{tripoles/american nand port/width/.initial=1.1}
+\ctikzset{tripoles/american nand port/height/.initial=.8}
+\ctikzset{tripoles/american nand port/port width/.initial=.7}
+\ctikzset{tripoles/american nand port/circle width/.initial=.15}
+\ctikzset{tripoles/american nand port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/width/.initial=1.1}
+\ctikzset{tripoles/american or port/height/.initial=.8}
+\ctikzset{tripoles/american or port/port width/.initial=.7}
+\ctikzset{tripoles/american or port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/input skip/.initial=.25}
+\ctikzset{tripoles/american or port/aaa/.initial=.6}
+\ctikzset{tripoles/american or port/bbb/.initial=.4}
+\ctikzset{tripoles/american or port/ccc/.initial=.5}
+\ctikzset{tripoles/american or port/ddd/.initial=.0}
+\ctikzset{tripoles/american nor port/width/.initial=1.1}
+\ctikzset{tripoles/american nor port/height/.initial=.8}
+\ctikzset{tripoles/american nor port/port width/.initial=.7}
+\ctikzset{tripoles/american nor port/input height/.initial=.5}
+\ctikzset{tripoles/american nor port/input skip/.initial=.25}
+\ctikzset{tripoles/american nor port/circle width/.initial=.15}
+\ctikzset{tripoles/american nor port/aaa/.initial=.6}
+\ctikzset{tripoles/american nor port/bbb/.initial=.4}
+\ctikzset{tripoles/american nor port/ccc/.initial=.5}
+\ctikzset{tripoles/american nor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xor port/width/.initial=1.1}
+\ctikzset{tripoles/american xor port/height/.initial=.8}
+\ctikzset{tripoles/american xor port/port width/.initial=.7}
+\ctikzset{tripoles/american xor port/input height/.initial=.5}
+\ctikzset{tripoles/american xor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xor port/distance/.initial=.1}
+\ctikzset{tripoles/american xor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/width/.initial=1.1}
+\ctikzset{tripoles/american xnor port/height/.initial=.8}
+\ctikzset{tripoles/american xnor port/port width/.initial=.7}
+\ctikzset{tripoles/american xnor port/input height/.initial=.5}
+\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xnor port/distance/.initial=.1}
+\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
+\ctikzset{tripoles/european and port/width/.initial=1.4}
+\ctikzset{tripoles/european and port/height/.initial=.65}
+\ctikzset{tripoles/european and port/reserved/.initial=.6}
+\ctikzset{tripoles/european and port/input height/.initial=.6}
+\ctikzset{tripoles/european or port/width/.initial=1.4}
+\ctikzset{tripoles/european or port/height/.initial=.65}
+\ctikzset{tripoles/european or port/reserved/.initial=.6}
+\ctikzset{tripoles/european or port/input height/.initial=.6}
+\ctikzset{tripoles/european xor port/width/.initial=1.4}
+\ctikzset{tripoles/european xor port/height/.initial=.65}
+\ctikzset{tripoles/european xor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xor port/input height/.initial=.6}
+\ctikzset{tripoles/european nand port/width/.initial=1.4}
+\ctikzset{tripoles/european nand port/not height/.initial=.3}
+\ctikzset{tripoles/european nand port/not width/.initial=.8}
+\ctikzset{tripoles/european nand port/height/.initial=.65}
+\ctikzset{tripoles/european nand port/reserved/.initial=.6}
+\ctikzset{tripoles/european nand port/input height/.initial=.6}
+\ctikzset{tripoles/european not port/width/.initial=1.4}
+\ctikzset{tripoles/european not port/not height/.initial=.3}
+\ctikzset{tripoles/european not port/not width/.initial=.8}
+\ctikzset{tripoles/european not port/height/.initial=.65}
+\ctikzset{tripoles/european not port/reserved/.initial=.6}
+\ctikzset{tripoles/european not port/input height/.initial=0}
+\ctikzset{tripoles/european xnor port/width/.initial=1.4}
+\ctikzset{tripoles/european xnor port/not height/.initial=.3}
+\ctikzset{tripoles/european xnor port/not width/.initial=.8}
+\ctikzset{tripoles/european xnor port/height/.initial=.65}
+\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xnor port/input height/.initial=.6}
+\ctikzset{tripoles/european nor port/width/.initial=1.4}
+\ctikzset{tripoles/european nor port/not height/.initial=.3}
+\ctikzset{tripoles/european nor port/not width/.initial=.8}
+\ctikzset{tripoles/european nor port/height/.initial=.65}
+\ctikzset{tripoles/european nor port/reserved/.initial=.6}
+\ctikzset{tripoles/european nor port/input height/.initial=.6}
+\ctikzset{tripoles/op amp/width/.initial=1.7}
+\ctikzset{tripoles/op amp/port width/.initial=.7}
+\ctikzset{tripoles/op amp/height/.initial=1.4}
+\ctikzset{tripoles/op amp/input height/.initial=.5}
+\ctikzset{tripoles/op amp/up pos/.initial=.45}
+\ctikzset{tripoles/op amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolut font size needed!
+\ctikzset{tripoles/en amp/width/.initial=1.7}
+\ctikzset{tripoles/en amp/port width/.initial=.7}
+\ctikzset{tripoles/en amp/height/.initial=1.6}
+\ctikzset{tripoles/en amp/input height/.initial=.3}
+\ctikzset{tripoles/en amp/up pos/.initial=.45}
+\ctikzset{tripoles/en amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolut font size needed!
+\ctikzset{tripoles/en amp/font2/.initial= \fontsize{14}{0}\selectfont\boldmath}%absolut font size needed!
+\ctikzset{tripoles/gm amp/width/.initial=1.7}
+\ctikzset{tripoles/gm amp/port width/.initial=.7}
+\ctikzset{tripoles/gm amp/height/.initial=1.4}
+\ctikzset{tripoles/gm amp/input height/.initial=.5}
+\ctikzset{tripoles/gm amp/up pos/.initial=.45}
+\ctikzset{tripoles/plain amp/width/.initial=1.7}
+\ctikzset{tripoles/plain amp/port width/.initial=.7}
+\ctikzset{tripoles/plain amp/height/.initial=1.4}
+\ctikzset{tripoles/plain amp/input height/.initial=.5}
+\ctikzset{tripoles/plain amp/up pos/.initial=.45}
+
+\ctikzset{tripoles/thyristor/height/.initial=1.10}
+\ctikzset{tripoles/thyristor/height 2/.initial=.5}
+\ctikzset{tripoles/thyristor/width/.initial=1.0}
+\ctikzset{tripoles/thyristor/diode height/.initial=.5}
+\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+\ctikzset{tripoles/triac/height/.initial=1.1}
+\ctikzset{tripoles/triac/width/.initial=1}
+\ctikzset{tripoles/triac/diode width left/.initial=.3}
+\ctikzset{tripoles/triac/diode width right/.initial=.3}
+
+\ctikzset{tripoles/spdt/width/.initial=.85}
+\ctikzset{tripoles/spdt/height/.initial=.45}
+\ctikzset{tripoles/spdt/margin/.initial=.45}
+
+\ctikzset{tripoles/toggleswitch/height/.initial=.8}
+\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
+\ctikzset{tripoles/toggleswitch/width/.initial=.80}
+
+\ctikzset{tripoles/mixer/width/.initial=0.7}
+\ctikzset{tripoles/adder/width/.initial=0.7}
+\ctikzset{tripoles/circulator/width/.initial=.7}
+\ctikzset{tripoles/oscillator/width/.initial=.7}
+
+
+\ctikzset{tripoles/wilkinson/height/.initial=1.3}
+\ctikzset{tripoles/wilkinson/width/.initial=1.3}
+
+\ctikzset{quadpoles/transformer/width/.initial=1.5}
+\ctikzset{quadpoles/transformer/width1/.initial=.4}
+\ctikzset{quadpoles/transformer/height/.initial=1.5}
+\ctikzset{quadpoles/transformer/height1/.initial=.8}
+\ctikzset{quadpoles/transformer core/width/.initial=1.5}
+\ctikzset{quadpoles/transformer core/height/.initial=1.5}
+\ctikzset{quadpoles/transformer core/core height/.initial=.5}
+\ctikzset{quadpoles/transformer core/core width/.initial=.05}
+\ctikzset{quadpoles/gyrator/width/.initial=1.5}
+\ctikzset{quadpoles/gyrator/height/.initial=1.5}
+\ctikzset{quadpoles/fourport/width/.initial=1.3}
+\ctikzset{quadpoles/fourport/height/.initial=1.3}
+\ctikzset{quadpoles/coupler/width/.initial=1.3}
+\ctikzset{quadpoles/coupler/height/.initial=1.3}
+\ctikzset{quadpoles/coupler2/width/.initial=1.3}
+\ctikzset{quadpoles/coupler2/height/.initial=1.3}
+
+\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
+
+
+% %Mechanical section
+\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
+\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
+\ctikzset{bipoles/spring/height/.initial=.5}
+\ctikzset{bipoles/spring/width/.initial=.5}
+\ctikzset{bipoles/mass/height/.initial=.55}
+\ctikzset{bipoles/mass/box height/.initial=.4}
+\ctikzset{bipoles/mass/width/.initial=.5}
+
+\ctikzset{bipoles/damper/height/.initial=.35}
+\ctikzset{bipoles/damper/length/.initial=.3}
+\ctikzset{bipoles/damper/width/.initial=.4}
+
+
+\ctikzset{bipole/.is family}
+\ctikzset{bipole/kind/.initial = }
+\ctikzset{bipole/name/.initial = }
+\newif\ifpgf@circuit@bipole@isvoltage
+\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
+\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
+\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
+\newif\ifpgf@circuit@bipole@strokedsymbol
+\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
+\newif\ifpgf@circuit@bipole@iscurrent
+\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
+
+\ctikzset{bipole/voltage/.is family}
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+\newif\ifpgf@circuit@bipole@voltage@below
+\ctikzset{bipole/voltage/position/.is choice}
+\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
+\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
+
+\ctikzset{bipole/voltage/label/unit/.initial=}
+\ctikzset{bipole/voltage/label/name/.initial=}
+
+\ctikzset{bipole/current/.is family}
+\newif\ifpgf@circuit@bipole@current@backward
+\ctikzset{bipole/current/direction/.is choice}
+\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
+\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
+\newif\ifpgf@circuit@bipole@current@before
+\ctikzset{bipole/current/x position/.is choice}
+\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
+\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
+\newif\ifpgf@circuit@bipole@current@below
+\ctikzset{bipole/current/y position/.is choice}
+\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
+\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
+\ctikzset{bipole/current/label/unit/.initial=}
+\ctikzset{bipole/current/label/name/.initial=}
+
+\ctikzset{bipole/flow/.is family}
+\newif\ifpgf@circuit@bipole@flow@backward
+\ctikzset{bipole/flow/direction/.is choice}
+\ctikzset{bipole/flow/direction/forward/.code={\pgf@circuit@bipole@flow@backwardfalse}}
+\ctikzset{bipole/flow/direction/backward/.code={\pgf@circuit@bipole@flow@backwardtrue}}
+\newif\ifpgf@circuit@bipole@flow@before
+\ctikzset{bipole/flow/x position/.is choice}
+\ctikzset{bipole/flow/x position/after/.code={\pgf@circuit@bipole@flow@beforefalse}}
+\ctikzset{bipole/flow/x position/before/.code={\pgf@circuit@bipole@flow@beforetrue}}
+\newif\ifpgf@circuit@bipole@flow@below
+\ctikzset{bipole/flow/y position/.is choice}
+\ctikzset{bipole/flow/y position/above/.code={\pgf@circuit@bipole@flow@belowfalse}}
+\ctikzset{bipole/flow/y position/below/.code={\pgf@circuit@bipole@flow@belowtrue}}
+\ctikzset{bipole/flow/label/unit/.initial=}
+\ctikzset{bipole/flow/label/name/.initial=}
+\ctikzset{flow/distance/.initial = .5}
+\ctikzset{flow/offset/.initial = .2}%distance between flow-arrow and conductor
+
+
+\ctikzset{bipole/label/.is family}
+\ctikzset{bipole/label/position/.initial=90}
+\ctikzset{bipole/label/unit/.initial=}
+\ctikzset{bipole/label/name/.initial=}
+\ctikzset{bipole/annotation/.is family}
+\ctikzset{bipole/annotation/position/.initial=-90}
+\ctikzset{bipole/annotation/unit/.initial=}
+\ctikzset{bipole/annotation/name/.initial=}
+\ctikzset{bipole/nodes/.is family}
+\ctikzset{bipole/nodes/left/.is choice}
+\ctikzset{bipole/nodes/left/none/.code={\ctikzsetvalof{bipole/nodes/left}{none}}}
+\ctikzset{bipole/nodes/left/empty/.code={\ctikzsetvalof{bipole/nodes/left}{empty}}}
+\ctikzset{bipole/nodes/left/full/.code={\ctikzsetvalof{bipole/nodes/left}{full}}}
+\ctikzset{bipole/nodes/left/diamond/.code={\ctikzsetvalof{bipole/nodes/left}{diamond}}}
+\ctikzset{bipole/nodes/left/rectjoinfill/.code={\ctikzsetvalof{bipole/nodes/left}{rectjoinfill}}}
+\ctikzset{bipole/nodes/right/.is choice}
+\ctikzset{bipole/nodes/right/none/.code={\ctikzsetvalof{bipole/nodes/right}{none}}}
+\ctikzset{bipole/nodes/right/empty/.code={\ctikzsetvalof{bipole/nodes/right}{empty}}}
+\ctikzset{bipole/nodes/right/full/.code={\ctikzsetvalof{bipole/nodes/right}{full}}}
+\ctikzset{bipole/nodes/right/diamond/.code={\ctikzsetvalof{bipole/nodes/right}{diamond}}}
+\ctikzset{bipole/nodes/right/rectjoinfill/.code={\ctikzsetvalof{bipole/nodes/right}{rectjoinfill}}}
+
+
+
+
+\newif\ifpgf@circuit@europeanresistor
+\ctikzset{resistor/.is choice}
+\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
+\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
+
+\ctikzset{inductor/.is choice}
+\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
+\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
+\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
+
+\newif\ifpgf@circuit@strokediode
+\newif\ifpgf@circuit@fulldiode
+\pgf@circuit@strokediodefalse
+\pgf@circuit@fulldiodefalse
+
+\ctikzset{diode/.is choice}
+\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
+\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
+\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
+
+\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full }}
+\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty }}
+\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke }}
+
+\ctikzset{thickness/.initial=2}
+\ctikzset{color/.initial=black}
+\pgfkeys{/tikz/color/.add code={}{\ctikzset{color={#1}}}}
+
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circ@siunitx@res
+
+\ctikzset{straight/.is choice}
+\ctikzset{straightvoltage value/.initial=true}
+\ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}}
+\ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}}
+\ctikzset{straightvoltage/.style = {/tikz/circuitikz/straight=true}}
+\newif\ifpgf@circuit@bipole@voltage@straight
+\ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight}
+
+
+\ctikzset{voltage/.is family}
+\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
+\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
+\ctikzset{voltage/bump a/.initial=1.2}
+\ctikzset{voltage/bump b/.initial=1.5}
+\ctikzset{voltage/european label distance/.initial=1.4}
+\ctikzset{voltage/american label distance/.initial=1.1}
+% special cases
+\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
+\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
+\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
+\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
+\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
+%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
+%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
+
+\ctikzset{current/.is family}
+\ctikzset{current/distance/.initial = .5}
+
+
+\tikzset{american currents/.style = { \circuitikzbasekey/current = american } }
+\tikzset{european currents/.style = { \circuitikzbasekey/current = european } }
+\tikzset{american voltages/.style = { \circuitikzbasekey/voltage = american } }
+\tikzset{european voltages/.style = { \circuitikzbasekey/voltage = european } }
+\tikzset{american resistors/.style = { \circuitikzbasekey/resistor = american } }
+\tikzset{european resistors/.style = { \circuitikzbasekey/resistor = european } }
+
+\newif\ifpgf@circuit@europeangfsurgearrester
+\ctikzset{gas filled surge arrester choice/.is choice}
+\ctikzset{gas filled surge arrester choice/european/.code= {\pgf@circuit@europeangfsurgearrestertrue } }
+\ctikzset{gas filled surge arrester choice/american/.code= {\pgf@circuit@europeangfsurgearresterfalse } }
+
+\tikzset{american gas filled surge arrester set/.style = { \circuitikzbasekey/gas filled surge arrester choice=american } }
+\tikzset{european gas filled surge arrester set/.style = { \circuitikzbasekey/gas filled surge arrester choice=european } }
+\tikzset{american inductors/.style = { \circuitikzbasekey/inductor = american } }
+\tikzset{european inductors/.style = { \circuitikzbasekey/inductor = european } }
+\tikzset{cute inductors/.style = { \circuitikzbasekey/inductor = cute } }
+\tikzset{american ports/.style = { \circuitikzbasekey/logic ports = american } }
+\tikzset{european ports/.style = { \circuitikzbasekey/logic ports = european } }
+\tikzset{european/.style = { european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester set} }
+\tikzset{american/.style = { american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester set} }
+\tikzset{cute/.style = { european currents, european voltages, american resistors, cute inductors, american ports } }
+
+% I should try to make the tree clearer (this voltaege conflicts with the options above)
+
+\newif\ifpgf@circuit@europeanvoltage
+\ctikzset{voltage/.is choice}
+\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse } }
+\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue } }
+
+\newif\ifpgf@circuit@europeancurrent
+\ctikzset{current/.is choice}
+\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse }
+\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue }
+
+\ctikzset{label/align/.is choice}
+\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
+\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
+\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
+
+%%%%%%%%%% new
+\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
+%%%---------- close: tex/pgfcirc.defines
+%%%%%%%%%%% Springe nach tex/pgfcircutils
+%%%---------- open: tex/pgfcircutils.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%\def\pgf@circ@handleSI#1{%
+ % \pgf@circ@siunitx@resfalse
+%
+ % \edef\len{\stringlength[e]{#1}}
+ %\testmatchingchar[e]{#1}{\len}{>}%
+ %\ifmatchingchar%
+ % \ifnum\findchars{#1}{<}=0
+ % \def\pgf@circ@handleSI@val{\substring{#1}{1}{\findchars{#1}{<}-1}}
+ %\def\pgf@circ@handleSI@unit{\substring{#1}{\findchars{#1}{<}-1}+1}{\stringlength{#1}}
+ %\pgf@circ@siunitx@restrue
+% \else
+% \fi
+ %\else
+ %\fi
+%}
+
+\def\pgf@circ@handleSI#1{
+ \noexpandarg
+ \def\pgf@temp{}
+ \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
+ \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
+
+ \ifnum\pgf@circ@handleSI@unit@len=0
+ \pgf@circ@siunitx@resfalse
+ \else
+ \IfEndWith{#1}{>}{
+ \pgf@circ@siunitx@restrue
+ \noexpandarg
+ \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
+ %\typeout{si |#1|}
+ }{
+ \pgf@circ@siunitx@resfalse
+ %\typeout{no si |#1|}
+ }
+ \fi
+}
+
+\def\pgf@circ@ifkeyempty#1{
+ \pgfextra{
+ \ctikzset{#1/.get=\pgf@circ@temp}
+ \edef\pgf@temp{}
+ }
+ \ifx\pgf@circ@temp\pgf@temp
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Math routines
+
+\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
+
+
+%%%---------- close: tex/pgfcircutils
+
+%%%%%%%%%%% Springe nach tex/pgfcircshapes
+%%%---------- open: tex/pgfcircshapes.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Other shapes
+
+
+%% Nothing
+
+\pgfdeclareshape{emptyshape}{
+ \savedanchor{\northeast}{%
+ \pgf@x=.5\wd\pgfnodeparttextbox%
+ \pgf@y=.5\ht\pgfnodeparttextbox%
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{east}{%
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{south}{%
+ \northeast
+ \pgf@y=-\pgf@y
+ \pgf@x=0cm
+ }
+ \anchor{west}{
+ \northeast
+ \pgf@y=0cm
+ \pgf@x=-\pgf@x
+ }
+ \anchor{text}{%
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+}
+
+%% Full terminal
+
+\pgfdeclareshape{circ}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}}
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Empty terminal
+
+\pgfdeclareshape{ocirc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}}
+ }
+
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Diamond terminal
+
+\pgfdeclareshape{diamondpole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
+ \pgftransformrotate{45}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@temp}{\pgf@circ@res@up+\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up-\pgf@circ@res@temp}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% Fill for correct rectangular joins
+
+\pgfdeclareshape{rectjoinfill}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfpathrectanglecorners
+ {\pgfpoint{0}{.5\pgflinewidth}}
+ {\pgfpoint{0}{-.5\pgflinewidth}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+
+%% Current arrow
+
+\pgfdeclareshape{currarrow}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \pgfpointorigin
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 16
+ \pgf@x =\pgf@circ@res@step
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 16
+
+ \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+
+ \endpgfscope
+ }
+
+}
+
+%% Flow arrow
+
+\pgfdeclareshape{flowarrow}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \pgfpointorigin
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 16
+ \pgf@x =\pgf@circ@res@step
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 4
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfnode{currarrow}{tip}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+ }
+}
+
+%% Input arrow
+
+\pgfdeclareshape{inputarrow}{
+ \savedanchor{\tip}{
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \tip
+ }
+ \anchor{tip}{
+ \tip
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 16
+
+ \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{fill}
+
+ \endpgfscope
+ }
+
+}
+
+
+%% box
+
+\pgfdeclareshape{box}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@circ@res@step = 0.5\pgf@circ@res@step
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+
+}
+
+%%%---------- close: tex/pgfcircshapes
+%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
+%%%---------- open: tex/pgfcircmonopoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Monopoles
+
+%% Ground symbol
+
+\pgfdeclareshape{ground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+
+
+\pgfdeclareshape{rground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{tground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ %\pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{sground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfusepath{draw}
+
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+% noiseless ground
+\pgfdeclareshape{nground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{1.3\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpatharc{0}{180}{1.3\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \endpgfscope
+ }
+}
+
+% protective ground
+\pgfdeclareshape{pground}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathcircle{\pgfpoint{0pt}{-\pgf@circ@res@step}} {1.2\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \endpgfscope
+ }
+}
+
+% chassis ground
+\pgfdeclareshape{cground}{
+\anchor{center}{
+ \pgfpointorigin
+}
+\behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/chassis/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-1.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% Contributed by Leonardo Azzinnari
+\pgfdeclareshape{tlinestub}{
+ \anchor{center}{\pgfpointorigin}
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+
+
+
+\pgfdeclareshape{antenna}{
+\anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
+ \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=6\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
+
+ % \pgfpathmoveto{\pgfpointorigin}
+ % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ % \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgftransformxshift{ -4\pgf@circ@res@step }
+
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+ }
+
+
+\pgfdeclareshape{txantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
+ \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=6\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
+% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+ }
+
+
+\pgfdeclareshape{rxantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
+ \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=6\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
+% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+% Vcc
+\pgfdeclareshape{vcc}{
+\anchor{center}{\pgfpointorigin}
+\anchor{text}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=2\pgf@circ@res@step
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+\behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+}
+
+}
+
+% Vee
+\pgfdeclareshape{vee}{
+\anchor{center}{\pgfpointorigin}
+\anchor{text}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=-2\pgf@circ@res@step
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+
+\behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+}
+
+}
+
+
+% match
+\pgfdeclareshape{match}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
+ \pgf@x=1.5\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \pgf@y=-1.5\ht\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
+ \pgfusepath{fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+
+}
+
+
+%%%---------- close: tex/pgfcircmonopoles
+%%%%%%%%%%% Springe nach tex/pgfcircbipoles
+%%%---------- open: tex/pgfcircbipoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%% Generic macro for defining a bipole shape
+% #1 - additional anchors
+% #2 - lower y-size of the bipole (from the center).
+% #3 - #shape is the name of the shape
+% #4 - upper y-size of the bipole (from the center)
+% #5 - width of the bipole
+% #6 - macros drawing the bipole
+
+
+\long\def\pgfcircdeclarebipole#1#2#3#4#5#6{
+ \pgfdeclareshape{#3shape}{
+
+ \savedanchor{\northeast}{
+ \pgf@y=#4\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\northeastborder}{
+ \pgf@y=#4\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwestborder}{
+ \pgf@y=-#2\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=-#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwest}{
+ \pgf@y=-#2\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\centerpoint}{
+ \pgf@circ@res@down=-#2\pgf@circ@Rlen
+ \pgf@circ@res@up=#4\pgf@circ@Rlen
+ \pgfpointorigin
+ \pgf@y=\pgf@circ@res@up
+ \advance\pgf@y by\pgf@circ@res@down
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{n}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{ne}{
+ \northeast
+ }
+ \anchor{nw}{
+ \northeast
+ \pgf@x=-\pgf@x
+ }
+ \anchor{e}{%
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{s}{%
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{se}{%
+ \southwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{sw}{%
+ \southwest
+ }
+ \anchor{w}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{east}{%
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{south}{%
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{west}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{right}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{above}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{left}{%
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{below}{%
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{a}{%
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{b} {
+ \southwest
+ \pgf@y=0cm
+ }
+ \savedanchor{\textanchor}{%
+ \pgf@y=\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \anchor{text}{%
+ \textanchor
+ }
+ \anchorborder{%
+ \ifpgf@circuit@bipole@inverted
+ \pgf@circ@res@left=-\pgf@x
+ \pgf@circ@res@right=-\pgf@y
+ \else
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@right=\pgf@y
+ \fi
+ \ifdim\pgf@circ@res@right>0cm
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
+ \else
+ \southwestborder
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
+ \fi
+ }
+
+ #1
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@zero = 0cm
+ \pgf@circ@res@left = -\pgf@x
+ \pgf@circ@res@right = \pgf@x
+ \southwest
+ \pgf@circ@res@down = \pgf@y
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ #6
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ }
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Standard bipole shapes declarations
+
+%% Resistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/resistor/height}}{resistor}{\ctikzvalof{bipoles/resistor/height}}{\ctikzvalof{bipoles/resistor/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \divide \pgf@circ@res@step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+}
+
+
+
+%% Variable resistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vresistor/height}}{vresistor}{\ctikzvalof{bipoles/vresistor/height}}{\ctikzvalof{bipoles/vresistor/width}}{ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \divide \pgf@circ@res@step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+%% Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/capacitor/height}}{capacitor}{\ctikzvalof{bipoles/capacitor/height}}{\ctikzvalof{bipoles/capacitor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/capacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+%% Polar Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pcapacitor/height}}{polarcapacitor}{\ctikzvalof{bipoles/pcapacitor/height}}{\ctikzvalof{bipoles/pcapacitor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/pcapacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgftransformrotate{-90}
+ \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+}
+
+%% Electrolytic Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ecapacitor/height}}{ecapacitor}{\ctikzvalof{bipoles/ecapacitor/height}}{\ctikzvalof{bipoles/ecapacitor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/ecapacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+ \pgfsetrectcap
+ % % % Draw plus pole
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ % % Draw minus pole
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{black}
+ \pgfusepath{draw,fill}
+ \pgfsetfillcolor{black}
+ % % plus pole annotation
+ \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
+ {\pgfkeysvalueof{/tikz/circuitikz/bipoles/ecapacitor/font} $+$}
+}
+
+%% Battery
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery/height}}{battery}{\ctikzvalof{bipoles/battery/height}}{\ctikzvalof{bipoles/battery/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 6
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+
+%% Battery 1 % poles with equl thickness
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery1/height}}{battery1}{\ctikzvalof{bipoles/battery1/height}}{\ctikzvalof{bipoles/battery1/width}}{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Battery 2 % negative pole thicker
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery2/height}}{battery2}{\ctikzvalof{bipoles/battery2/height}}{\ctikzvalof{bipoles/battery2/width}}{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{3\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+%% cute inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cuteinductor/lower coil height}}{cuteinductor}{\ctikzvalof{bipoles/cuteinductor/height}}{\ctikzvalof{bipoles/cuteinductor/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% variable cute inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}{vcuteinductor}{\ctikzvalof{bipoles/vcuteinductor/height}}{\ctikzvalof{bipoles/vcuteinductor/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% american inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/americaninductor/height 2}}{americaninductor}{\ctikzvalof{bipoles/americaninductor/height}}{\ctikzvalof{bipoles/americaninductor/width}}{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@Rlen
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% variable american inductor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vamericaninductor/height 2}}{vamericaninductor}{\ctikzvalof{bipoles/vamericaninductor/height}}{\ctikzvalof{bipoles/vamericaninductor/width}}{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@Rlen
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/vamericaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Independent voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsource/height}}{vsource}{\ctikzvalof{bipoles/vsource/height}}{\ctikzvalof{bipoles/vsource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+%% Independent voltage source - American style
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourceam/height}}{vsourceAM}{\ctikzvalof{bipoles/vsourceam/height}}{\ctikzvalof{bipoles/vsourceam/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+ \ifpgf@circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$-$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$+$}
+ \fi
+}
+
+
+
+%% Independent sinusoidal voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesin/height}}{vsourcesin}{\ctikzvalof{bipoles/vsourcesin/height}}{\ctikzvalof{bipoles/vsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Triangle Voltage source - contributed by Ralf Farkas
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+% Square Voltage source - contributed by Alistair Kwan
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesquare/height}}{vsourcesquare}{\ctikzvalof{bipoles/vsourcesquare/height}}{\ctikzvalof{bipoles/vsourcesquare/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Triangle Voltage source - contributed by Ralf Farkas
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Empty Source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% PV Source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pvsource/height}}{pvsource}{\ctikzvalof{bipoles/pvsource/height}}{\ctikzvalof{bipoles/pvsource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %Arrow Part
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty Source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% DC Current Source with open shape
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcisource/height}}{dcisource}{\ctikzvalof{bipoles/dcisource/height}}{\ctikzvalof{bipoles/dcisource/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}}\pgfpatharc{0}{90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}}\pgfpatharc{0}{-90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}\pgfpatharc{180}{270}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}\pgfpatharc{180}{90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% DC-Voltage source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcvsource/height}}{dcvsource}{\ctikzvalof{bipoles/dcvsource/height}}{\ctikzvalof{bipoles/dcvsource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
+ \pgfusepath{draw}
+}
+
+
+%% Independent current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isource}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Independent double oo source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/oosource/height}}{oosource}{\ctikzvalof{bipoles/oosource/height}}{\ctikzvalof{bipoles/oosource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
+ \pgfusepath{draw}
+}
+
+
+%% Independent current source - American
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isourceam/height}}{isourceAM}{\ctikzvalof{bipoles/isourceam/height}}{\ctikzvalof{bipoles/isourceam/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+
+%% Independent sinusoidal current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isourcesin}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+
+%% Controlled voltage source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsource/height}}{cvsource}{\ctikzvalof{bipoles/cvsource/height}}{\ctikzvalof{bipoles/cvsource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Controlled voltage source - American
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourceam/height}}{cvsourceAM}{\ctikzvalof{bipoles/cvsourceam/height}}{\ctikzvalof{bipoles/cvsourceam/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \ifpgf@circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$-$}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$-$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$+$}
+ \fi
+}
+
+
+%% Controlled sinusoidal voltage source
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cvsourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+%% Controlled sinusoidal current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cisourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+%% Controlled current source
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisource/height}}{cisource}{\ctikzvalof{bipoles/cisource/height}}{\ctikzvalof{bipoles/cisource/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Controlled current source - American
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisourceam/height}}{cisourceAM}{\ctikzvalof{bipoles/cisourceam/height}}{\ctikzvalof{bipoles/cisourceam/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% Black generic diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulldiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black Zener diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black alternative zigzag Zener diode
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black Schottky diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullsdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Black tunnel diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulltdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black light emitting diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulllediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+}
+
+%% Black photodiode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullpdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black varcap
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varcap/height}}{fullvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
+ \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfusepath{draw,fill}
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty generic diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptydiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty Zener diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty alternative zigzag Zener diode
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%% Empty Schottky diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptysdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty tunnel diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptytdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty light emitting diode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptylediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty photodiode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptypdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty varcap
+
+\pgfcircdeclarebipole{
+ \anchor{strokepathstart}{
+ \northeast
+ \pgf@y=0cm
+ \advance\pgf@x by -\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth
+ \advance\pgf@x by -\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth
+ }
+ \anchor{strokepathend}{
+ \northeast
+ \pgf@y=0cm
+ }
+ }{\ctikzvalof{bipoles/varcap/height}}{emptyvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
+ \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfusepath{draw}
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% (Closing) SPST
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spst/depth}}{cspst}{\ctikzvalof{bipoles/spst/height}}{\ctikzvalof{bipoles/spst/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0\pgf@circ@res@down}}
+ \pgfpatharcto{1.2\pgf@circ@res@right}{1.2\pgf@circ@res@right}{0}{0}{1}{\pgfpoint{.9\pgf@circ@res@left}{.9\pgf@circ@res@up}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+}
+
+%% Opening SPST
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spst/depth}}{ospst}{\ctikzvalof{bipoles/spst/height}}{\ctikzvalof{bipoles/spst/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfpatharcto{1.1\pgf@circ@res@right}{1.1\pgf@circ@res@right}{0}{0}{1}{\pgfpoint{.7\pgf@circ@res@left}{.9\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@left}{1\pgf@circ@res@up}}
+ \pgfsetarrowsend{latex'}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+}
+
+%% Normal open Switch
+\pgfcircdeclarebipole{}{0}{nos}{\ctikzvalof{bipoles/nos/height}}{\ctikzvalof{bipoles/nos/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+}
+
+%% Normal closed Switch
+\pgfcircdeclarebipole{}{0}{ncs}{\ctikzvalof{bipoles/ncs/height}}{\ctikzvalof{bipoles/ncs/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Push Button
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pushbutton/height 2}}{pushbutton}{\ctikzvalof{bipoles/pushbutton/height}}{\ctikzvalof{bipoles/pushbutton/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+
+% % METERINGSHAPE
+\long\def\drawmeteringcircle{
+ \def\pgf@circ@temp{right}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \def\pgf@circ@temp{below}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \pgf@circ@res@step=1.2\pgf@circ@res@up
+ \fi
+ \fi
+ %draw connections to circle
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ %draw circle
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgfusepath{draw}
+ \endpgfscope
+ %draw arrow
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%AMPEREMETER
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ammeter/height}}{ammeter}{\ctikzvalof{bipoles/ammeter/height}}{\ctikzvalof{bipoles/ammeter/width}}{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\textbf{A}}{}{}
+}
+%OHMMETER
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ohmmeter/height}}{ohmmeter}{\ctikzvalof{bipoles/ohmmeter/height}}{\ctikzvalof{bipoles/ohmmeter/width}}{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
+}
+%VOLTMETER
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/voltmeter/height}}{voltmeter}{\ctikzvalof{bipoles/voltmeter/height}}{\ctikzvalof{bipoles/voltmeter/width}}{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\textbf{V}}{}{}
+
+}
+
+%% Short circuit
+
+\pgfcircdeclarebipole{}{0}{short}{0}{0}{ }
+
+%% Open circuit
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/open/height}}{open}{\ctikzvalof{bipoles/open/height}}{\ctikzvalof{bipoles/open/width}}{
+
+}
+
+%% Generic bipole - used as resistor by some (bleah)
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/generic/height}}{generic}{\ctikzvalof{bipoles/generic/height}}{\ctikzvalof{bipoles/generic/width}}{
+
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+}
+
+
+%% fuse
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fuse/height}}{fuse}{\ctikzvalof{bipoles/fuse/height}}{\ctikzvalof{bipoles/fuse/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+}
+
+
+
+%% Generic bipole, filled - used as inductor by some (bleah)
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fullgeneric/height}}{fullgeneric}{\ctikzvalof{bipoles/fullgeneric/height}}{\ctikzvalof{bipoles/fullgeneric/width}}{
+
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw,fill}
+}
+
+
+%% Generic asymmetric bipole
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ageneric/height}}{ageneric}{\ctikzvalof{bipoles/ageneric/height}}{\ctikzvalof{bipoles/ageneric/width}}{
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+%% asymmetric fuse
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/afuse/height}}{afuse}{\ctikzvalof{bipoles/afuse/height}}{\ctikzvalof{bipoles/afuse/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+
+
+%% Memristor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/memristor/height}}{memristor}{\ctikzvalof{bipoles/memristor/height}}{\ctikzvalof{bipoles/memristor/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+
+
+%% Generic empty tunable
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tgeneric/height}}{tgeneric}{\ctikzvalof{bipoles/tgeneric/height}}{\ctikzvalof{bipoles/tgeneric/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Photoresistor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/photoresistor/height 2}}{photoresistor}{\ctikzvalof{bipoles/photoresistor/height}}{\ctikzvalof{bipoles/photoresistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+%% Thermistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistor/height}}{thermistor}{\ctikzvalof{bipoles/thermistor/height}}{\ctikzvalof{bipoles/thermistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ %\pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ %\endpgfscope
+}
+
+
+%% Thermistor PTC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorptc/height 2}}{thermistorptc}{\ctikzvalof{bipoles/thermistorptc/height}}{\ctikzvalof{bipoles/thermistorptc/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Thermistor NTC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorntc/height 2}}{thermistorntc}{\ctikzvalof{bipoles/thermistorntc/height}}{\ctikzvalof{bipoles/thermistorntc/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% thermocouple
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermocouple/height 2}}{thermocouple}{\ctikzvalof{bipoles/thermocouple/height}}{\ctikzvalof{bipoles/thermocouple/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+}
+
+%% Varistor
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varistor/height}}{varistor}{\ctikzvalof{bipoles/varistor/height}}{\ctikzvalof{bipoles/varistor/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\tiny\textsf{U}}}
+}
+
+
+
+%% Generic full tunable
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tfullgeneric/height}}{tfullgeneric}{\ctikzvalof{bipoles/tfullgeneric/height}}{\ctikzvalof{bipoles/tfullgeneric/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw,fill}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+
+
+
+%% Variable Capacitor
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcapacitor/height}}{vcapacitor}{\ctikzvalof{bipoles/vcapacitor/height}}{\ctikzvalof{bipoles/vcapacitor/width}}{
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/width}\pgf@circ@Rlen
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfusepath{draw}
+}
+
+
+%% Piezoelectric Element
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piezoelectric/height}}{piezoelectric}{\ctikzvalof{bipoles/piezoelectric/height}}{\ctikzvalof{bipoles/piezoelectric/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ %% Outer markings
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %% Inner Box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left+4}{\pgf@circ@res@up-1}}{\pgfpoint{\pgf@circ@res@right-4}{\pgf@circ@res@down+1}}
+ \pgfusepath{draw}
+
+}
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Handling of terminals
+
+
+%% Easily usable styles
+
+\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=diamond}}
+
+\ctikzset{.-/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{.-*/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=full}}
+\ctikzset{.-o/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=empty}}
+\ctikzset{.-d/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=diamond}}
+\ctikzset{-./.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{o-./.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{*-./.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{d-./.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{.-./.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+
+\tikzset{reversed/.style = {\circuitikzbasekey/bipole/inverted=true}}
+
+
+%% The output routine
+
+\def\drawpoles{
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{diamond} }
+ \ifx\pgf@temp\pgf@circ@temp
+ (\tikztostart) node[diamondpole] {}
+ \else
+ \pgfextra{ \def\pgf@temp{empty} }
+ \ifx\pgf@temp\pgf@circ@temp
+ (\tikztostart) node[ocirc] {}
+ \else
+ \pgfextra{ \def\pgf@temp{full} }
+ \ifx\pgf@temp\pgf@circ@temp
+ (\tikztostart) node[circ] {}
+ \else
+ \pgfextra{ \def\pgf@temp{rectjoinfill} }
+ \ifx\pgf@temp\pgf@circ@temp
+ (\tikztostart) node[rectjoinfill] {}
+ \else
+ \fi
+ \fi
+ \fi
+ \fi
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} \def\pgf@temp{diamond} }
+ \ifx\pgf@temp\pgf@circ@temp
+ (\tikztotarget) node[diamondpole] {}
+ \else
+ \pgfextra{ \def\pgf@temp{empty} }
+ \ifx\pgf@temp\pgf@circ@temp
+ (\tikztotarget) node[ocirc] {}
+ \else
+ \pgfextra{ \def\pgf@temp{full} }
+ \ifx\pgf@temp\pgf@circ@temp
+ (\tikztotarget) node[circ] {}
+ \else
+ \pgfextra{ \def\pgf@temp{rectjoinfill} }
+ \ifx\pgf@temp\pgf@circ@temp
+ (\tikztotarget) node[rectjoinfill] {}
+ \else
+ \fi
+ \fi
+ \fi
+ \fi
+}
+
+
+
+%% Lamp
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lamp/height}}{lamp}{\ctikzvalof{bipoles/lamp/height}}{\ctikzvalof{bipoles/lamp/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tline/height}
+ }{tline}{\ctikzvalof{bipoles/tline/height}
+ }{\ctikzvalof{bipoles/tline/width}
+ }
+ {
+ \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0}}
+ {\pgfpoint{\pgf@circ@res@step}{0}}
+ {\pgfpoint{0}{-\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% SQUID added by Cor Molenaar 5 March 2010
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/squid/height}}{squid}{\ctikzvalof{bipoles/squid/height}}{\ctikzvalof{bipoles/squid/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+
+
+% Generic barrier added by Cor Molenaar 5 March 2010
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/barrier/height}}{barrier}{\ctikzvalof{bipoles/barrier/height}}{\ctikzvalof{bipoles/barrier/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
+
+ \pgfusepath{draw}
+}
+
+
+% Contributed by Danilo Piazzalunga
+
+\pgfdeclareshape{buffer}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ }
+ }
+
+
+
+
+
+\pgfdeclareshape{plain amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+
+
+ }
+ }
+
+%% Generic two port box
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/twoport/height}}{twoport}{\ctikzvalof{bipoles/twoport/height}}{\ctikzvalof{bipoles/twoport/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+}
+
+%% voltage controled oscillator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vco/width}}{vco}{\ctikzvalof{bipoles/twoport/width}}{\ctikzvalof{bipoles/vco/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw circle
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+}
+
+%% bandpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bandpass/width}}{bandpass}{\ctikzvalof{bipoles/bandpass/width}}{\ctikzvalof{bipoles/bandpass/width}}{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% bandstop filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bandstop/width}}{bandstop}{\ctikzvalof{bipoles/bandstop/width}}{\ctikzvalof{bipoles/bandstop/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bandstop/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225% 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt}% always draw solid line for inner symbol
+ \pgfsetarrows{-}%never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% highpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/highpass/width}}{highpass}{\ctikzvalof{bipoles/highpass/width}}{\ctikzvalof{bipoles/highpass/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% lowpass filter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lowpass/width}}{lowpass}{\ctikzvalof{bipoles/lowpass/width}}{\ctikzvalof{bipoles/lowpass/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% ADC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/adc/width}}{adc}{\ctikzvalof{bipoles/adc/width}}{\ctikzvalof{bipoles/adc/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{A}
+ \def\textii{D}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{A}
+ \def\textii{D}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DAC
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dac/width}}{dac}{\ctikzvalof{bipoles/dac/width}}{\ctikzvalof{bipoles/dac/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{D}
+ \def\textii{A}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{D}
+ \def\textii{A}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DSP
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dsp/width}}{dsp}{\ctikzvalof{bipoles/dsp/width}}{\ctikzvalof{bipoles/dsp/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{DSP}}
+}
+
+%% FFT
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fft/width}}{fft}{\ctikzvalof{bipoles/fft/width}}{\ctikzvalof{bipoles/fft/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{FFT}}
+}
+
+%% Amplifier
+\pgfcircdeclarebipole{}{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{amp}{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgfusepath{draw}
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+}
+
+
+%% variable amplifier
+\pgfcircdeclarebipole{}{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{vamp}{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+ }{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgfusepath{draw}
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+ % draw arrow
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% pi attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piattenuator/width}}{piattenuator}{\ctikzvalof{bipoles/piattenuator/width}}{\ctikzvalof{bipoles/piattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable pi attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vpiattenuator/width}}{vpiattenuator}{\ctikzvalof{bipoles/vpiattenuator/width}}{\ctikzvalof{bipoles/vpiattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% T attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tattenuator/width}}{tattenuator}{\ctikzvalof{bipoles/tattenuator/width}}{\ctikzvalof{bipoles/tattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable T attenuator
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vtattenuator/width}}{vtattenuator}{\ctikzvalof{bipoles/vtattenuator/width}}{\ctikzvalof{bipoles/vtattenuator/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% phase shifter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{phaseshifter}{\ctikzvalof{bipoles/phaseshifter/width}}{\ctikzvalof{bipoles/phaseshifter/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+}
+
+%% variable phase shifter
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{vphaseshifter}{\ctikzvalof{bipoles/vphaseshifter/width}}{\ctikzvalof{bipoles/vphaseshifter/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% detector
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/detector/width}}{detector}{\ctikzvalof{bipoles/detector/width}}{\ctikzvalof{bipoles/detector/width}}{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{0.8\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@fulldiode
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
+ \fi
+
+}
+
+
+
+
+%% european gas filled surge arrester
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{european gas filled surge arrester}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{\ctikzvalof{bipoles/european gas filled surge arrester/width}}{
+
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+}
+
+
+
+
+%% american gas filled surge arrester
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{american gas filled surge arrester}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
+ %\def\pgf@circ@temp{right}
+ %\ifx\tikz@res@label@pos\pgf@circ@temp
+ % \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ %\else
+% \def\pgf@circ@temp{below}
+% \ifx\tikz@res@label@pos\pgf@circ@temp
+% \pgf@circ@res@step=-1.2\pgf@circ@res@up
+% \else
+% \pgf@circ@res@step=1.2\pgf@circ@res@up
+% \fi
+% \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfnode{circle}{center}{}{}{}
+
+ \pgfscope
+ \pgfsetarrowsend{latex}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope{}
+
+ %\pgftransformshift{\pgfpoint{.25\pgf@circ@res@left}{.45\pgf@circ@res@down}}
+ %\pgfnode{circ}{center}{}{}{}
+ %\pgftransformshift{}
+ \pgfcircle{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
+ \pgfusepath{fill}
+}
+
+% % MECHANICAL SYMBOLS
+
+%% mechanical capacitance - stiffness/spring
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spring/height}}{spring}{\ctikzvalof{bipoles/spring/height}}{\ctikzvalof{bipoles/spring/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical inductance - mass
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/mass/box height}}{mass}{\ctikzvalof{bipoles/mass/height}}{\ctikzvalof{bipoles/mass/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
+
+\pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical resistor - damper
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/damper/height}}{damper}{\ctikzvalof{bipoles/damper/height}}{\ctikzvalof{bipoles/damper/width}}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {\pgf@circ@res@zero}}
+ \pgfusepath{stroke}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{stroke}
+
+}
+
+
+%%%---------- close: tex/pgfcircbipoles
+%%%%%%%%%%% Springe nach tex/pgfcirctripoles
+%%%---------- open: tex/pgfcirctripoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Tripoles
+
+
+
+\pgfdeclareshape{spdt}
+ {
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out 1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{out 2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/margin}\pgf@circ@res@left
+
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
+ {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
+ }
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Logic ports
+%%
+
+
+
+
+
+
+\long\def\pgfcircdeclarelogicport#1#2{
+ \pgfdeclareshape{american #1 port}
+ {
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in 1}{
+ \inOne
+ }
+ \anchor{in}{
+ \inOne
+ }
+ \anchor{in 2}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ #2
+
+ }
+ }
+}
+
+
+\pgfcircdeclarelogicport{and}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@down}}
+ \pgfpathcurveto
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {.5\pgf@circ@res@down}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {0pt}}
+ \pgfpathcurveto
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {.5\pgf@circ@res@up}}
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+
+\pgfcircdeclarelogicport{nand}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathcurveto
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarelogicport{nor}{
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+}
+
+
+
+
+\pgfcircdeclarelogicport{or}{
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclarelogicport{xor}{
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/distance}\pgf@circ@res@right+}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+
+
+\pgfcircdeclarelogicport{xnor}{
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/circle width}\pgf@circ@res@right
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/distance}\pgf@circ@res@right+}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
+
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
+ \pgfpathcurveto
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
+
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+}
+
+
+\pgfdeclareshape{american not port}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ }
+ }
+
+\pgfdeclareshape{invschmitt}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgfusepath{draw}
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ %draw inner shape
+
+ \pgfsetlinewidth{2\pgflinewidth}
+
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ }
+ }
+
+\pgfdeclareshape{schmitt}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ %draw inner shape
+
+ \pgfsetlinewidth{2\pgflinewidth}
+
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ }
+ }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% #1 - name
+% #2 - text inside
+% #3 - number of inputs
+% #4 - is it a not
+
+\long\def\pgfcircdeclareeurologicport#1#2#3#4{
+ \pgfdeclareshape{european #1 port}
+ {
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \inOne
+ }
+ \anchor{in 1}{
+ \inOne
+ }
+ \anchor{in 2}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \def\pgf@temp{1}
+ \def\pgf@circ@temp{#3}
+ \ifx\pgftemp\pgf@circ@temp % one input
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}
+ \else % two inputs
+ \pgfpathmoveto{
+ \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathmoveto{
+ \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
+ \fi%
+ %
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
+ %
+ \edef\pgf@temp{not}
+ \edef\pgf@circ@temp{#4}
+ \ifx\pgf@temp\pgf@circ@temp % is a not
+ \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not height}\pgf@circ@res@up}}
+ \fi
+ %
+ \pgfusepath{draw}
+ %
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgftext{#2}
+ %
+ %
+ %
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+%
+%
+ }
+ }
+}
+
+
+
+\pgfcircdeclareeurologicport{and}{$\&$}{2}{}
+\pgfcircdeclareeurologicport{or}{$\ge 1$}{2}{}
+\pgfcircdeclareeurologicport{xor}{$=1$}{2}{}
+\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
+\pgfcircdeclareeurologicport{nand}{$\&$}{2}{not}
+\pgfcircdeclareeurologicport{nor}{$\ge 1$}{2}{not}
+\pgfcircdeclareeurologicport{xnor}{$=1$}{2}{not}
+
+\long\def\pgfcircdeclaretransistor#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northeast{% upper right
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%center left
+ \pgf@y=0pt
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/width}\pgf@circ@Rlen
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@y=.7\pgf@y
+ \pgf@x= \pgf@circ@Rlen
+ \pgf@x=0.1\pgf@x
+ }
+ \anchor{pathstart}{ % south
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{pathend}{
+ \northeast
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \northeast
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ }
+ \anchor{north east}{
+ \northeast
+ }
+ \anchor{north west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{south east}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{base}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{G}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{gate}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{nobase}{
+ \left
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@x
+ }
+ \anchor{nogate}{
+ \left
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@x
+ }
+ \anchor{E}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{emitter}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{C}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{collector}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{D}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{drain}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ #2
+ \backgroundpath{
+ \pgftransformationadjustments
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ %
+ \ifnum \pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction} > 0
+ \pgf@circuit@trans@ntypetrue
+ \else
+ \pgf@circuit@trans@ntypefalse
+ \fi
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \left
+ \pgf@circ@res@left = \pgf@x
+ %
+ #3
+ % BODY DIODE
+ \ifpgf@circuit@fet@bodydiode
+ \drawbodydiode{#1}
+ \fi
+ %
+ }
+ }
+}
+
+\long\def\drawbodydiode#1{
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgftransformrotate{90}
+ \pgftransformscale{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode scale}}
+ \ifpgf@circuit@fulldiode
+ \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \else
+ \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \fi
+ \endpgfscope
+ %Draw upper connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope{}
+ %Draw lower connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+}
+
+\long\def\declarebpt#1{
+ \pgfcircdeclaretransistor{#1}{}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transiytor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@ntype
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{.5}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \ifpgf@circuit@bpt@drawphoto
+ \pgfscope
+ \pgfsetarrowsstart{latex'}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \else
+ \ifpgf@circuit@bpt@drawbase
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+ \fi
+ }
+}
+
+\declarebpt{npn}
+\declarebpt{pnp}
+
+\long\def\declareigbt#1{
+\pgfcircdeclaretransistor{#1}{}
+{
+ %draw upper connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ %draw thicker gate lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %draw lower connection
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transiytor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@ntype
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{.5}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ %draw gate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
+ \fi
+ \pgfusepath{draw}
+}
+}
+
+\declareigbt{pigbt}
+\declareigbt{nigbt}
+\declareigbt{Lnigbt}
+\declareigbt{Lpigbt}
+
+
+\pgfcircdeclaretransistor{nmos}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+}
+
+
+\pgfcircdeclaretransistor{pmos}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.4}{%
+ \pgfpoint%
+ {\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+
+
+ \pgfusepath{draw}
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+ \pgfpathcircle{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left - \pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
+ \ifpgf@circuit@pmos@emptycircle
+ \pgfsetfillcolor{white}
+ \fi
+ \pgfusepath{draw,fill}
+}
+
+\long\def\drawfetcore#1{
+ \pgftransformationadjustments
+ %top connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
+ \ifpgf@circuit@trans@depletiontype
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \else
+
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.45}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.25}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down*0.25}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \fi
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %Bulk connection line
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ %bottom connection
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ %draw thick gate line
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \ifpgf@circuit@trans@ntype
+ \else
+ \pgftransformrotate{180}
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ % GATE CONNECTION
+ \ifpgf@circuit@bpt@drawgate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+ \fi
+
+}
+
+\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
+{\pgfcircdeclaretransistor{#1}{
+ \anchor{bulk}{\left\pgf@x=0pt}
+ \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
+ #2
+ }
+ {#3}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nfet}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pfet}
+}
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfete}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+
+
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
+\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfetebulk}
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+
+
+% N-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{nigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfete}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
+\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfetebulk}
+}
+
+
+% P-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{pigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+\pgfcircdeclaretransistor{njfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclaretransistor{pjfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.4}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{isfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ % DRAIN CONNECTION
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ % DRAIN
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % GATE, DEPLETION TYPE
+ \pgfscope %% added
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth} %% added
+ \pgfusepath{draw} %% added
+ \endpgfscope %% added
+
+ % BULK
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ % SOURCE
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ % GATE
+ %\pgfscope
+ %\pgfpathmoveto{\pgfpoint
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ %\pgfpathlineto{\pgfpoint
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
+ % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ %\pgfsetlinewidth{2\pgflinewidth}
+ %\pgfusepath{draw}
+ %\endpgfscope
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+ % ARROW
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfusepath{draw}
+
+ % Wavy lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+
+%% Black thyristor
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/thyristor/height 2}}{fullthyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty thyristor
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/thyristor/height 2}}{emptythyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty triac
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/triac/height}}{emptytriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty triac
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf@y=0cm
+ }
+}{\ctikzvalof{tripoles/triac/height}}{fulltriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+
+
+
+
+
+
+\pgfcircdeclarebipole{
+ \anchor{out 1}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{out 2}{
+ \northeast
+ \pgf@y=.8\pgf@y
+ }
+}{\ctikzvalof{tripoles/toggleswitch/height 2}}{toggleswitch}{\ctikzvalof{tripoles/toggleswitch/height}}{\ctikzvalof{tripoles/toggleswitch/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetdash{}{0cm}
+}
+
+
+
+
+
+
+
+
+
+
+\pgfdeclareshape{op amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgfusepath{draw}
+ \endpgfscope
+
+
+
+ }
+ }
+
+%op amp shape as in european standard en 60617
+\pgfdeclareshape{en amp}
+{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {
+ \left
+ \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf@x
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{up}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{down}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/font} $-$}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/font} $+$}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgftext[base,y=-3ex,at=\pgfpoint{.3\pgf@circ@res@left}{\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/font2} $\triangleright$}
+ \pgftext[base,y=-3ex,at=\pgfpoint{.3\pgf@circ@res@right}{\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/font2} $\infty$}
+ }
+}
+
+%%Transkonduktanzverstรคrker
+\pgfdeclareshape{gm amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{0pt}} %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ %Umrandung:
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}} %geรคndert startpunkt neu am ausgangsstrich
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}%vom Ausgang nach oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}%ecke links unten nach rechts unten
+ \pgfpathclose
+ \pgfusepath{draw}
+ \endpgfscope
+
+ }
+ }
+
+
+
+%% Potentiometer
+\pgfcircdeclarebipole{
+ \anchor{wiper}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+ \anchor{W}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+}{\ctikzvalof{bipoles/potentiometer/height 2}}{potentiometer}{\ctikzvalof{bipoles/potentiometer/height}}{\ctikzvalof{bipoles/potentiometer/width}}{
+\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+\pgftransformationadjustments
+\pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+\divide \pgf@circ@res@step by 12
+
+\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+
+\pgf@circ@res@other = \pgf@circ@res@left
+\advance\pgf@circ@res@other by \pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by 2\pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+\advance\pgf@circ@res@other by \pgf@circ@res@step
+\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+\pgfsetbeveljoin
+\pgfusepath{draw}
+
+\pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+\endpgfscope
+}
+
+
+
+
+
+%% Generic tunable
+
+\pgfcircdeclarebipole{
+ \anchor{wiper}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+}{\ctikzvalof{bipoles/generic potentiometer/height 2}}{genericpotentiometer}{\ctikzvalof{bipoles/generic potentiometer/height}}{\ctikzvalof{bipoles/generic potentiometer/width}}{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex'}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+\pgfdeclareshape{mixer}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{adder}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{oscillator}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \else
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@circ@Rlen
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{text}{
+ \pgf@x=-2\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@Rlen{}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
+
+ % draw outer box
+ \ifpgf@circuit@boxed{}
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{circulator}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed{}
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfusepath{draw}
+
+ % inner arrow
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
+ \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+
+% Wilkinson divider
+\pgfdeclareshape{wilkinson}{
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{out2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ % draw inner resisitor - european or american style is recognised
+ {
+ \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgftransformrotate{90}
+
+ % calculate size of resistor
+ \ifpgf@circuit@europeanresistor
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{genericshape}{center}{}{pgf@generic}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{resistorshape}{center}{}{pgf@resistor}{\pgfusepath{fill}}
+ \fi
+ }
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+
+% electromechanical device (motor/generator)
+\pgfdeclareshape{elmech}
+{
+ \savedanchor\northwest{
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@Rlen
+ \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ % draw outer box
+ % \ifpgf@circuit@boxed
+ % \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ % \fi
+ % draw outer circle
+ %\ifpgf@circuit@boxed
+ % \pgf@circ@res@step=.7\pgf@circ@res@step
+ % \pgfsetdash{}{0pt} % draw solid circle if boxed
+ %\else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ %\fi
+ \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{black}
+ \pgfusepath{draw,fill}
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{magnetron}
+{
+ \savedanchor\northwest{
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{anode}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{cathode1}{
+ \northwest
+ \pgf@circ@res@step=\pgf@y
+ \pgfmathparse{cos(105)}
+ \pgf@x=\pgfmathresult\pgf@circ@res@step
+ \pgfmathparse{sin(105)}
+ \pgf@y=\pgfmathresult\pgf@circ@res@step
+ %\pgfpointorigin
+ %\pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
+ }
+ \anchor{cathode2}{
+ \northwest
+ \pgf@circ@res@step=\pgf@y
+ \pgfmathparse{cos(75)}
+ \pgf@x=\pgfmathresult\pgf@circ@res@step
+ \pgfmathparse{sin(75)}
+ \pgf@y=\pgfmathresult\pgf@circ@res@step
+ %\pgfpointorigin
+ %\pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgf@circ@res@step=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@Rlen
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfmathsetlength{\pgf@circ@res@other}{sin(15)*\pgf@circ@res@up}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ % draw outer box
+ % \ifpgf@circuit@boxed
+ % \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ % \fi
+ % draw outer circle
+ %\ifpgf@circuit@boxed
+ % \pgf@circ@res@step=.7\pgf@circ@res@step
+ % \pgfsetdash{}{0pt} % draw solid circle if boxed
+ %\else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ %\fi
+ %create outer circle
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@right}
+ \pgfsetfillcolor{white}
+ \pgfusepath{draw}
+ %create chambers
+ \foreach \angle in {45,135,225,315}{
+ \pgfpathmoveto{ \pgfpointpolar{\angle}{0.6\pgf@circ@res@right}}
+ \pgfpathlineto{ \pgfpointpolar{\angle}{\pgf@circ@res@right}}
+ }
+ \pgfsetroundcap
+ \pgfusepath{draw}
+ \pgfscope
+ %draw connection from outside
+ %anode
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ %cathodes
+ \pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ %create cathode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.15\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ %create anode
+ \pgfpathmoveto{\pgfpoint{0.3\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+%%%---------- close: tex/pgfcirctripoles
+%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
+%%%---------- open: tex/pgfcircquadpoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Quadripoles
+
+\long\def\pgfcircdeclarequadpole#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=.5\pgf@circ@Rlen
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
+ }
+ \anchor{A2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{A1}{
+ \northwest
+ }
+ \anchor{B2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{base}{
+ \northwest
+ \pgf@x=0pt
+ }
+ #3
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ #2
+
+ }
+ }
+}
+
+
+
+\def\pgf@circ@drawtransformerbasicanchor{
+ \pgfkeysvalueof{/tikz/circuitikz/quadpoles/trans/height}
+ \anchor{AA2}{
+ \northwest
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{AA1}{
+ \northwest
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+}
+
+\def\pgf@circ@drawtransformerbasicbody{
+ \def\stretto{.4}
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@down}%
+ }
+
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+
+ \endpgfscope
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@up}%
+ }
+
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@inductor1}{b}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf@inductor1}{a}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@inductor2}{a}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf@inductor2}{b}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+}
+
+
+
+ % contrib Kristofer M. Monisit
+
+ \pgfdeclareshape{fd op amp}
+ {
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out +}{
+ \northwest
+ \pgf@y=.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{out -}{
+ \northwest
+ \pgf@y=-.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+
+ % Negative output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
+
+
+ % Positive output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
+
+ \pgfsetrectcap
+ % Draw them all!
+ \pgfusepath{draw}
+
+ % Triangle
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathclose
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+
+
+
+
+\pgfcircdeclarequadpole{transformer}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+}{\pgf@circ@drawtransformerbasicanchor}
+
+\pgfcircdeclarequadpole{transformer core}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+}{\pgf@circ@drawtransformerbasicanchor}
+
+
+\pgfcircdeclarequadpole{gyrator}{
+
+ \def\stretto{.4}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{.7*\stretto\pgf@circ@res@down}}
+ \pgfpatharc{90}{270}{.7*\stretto\pgf@circ@res@down}
+
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{.7*\stretto\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{.7*\stretto\pgf@circ@res@down}
+ \pgfusepath{draw}
+
+}{}
+
+%% four-port
+% defines a general outer box for four-ports
+% TikZ usage:
+% \draw (0,0) node[coupler](coup){\SI{-3}{dB}}
+% (coup.port1) to[short,-o] ++(-1,0)
+%
+
+\long\def\pgfcircdeclarefourport#1#2{
+ \pgfdeclareshape{#1}{
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=.5\pgf@circ@Rlen
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{port1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{port4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ #2
+
+ % draw inner text
+ \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+ }
+ }
+}
+
+% four-port
+\pgfcircdeclarefourport{fourport}{}
+
+
+% straight coupler
+\pgfcircdeclarefourport{coupler}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+}
+
+% "bended" coupler
+\pgfcircdeclarefourport{coupler2}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+
+
+}
+%%%---------- close: tex/pgfcircquadpoles
+
+%%%%%%%%%%% Springe nach tex/pgfcirclabel
+%%%---------- open: tex/pgfcirclabel.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Bipole label positioning
+
+%% Options
+\ctikzset{label/.style = { l=#1 } }
+\ctikzset{l/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
+ \ctikzsetvalof{bipole/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+
+\ctikzset{label above/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{l^/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{label below/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+\ctikzset{l_/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+\ctikzset{annotation/.style = { a=#1 } }
+\ctikzset{a/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/annotation/name=#1}
+ \ctikzsetvalof{bipole/annotation/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ }}
+
+\ctikzset{annotation above/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+
+\ctikzset{a^/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+
+\ctikzset{annotation below/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+\ctikzset{a_/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+
+
+
+\def\pgf@circ@drawlabels#1{
+ \pgfextra{
+ \pgfmathsubtract{\pgf@circ@direction}{90}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/position}}
+ \ifnum \pgf@circ@temp < 0
+ \pgfmathadd{\pgf@circ@labanc}{180}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ \ifpgf@circuit@bipole@inverted
+ \pgfmathadd{\pgf@circ@temp}{180} %If shape is inverted, use opposite anchor
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+
+ \ifnum \ctikzvalof{mirror value} = -1
+ \pgfmathadd{\pgf@circ@temp}{180} %If shape is mirrored, use opposite anchor
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ }
+ %Firstly, place a coodinate directly at the edge of the shape
+ (\ctikzvalof{bipole/name}.\pgf@circ@temp) coordinate (labelcoor)
+ %now decide, which labels should be drawn
+ \pgfextra{
+ \edef\pgf@temp{\ctikzvalof{label/align}}
+ \def\pgf@circ@temp{straight}
+ }
+ \ifx\pgf@temp\pgf@circ@temp %straight
+ \pgf@circ@drawreglabels{#1}
+ \else
+ \pgfextra{\def\pgf@circ@temp{rotate}}
+ \ifx\pgf@temp\pgf@circ@temp %rotate
+ \pgf@circ@drawrotlabels{#1}
+ \else% smart
+ \pgf@circ@drawsmartlabels{#1}
+ \fi
+ \fi
+}
+
+
+\def\pgf@circ@drawsmartlabels#1{
+ \pgfextra{
+ \pgfmathmod{\pgf@circ@direction}{90}
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ \ifnum \pgfcircmathresult > 20
+ \ifnum \pgfcircmathresult < 70
+ \pgf@circ@drawrotlabels{#1}
+ \else
+ \pgf@circ@drawreglabels{#1}
+ \fi
+ \else
+ \pgf@circ@drawreglabels{#1}
+ \fi
+}
+
+
+\def\pgf@circ@drawrotlabels#1{
+ \pgfextra{
+ \ifnum \ctikzvalof{bipole/#1/position}>0
+ %we need some more space for placement below, due to mid-anchor
+ \def\pgf@circ@labposdistance{1.5ex}
+ \else
+ \def\pgf@circ@labposdistance{2ex}
+ \fi
+ %Calculate rotation of the label from direction and strip decimals
+ \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ % rotate the label at second or third quadrant:
+ \ifnum \pgfcirclabrot > 90 \ifnum \pgfcirclabrot < 270
+ \pgfmathsubtract{\pgf@circ@direction}{180}
+ \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ %invert the space relationships due to rotatet strings
+ \ifnum \ctikzvalof{bipole/#1/position}>0
+ \def\pgf@circ@labposdistance{2ex}
+ \else
+ \def\pgf@circ@labposdistance{1.5ex}
+ \fi
+ \fi\fi
+ \pgfmathparse{\ctikzvalof{bipole/#1/position}>0?\pgf@circ@direction+90:\pgf@circ@direction-90}
+ \edef\pgf@circ@labposangle{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ (labelcoor)++(\pgf@circ@labposangle:\pgf@circ@labposdistance) coordinate(labelcoor)
+ node[anchor=mid,rotate=\pgfcirclabrot](\ctikzvalof{bipole/name}#1){\pgf@circ@finallabels{#1}}
+}
+
+\def\pgf@circ@drawreglabels#1{
+
+ %Now calculate all shape positions
+ %Use mid-anchor at x-axis and base-anchor at y-axis, respectively.
+ %All points between will be addressed by angled-anchors:
+ \pgfextra{
+ \pgfmathadd{\pgf@circ@labanc}{90}
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \pgfmathparse{mod(\pgf@circ@temp,180)>135?mod(\pgf@circ@temp,180)-180:mod(\pgf@circ@temp,180)}
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ %Values between -5 and 5 are at pos /neg x-axis, values around 90 are at both y-axis
+ \ifnum \pgfcircmathresult > 84 \ifnum \pgfcircmathresult< 96
+ \pgfextra{\edef\pgf@circ@labpos{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}}
+ \ifnum \pgf@circ@labpos > 180
+ \ifnum \ctikzvalof{bipole/#1/position} > 0
+ \pgfextra{\def\pgf@circ@labanc{mid west}}
+ \else
+ \pgfextra{\def\pgf@circ@labanc{mid east}}
+ \fi
+ \else
+ \ifnum \ctikzvalof{bipole/#1/position} > 0
+ \pgfextra{\def\pgf@circ@labanc{mid east}}
+ \else
+ \pgfextra{\def\pgf@circ@labanc{mid west}}
+ \fi
+ \fi
+ \fi\fi
+ \ifnum \pgfcircmathresult <6
+ \ifnum \ctikzvalof{bipole/#1/position} < 0
+ %we need some more space for placement below, due to mid-anchor
+ (labelcoor)++(-\pgf@circ@labanc:2ex) coordinate(labelcoor)
+ \else
+ (labelcoor)++(-\pgf@circ@labanc:1.5ex) coordinate(labelcoor)
+ \fi
+ \pgfextra{\def\pgf@circ@labanc{mid}}
+ \fi
+ (labelcoor) node[anchor=\pgf@circ@labanc](\ctikzvalof{bipole/name}#1){\pgf@circ@finallabels{#1}}
+}
+
+\def\pgf@circ@finallabels#1{%
+ \edef\pgf@temp{}%
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/unit}}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \ctikzvalof{bipole/#1/name}%
+ \else%
+ $\SI{\ctikzvalof{bipole/#1/name}}{\ctikzvalof{bipole/#1/unit}}$%
+ \fi%
+}
+
+\ctikzset{text/.style = { t=#1 } }
+\ctikzset{t/.code = {
+ \ctikzsetvalof{bipoles/twoport/text}{#1}
+}}
+%%%---------- close: tex/pgfcirclabel
+%%%%%%%%%%% Springe nach tex/pgfcircvoltage
+%%%---------- open: tex/pgfcircvoltage.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Voltage management
+
+
+\ctikzset{v^>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v^</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v_>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
+\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
+\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
+\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
+
+% Default position varies whether the component is a voltage source
+% or not
+\ctikzset{v/.code = {
+ \ifpgf@circuit@bipole@isvoltage
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \fi
+ \fi
+ \ifpgf@circ@oldvoltagedirection\else
+ \ifpgf@circuit@bipole@iscurrent
+ \ifpgf@circuit@bipole@current@backward
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \fi\fi\fi
+ \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
+ \ctikzsetvalof{bipole/voltage/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ }
+}
+
+
+
+
+%% Output routine for generic bipoles
+
+\def\pgf@circ@drawvoltagegeneric{
+ \pgfextra{
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/straight label distance}
+ \pgfkeysifdefined{\pgf@temp}
+ {
+ \edef\partheight{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/straight label distance}}
+ \edef\tmpdistfromline{(\partheight\pgf@circ@Rlen)}
+ }
+ {
+ \pgfkeysifdefined{/tikz/circuitikz/bipoles/voltage/straight label distance}
+ {
+ \edef\partheight{\ctikzvalof{bipoles/voltage/straight label distance}}
+ \edef\tmpdistfromline{(\partheight\pgf@circ@Rlen)}
+ }
+ {%calculate default value from part height
+ \edef\partheight{0.5*\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/height}}
+ \edef\tmpdistfromline{(\partheight\pgf@circ@Rlen+0.2\pgf@circ@Rlen)}
+ }
+ }
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{\tmpdistfromline}
+ \else
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{-\tmpdistfromline}
+ \else
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
+ \fi
+ \fi
+ \else
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{-\tmpdistfromline}
+ \else
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{\tmpdistfromline}
+ \else
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
+ \fi
+ \fi
+ \fi
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@voltage@angle{90}
+ \else
+ \def\pgf@circ@voltage@angle{-90}
+ \fi
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\distacefromnode{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}} }
+ { \edef\distacefromnode{\ctikzvalof{voltage/distance from node}} }
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\bumpb{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}} }
+ { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
+ }
+ % %\pgf@circ@Rlen/16 is equal to the length of the currarrow
+ coordinate (pgfcirc@midtmp) at ($(\tikztostart) ! \pgf@circ@Rlen/16 ! (anchorstartnode)$) %absolute move, minimum space is length of arrowhead
+ coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distacefromnode ! (anchorstartnode)$)
+
+ coordinate (pgfcirc@Vfrom) at ($(pgfcirc@midtmp) ! -\distfromline ! \pgf@circ@voltage@angle:(anchorstartnode)$)
+ coordinate (pgfcirc@midtmp) at ($(\tikztotarget) ! \pgf@circ@Rlen/16 ! (anchorendnode)$)%absolute move, minimum space is length of arrowhead
+ coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distacefromnode ! (anchorendnode)$)
+
+ coordinate (pgfcirc@Vto) at ($(pgfcirc@midtmp) ! \distfromline ! \pgf@circ@voltage@angle : (anchorendnode)$)
+
+ \ifpgf@circuit@bipole@voltage@below
+ coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
+ coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
+ \else
+ coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
+ coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
+ \fi
+
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@straight
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) --(pgfcirc@Vfrom) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
+ \else
+ (pgfcirc@Vfrom) --(pgfcirc@Vto) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
+ node[currarrow, sloped, allow upside down, pos=1] {}
+ (pgfcirc@Vfrom)
+ \else
+ (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
+ node[currarrow, sloped, allow upside down, pos=1] {}
+ (pgfcirc@Vto)
+ \fi
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
+ \else
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
+ \fi
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
+ \else
+ (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
+ (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
+ \fi
+ \fi
+ \fi
+}
+
+%% Output routine for voltage sources
+\def\pgf@circ@drawvoltagegenerator{
+ \ifpgf@circuit@bipole@voltage@below
+ coordinate (pgfcirc@Vfrom) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-120)$)
+ coordinate (pgfcirc@Vto) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-60)$)
+ \else
+ coordinate (pgfcirc@Vfrom) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.120)$)
+ coordinate (pgfcirc@Vto) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.60)$)
+ \fi
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vfrom)
+ \else
+ (pgfcirc@Vfrom) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vto)
+ \fi
+ \else% american voltage
+ \ifpgf@circuit@bipole@voltageoutsideofsymbol
+ % if it is a battery, must put + and -
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vfrom) node {$-$} (pgfcirc@Vto) node {$+$}
+ \else
+ (pgfcirc@Vfrom) node {$+$} (pgfcirc@Vto) node {$-$}
+ \fi
+ \fi
+ \fi
+}
+
+%% Output routine
+\def\pgf@circ@drawvoltage{% node name
+%\pgf@circ@direction
+ \pgfextra{
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@voltage@below
+ \pgf@circuit@bipole@voltage@belowfalse
+ \else
+ \pgf@circuit@bipole@voltage@belowtrue
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@below
+ \pgf@circuit@bipole@voltage@belowfalse
+ \else
+ \pgf@circuit@bipole@voltage@belowtrue
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@voltage@label@where{90}
+ \fi
+
+
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\eudist{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}} }
+ { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
+
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ }%end pgfextra
+
+ \ifpgf@circuit@bipole@isvoltage
+ \pgf@circ@drawvoltagegenerator
+ \else
+ \pgf@circ@drawvoltagegeneric
+ \fi
+
+ % (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where) %Zeile sinnlos!?
+ \ifpgf@circuit@bipole@voltage@straight
+ coordinate (Vlab) at ($(pgfcirc@Vto)!0.5!(pgfcirc@Vfrom) $)
+ node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt]
+ at (Vlab) { \pgf@circ@finallabels{voltage/label} }
+ \else
+ coordinate (Vlab) at ($(\ctikzvalof{bipole/name}.center) !
+ \ifpgf@circuit@europeanvoltage
+ \eudist
+ \else
+ \ctikzvalof{voltage/american label distance}
+ \fi !
+ (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)$)
+ node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt] at (Vlab) { \pgf@circ@finallabels{voltage/label} }
+ \fi
+}%end drawvoltages
+%%%---------- close: tex/pgfcircvoltage
+%%%%%%%%%%% Springe nach tex/pgfcirccurrent
+%%%---------- open: tex/pgfcirccurrent.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Current handling
+
+%% Options
+\ctikzset{i^>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i>^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i>_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i^</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i<^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i<_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i/.code = {
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
+ \ctikzsetvalof{bipole/current/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+%reverse current direction for voltage sources
+ \ifpgf@circ@oldvoltagedirection\else
+ \ifpgf@circuit@bipole@isvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below }
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \fi\fi\fi
+}
+}
+
+
+\ifpgf@circ@oldvoltagedirection
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
+\else
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
+\fi
+\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
+\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
+\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
+
+%% Output routine
+\def\pgf@circ@drawcurrent{
+ \pgfextra{
+ \edef\pgf@circ@ffffff{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@bipole@current@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@current@label@where{+90}
+ \fi
+ }
+
+ \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
+ \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line
+ (\tikztostart)--(\tikztotarget)
+ \else% normal bipole or source
+ \ifpgf@circuit@bipole@current@before
+ (\tikztostart)--(anchorstartnode)
+ \else
+ (anchorendnode)--(\tikztotarget)
+ \fi
+ \fi
+ \ifpgf@circuit@bipole@current@backward
+ \pgfextra{
+ \pgfmathsubtract{\pgf@circ@ffffff}{180}
+ \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ \fi
+ coordinate[currarrow,pos=\ctikzvalof{current/distance},rotate=\pgf@circ@ffffff](Iarrow)
+ (Iarrow.\pgf@circ@bipole@current@label@where) node[anchor=\pgf@circ@dir]{\pgf@circ@finallabels{current/label}}
+}
+
+%%%---------- close: tex/pgfcirccurrent
+%%%%%%%%%%% Springe nach tex/pgfcircflow
+%%%---------- open: tex/pgfcircflow.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/LICENSE for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% flow handling
+
+%% Options
+\ctikzset{f^>/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/curflowrent/y position = above
+ }
+}
+
+\ctikzset{f_>/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f>^/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f>_/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f^</.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f_</.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f<^/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f<_/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f</.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = backward} }
+\ctikzset{f_/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = below } }
+\ctikzset{f>/.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = forward } }
+\ctikzset{f^/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = above } }
+
+\ctikzset{f/.code = {
+ \pgfkeys{\circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/flow/label/name=#1}
+ \ctikzsetvalof{bipole/flow/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}
+}
+
+%% Output routine
+\def\pgf@circ@drawflow{
+ \pgfextra{
+ \edef\pgf@circ@ffffff{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@bipole@flow@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@flow@label@where{+90}
+ \fi
+ }
+
+ \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
+ \ifx\pgf@circ@temp\pgf@temp%draw flow at a short at middle of the line
+ (\tikztostart)--(\tikztotarget)
+ \else% normal bipole or source
+ \ifpgf@circuit@bipole@flow@before
+ (\tikztostart)--(anchorstartnode)
+ \else
+ (anchorendnode)--(\tikztotarget)
+ \fi
+ \fi
+ \pgfextra{
+ \ifpgf@circuit@bipole@flow@backward
+ \ifpgf@circuit@bipole@flow@below
+ \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \else
+ \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \fi
+ \pgfmathsubtract{\pgf@circ@ffffff}{180}
+ \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \else
+ \ifpgf@circuit@bipole@flow@below
+ \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \else
+ \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \fi
+ \fi
+ }
+ coordinate[flowarrow,pos=\ctikzvalof{flow/distance},rotate=\pgf@circ@ffffff,yshift=\flow@offset](Farrowpos)
+ (Farrowpos.\pgf@circ@bipole@flow@label@where) node[anchor=\pgf@circ@dir]{ \pgf@circ@finallabels{flow/label}}
+}
+
+%%%---------- close: tex/pgfcircflow
+
+\ExecuteOptions{nofetbodydiode,nofetsolderdot,nooldvoltagedirection,europeancurrents,europeanvoltages,americanports,americanresistors,cuteinductors,europeangfsurgearrester,nosiunitx,noarrowmos,smartlabels,nocompatibility}
+
+\ProcessOptions\relax
+
+%%%%%%%%%%% Springe nach tex/pgfcircpath
+%%%---------- open: tex/pgfcircpath.tex
+
+\def\pgf@circ@direction{0.0}
+
+% Names
+\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
+\ctikzset{n/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/name=#1}
+}}
+
+% Reflect the node along
+\ctikzset{mirrored/.is choice}
+\ctikzset{mirror value/.initial=1}
+\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
+\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
+\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
+
+% Invert node along path
+\ctikzset{inverted/.is choice}
+\ctikzset{invert value/.initial=1}
+\ctikzset{inverted/true/.code = {\ctikzsetvalof{invert value}{-1}\pgf@circuit@bipole@invertedtrue}}
+\ctikzset{inverted/false/.code = {\ctikzsetvalof{invert value}{1}\pgf@circuit@bipole@invertedfalse}}
+\ctikzset{invert/.style = {/tikz/circuitikz/inverted=true}}
+\newif\ifpgf@circuit@bipole@inverted
+\ctikzset{bipole/inverted/.is if=pgf@circuit@bipole@inverted}
+
+
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+
+
+
+% Initialize paths
+\def\pgfcircresetpath{
+ \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90, ,bipole/annotation/name=, bipole/annotation/position=-90,
+ bipole/inverted=false, bipole/kind=,
+ bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
+ bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
+ bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
+ bipole/current/y position=above, bipole/current/direction=forward,
+ mirrored=false
+ }
+}
+
+%% Helper function for path-function to ensure using anchors between nodes
+\def\set@explicit@center@anchor#1{
+ \pgfutil@ifundefined{pgf@sh@ns@#1}
+ {
+ %This coordinate is no node(but a relative position or a coordinate), no further handling needed
+ }{
+ \pgfutil@in@.{#1}
+ \ifpgfutil@in@
+ % Anchor is used, do nothing!
+ \else%
+ \let\tikz@moveto@waiting=\relax
+ \pgfpathmoveto{\tikz@last@position}%force movement, because tikz@moveto@waiting
+ \edef#1{#1.center}%ensure using center anchor
+ \fi
+ }
+}
+
+
+%% Generic bipole path
+\def\pgf@circ@bipole@path#1#2{
+
+\pgfextra{
+ \set@explicit@center@anchor{\tikztostart}
+ \set@explicit@center@anchor{\tikztotarget}
+ \pgfsyssoftpath@getcurrentpath{\myp@th}%% save current path to extend after calculation of correct start/end coordinates
+ \ctikzset{bipole/kind = #1}
+ \edef\pgf@temp{\ctikzvalof{bipole/name}}
+ \def\pgf@circ@temp{}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = #2\pgf@circ@rand} % create it
+ \fi
+ }
+
+ (\tikztostart) coordinate (\ctikzvalof{bipole/name}start)%necessary to get correct coordinates in the case of relativ start/end or constructions like ((node1)-|(node2))
+ (\tikztotarget) coordinate (\ctikzvalof{bipole/name}end)
+ \pgfextra{
+ \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \edef\pgf@circ@direction{\pgfmathresult}%Calculate direction(angle) of path
+ \pgfsyssoftpath@setcurrentpath{\myp@th}
+ }
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ \else
+ --($(\ctikzvalof{bipole/name}start) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}end)$) %ugly workaround to get correct linejoins(node breaks path?)
+ \fi
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)%%positio of middle node
+ node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}, xscale=\ctikzvalof{invert value}]
+ (\ctikzvalof{bipole/name}) {}
+ \ifpgf@circuit@bipole@inverted
+ \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathend)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathstart)
+ \else
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.right)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.left)
+ \fi
+ \else
+ \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathstart)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathend)
+ \else
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.left)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.right)
+ \fi
+ \fi
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ \else
+ \ifpgf@circuit@bipole@strokedsymbol%draw line thrue symbol(e.g. diodes)
+ \ifcsname pgf@anchor@#1shape@strokepathstart\endcsname%if special path-anchors are defined, use them!
+ (\ctikzvalof{bipole/name}start.center) -- (\ctikzvalof{bipole/name}.strokepathstart)
+ (\ctikzvalof{bipole/name}.strokepathend) -- (\ctikzvalof{bipole/name}end.center)
+ \else
+ (\ctikzvalof{bipole/name}start.center) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+ \else
+ (\ctikzvalof{bipole/name}start.center) -- (anchorstartnode)
+ (anchorendnode) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+ \fi
+
+ \drawpoles
+ \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabels{label}\fi
+ \pgf@circ@ifkeyempty{bipole/annotation/name}\else\pgf@circ@drawlabels{annotation}\fi
+ \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
+ \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
+ \pgf@circ@ifkeyempty{bipole/flow/label/name}\else\pgf@circ@drawflow\fi
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ (\ctikzvalof{bipole/name}end)%Move to end of path
+ \else
+ ($(\ctikzvalof{bipole/name}end) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}start)$) -- (\ctikzvalof{bipole/name}end)%ugly workaround to get correct linejoins(node breaks path?)
+ %tikztostart and tikztotarget could not be used, because it would break if target coordinate is something like (node1-|node2)
+
+ \fi
+ % reset
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ \tikztonodes%draw pending nodes an path
+}
+
+
+%% Path definitions
+\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
+\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
+\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
+\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
+\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
+\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
+\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
+\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
+\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
+\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
+\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
+\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
+\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
+\def\pgf@circ@batteryone@path#1{\pgf@circ@bipole@path{battery1}{#1}}
+\def\pgf@circ@batterytwo@path#1{\pgf@circ@bipole@path{battery2}{#1}}
+\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
+\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
+\def\pgf@circ@inductor@path#1{%
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@europeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@cuteinductor@path{#1}%
+ \else%
+ \pgf@circ@americaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@vinductor@path#1{
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@veuropeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@vcuteinductor@path{#1}%
+ \else%
+ \pgf@circ@vamericaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
+\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
+\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
+\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
+\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
+\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
+\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
+\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
+\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
+\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
+\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
+\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
+\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
+\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
+\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
+\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
+\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
+\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
+\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
+\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
+\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
+\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
+\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
+\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
+\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
+\def\pgf@circ@nos@path#1{\pgf@circ@bipole@path{nos}{#1}}
+\def\pgf@circ@ncs@path#1{\pgf@circ@bipole@path{ncs}{#1}}
+\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
+\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
+\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
+\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
+\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
+\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
+\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
+\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
+\def\pgf@circ@empty@path#1{}
+\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
+\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
+\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
+\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
+\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
+\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
+\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
+\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
+\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
+\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
+\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
+\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
+\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
+
+\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
+\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
+\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
+
+\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
+\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
+\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
+\def\pgf@circ@bandstop@path#1{\pgf@circ@bipole@path{bandstop}{#1}}
+\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
+\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
+\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
+\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
+\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
+\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
+\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
+\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
+\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
+\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
+\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
+\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
+\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
+\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
+\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
+
+%%Mechanical
+\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
+\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
+\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
+
+
+
+
+%% Styles
+
+\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
+\def\compattikzset#1{\tikzset{\comnpatname#1}}
+
+%\def\ctikzsetbipole#1#2{%
+% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
+%}
+
+\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
+\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
+\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
+\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
+\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
+\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
+\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
+\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
+\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
+\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
+\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
+\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
+\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
+\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
+\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
+\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
+\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
+\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
+\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
+\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
+\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
+\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batteryone@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{battery2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batterytwo@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
+\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
+\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
+\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
+\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
+\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
+\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
+\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
+\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
+\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
+\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
+\compattikzset{transmission line/.style = {tline = #1}}
+\compattikzset{TL/.style = {tline = #1}}
+\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+
+\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source = #1, \circuitikzbasekey/bipole/is current=true}}
+\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source = #1, \circuitikzbasekey/bipole/is current=true}}
+
+
+\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
+\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
+\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
+\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
+\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
+\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
+\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
+
+\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
+
+\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
+\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
+\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
+\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
+\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
+
+\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
+\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
+\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
+\compattikzset{bandstop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandstop@path}}
+\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
+\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
+\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
+\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
+\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
+\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
+\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
+\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
+\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
+\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
+\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
+\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
+\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
+\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
+\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
+
+% % % % % %
+% % Beginn of Diodes
+% % % % % %
+
+\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
+\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
+\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
+\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
+\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
+\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
+\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
+\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
+\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
+\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
+\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
+\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
+\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
+\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
+\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
+\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
+
+\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
+\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
+\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
+\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
+\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
+\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
+\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
+\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
+\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
+\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
+
+\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
+\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
+%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
+
+\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
+\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
+\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
+\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
+\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
+\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
+\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
+\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
+\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
+\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
+
+%% Define Shortcuts
+\compattikzset{Do/.style = {\comnpatname empty diode}}
+\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
+\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
+\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
+\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
+\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
+\compattikzset{leDo/.style = {\comnpatname empty led}}
+\compattikzset{VCo/.style = {\comnpatname empty varcap}}
+\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
+\compattikzset{Tro/.style = {\comnpatname empty triac}}
+
+\compattikzset{D*/.style = {\comnpatname full diode}}
+\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
+\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
+\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
+\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
+\compattikzset{pD*/.style = {\comnpatname full photodiode}}
+\compattikzset{leD*/.style = {\comnpatname full led}}
+\compattikzset{VC*/.style = {\comnpatname full varcap}}
+\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
+\compattikzset{Tr*/.style = {\comnpatname full triac}}
+
+\compattikzset{D/.style = {\comnpatname diode}}
+\compattikzset{tD/.style = {\comnpatname tunnel diode}}
+\compattikzset{zD/.style = {\comnpatname Zener diode}}
+\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
+\compattikzset{sD/.style = {\comnpatname Schottky diode}}
+\compattikzset{pD/.style = {\comnpatname photodiode}}
+\compattikzset{leD/.style = {\comnpatname led}}
+\compattikzset{VC/.style = {\comnpatname varcap}}
+\compattikzset{Ty/.style = {\comnpatname thyristor}}
+\compattikzset{Tr/.style = {\comnpatname triac}}
+
+\compattikzset{D-/.style = {\comnpatname stroke diode}}
+\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
+\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
+\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
+\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
+\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
+\compattikzset{leD-/.style = {\comnpatname stroke led}}
+\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
+\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
+\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
+
+% % % % % %
+% % End of Diodes
+% % % % % %
+
+
+\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
+\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
+\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
+\compattikzset{ncs/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
+\compattikzset{nos/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
+\compattikzset{normal closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
+\compattikzset{normal open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
+\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
+\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
+
+\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
+\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
+\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
+
+% short forms
+\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, l=#1}}
+
+\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path, i=#1}}
+\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosource@path, v=#1}}
+
+\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
+\compattikzset{isource/.style = {\comnpatname current source = #1}}
+\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
+\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+
+\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+
+\compattikzset{R/.style= {\comnpatname resistor = #1}}
+%\ifpgf@circuit@compat\else\compattikzset{R/.style= {resistor = #1}}\fi
+\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
+\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
+\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
+\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
+\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
+\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
+\compattikzset{C/.style = {\comnpatname capacitor = #1}}
+\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
+\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
+\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
+\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
+\compattikzset{L/.style = {\comnpatname inductor = #1}}
+\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
+\compattikzset{V/.style = {\comnpatname voltage source = #1}}
+\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
+\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
+ \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
+ \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
+ \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+
+%current sources
+\compattikzset{I/.style = {\comnpatname current source = #1}}
+\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
+ \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
+ \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
+ \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+
+
+
+\compattikzset{Mr/.style = {\comnpatname memristor}}
+
+\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
+\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
+\compattikzset{spst/.style = {\comnpatname switch = #1}}
+
+\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
+
+\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
+\compattikzset{vss/.style = {\comnpatname vee = #1}}
+
+\def\inheritlogicport#1#2{
+ \pgfdeclareshape{#2 port}{
+ \inheritsavedanchors[from=#1 #2 port]
+ \inheritbackgroundpath[from=#1 #2 port]
+ \inheritanchor[from=#1 #2 port]{in}
+ \inheritanchor[from=#1 #2 port]{in 1}
+ \inheritanchor[from=#1 #2 port]{in 2}
+ \inheritanchor[from=#1 #2 port]{out}
+ \inheritanchor[from=#1 #2 port]{center}
+ \inheritanchor[from=#1 #2 port]{left}
+ }
+}
+
+\ifpgf@circuit@europeanlogicport
+ \inheritlogicport{european}{and}
+ \inheritlogicport{european}{or}
+ \inheritlogicport{european}{xor}
+ \inheritlogicport{european}{not}
+ \inheritlogicport{european}{nand}
+ \inheritlogicport{european}{nor}
+ \inheritlogicport{european}{xnor}
+\else
+ \inheritlogicport{american}{and}
+ \inheritlogicport{american}{or}
+ \inheritlogicport{american}{xor}
+ \inheritlogicport{american}{not}
+ \inheritlogicport{american}{nand}
+ \inheritlogicport{american}{nor}
+ \inheritlogicport{american}{xnor}
+\fi
+
+% Transistor like bipoles
+
+\def\pgf@circ@trans@path#1#2{
+ \pgfextra{
+ \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
+ \def\pgf@circ@temp{#2}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
+ \fi
+ }
+ \ifpgf@circuit@bipole@inverted
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ \else
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ \fi
+ \pgfextra{
+ \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \pgfmathadd{\pgfmathresult}{-90}
+ \edef\pgf@circ@direction{\pgfmathresult}
+ }
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)
+ node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
+ (\ctikzvalof{bipole/name}) {} node {\ctikzvalof{bipole/label/name}}
+ \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
+ (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
+ \else
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
+ (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ (\tikztotarget) \tikztonodes % e si continua
+}
+
+
+\def\pgf@circ@definetranspath#1{
+ \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
+}
+
+\pgf@circ@definetranspath{elmech}
+\pgf@circ@definetranspath{nmos}
+\pgf@circ@definetranspath{pmos}
+\pgf@circ@definetranspath{npn}
+\pgf@circ@definetranspath{pnp}
+\pgf@circ@definetranspath{nfet}
+\pgf@circ@definetranspath{nigfete}
+\pgf@circ@definetranspath{nigfetd}
+\pgf@circ@definetranspath{nigfetebulk}
+\pgf@circ@definetranspath{pfet}
+\pgf@circ@definetranspath{pigfete}
+\pgf@circ@definetranspath{pigfetd}
+\pgf@circ@definetranspath{pigfetebulk}
+\pgf@circ@definetranspath{njfet}
+\pgf@circ@definetranspath{pjfet}
+\pgf@circ@definetranspath{pigbt}
+\pgf@circ@definetranspath{nigbt}
+\pgf@circ@definetranspath{Lpigbt}
+\pgf@circ@definetranspath{Lnigbt}
+%%%---------- close: tex/pgfcircpath
+
+\ifpgf@circ@siunitx
+ \RequirePackage{xstring}[2009/03/13]
+ %\expandafter\let\csname angstrom\endcsname\relax
+ \RequirePackage{siunitx}
+\fi
+
+
+
+\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
+%override (unused) circuitikz environment for compability to externalization)
+\let\circuitikz\tikzpicture
+\let\endcircuitikz\endtikzpicture
+
+\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.8.3.sty b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.8.3.sty
index 22100fdfd2..249cd71d58 100644
--- a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.8.3.sty
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.8.3.sty
@@ -1,11 +1,14 @@
-% Copyright 2007-2016 by Massimo Redaelli
+% Copyright 2018-2021 by Romano Giannetti
+% Copyright 2015-2021 by Stefan Lindner
+% Copyright 2013-2021 by Stefan Erhardt
+% Copyright 2007-2021 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
%
-% See the file doc/LICENSE for more details.
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
\NeedsTeXFormat{LaTeX2e}
@@ -16,11126 +19,5 @@
\ProvidesPackage{circuitikz-0.8.3}
[\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]
-%% Version 3.0 of pgf/TikZ is required
-\RequirePackage{tikz}
-\usetikzlibrary{calc}
-\usepgflibrary{arrows}
+\input{circuitikz-0.8.3-body.tex}
-
-% The options are listed in the manual in this order
-
-\DeclareOption{europeanvoltage}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{straightvoltages}{
- \pgf@circuit@bipole@voltage@straighttrue
-}
-
-\DeclareOption{americanvoltage}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrent}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrent}{
- \ctikzset{current = american}
-}
-
-
-
-\DeclareOption{americanresistor}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistor}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductor}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductor}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductor}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanport}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanport}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{europeanport}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{european}{
- \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
- \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester choice = european}
-}
-
-\DeclareOption{american}{
- \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester choice = american}
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{fulldiodes}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiodes}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{europeanvoltages}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{americanvoltages}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrents}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrents}{
- \ctikzset{current = american}
-}
-
-\DeclareOption{americanresistors}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistors}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductors}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductors}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductors}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanports}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanports}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{americangfsurgearrester}{
- \ctikzset{gas filled surge arrester choice = american}
-}
-
-\DeclareOption{europeangfsurgearrester}{
- \ctikzset{gas filled surge arrester choice = european}
-}
-
-\DeclareOption{siunitx}{
- \pgf@circ@siunitxtrue
-}
-
-\DeclareOption{nosiunitx}{
- \pgf@circ@siunitxfalse
-}
-
-\DeclareOption{fulldiode}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiode}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{strokediode}{
- \ctikzset{diode = stroke}
-}
-
-\DeclareOption{arrowmos}{
- \pgf@circuit@mos@arrowstrue
-}
-
-\DeclareOption{noarrowmos}{
- \pgf@circuit@mos@arrowsfalse
-}
-
-\DeclareOption{fetbodydiode}{
- \pgf@circuit@fet@bodydiodetrue
-}
-
-\DeclareOption{nofetbodydiode}{
- \pgf@circuit@fet@bodydiodefalse
-}
-
-\DeclareOption{fetsolderdot}{
- \pgf@circuit@fet@solderdottrue
-}
-
-\DeclareOption{nofetsolderdot}{
- \pgf@circuit@fet@solderdotfalse
-}
-
-\DeclareOption{emptypmoscircle}{
- \pgf@circuit@pmos@emptycircletrue
-}
-
-
-\DeclareOption{lazymos}{
- \ctikzset{tripoles/nmos/width=.5}
- \ctikzset{tripoles/nmos/gate height=.35}
- \ctikzset{tripoles/nmos/base height=.35}
- \ctikzset{tripoles/nmos/height/.initial=1.2}
- \ctikzset{tripoles/nmos/base width=.5}
- \ctikzset{tripoles/nmos/gate width=.65}
-
- \ctikzset{tripoles/pmos/width=.5}
- \ctikzset{tripoles/pmos/gate height=.35}
- \ctikzset{tripoles/pmos/base height=.35}
- \ctikzset{tripoles/pmos/height/.initial=1.2}
- \ctikzset{tripoles/pmos/base width=.5}
- \ctikzset{tripoles/pmos/gate width=.65}
-
- \pgf@circuit@pmos@emptycircletrue
-}
-
-\DeclareOption{straightlabels}{
- \ctikzset{label/align = straight}
-}
-
-\DeclareOption{rotatelabels}{
- \ctikzset{label/align = rotate}
-}
-
-\DeclareOption{smartlabels}{
- \ctikzset{label/align = smart}
-}
-
-\DeclareOption{compatibility}{
- \pgf@circuit@compattrue
-}
-
-\DeclareOption{oldvoltagedirection}{
- \pgf@circ@oldvoltagedirectiontrue
-}
-\DeclareOption{nooldvoltagedirection}{
- \pgf@circ@oldvoltagedirectionfalse
-}
-
-\DeclareOption{betterproportions}{
- \ctikzset{monopoles/ground/width/.initial=.15}
-
- \ctikzset{bipoles/resistor/height/.initial=.23}
- \ctikzset{bipoles/resistor/width/.initial=.6}
- \ctikzset{bipoles/capacitor/height/.initial=.4}
- \ctikzset{bipoles/capacitor/width/.initial=.1}
- \ctikzset{bipoles/potentiometer/height/.initial=.6}
- \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/potentiometer/width/.initial=.6}
- \ctikzset{bipoles/photoresistor/height/.initial=.6}
- \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
- \ctikzset{bipoles/photoresistor/width/.initial=.6}
- \ctikzset{bipoles/thermistor/main/.initial=.7}
- \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistor/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/main/.initial=.7}
- \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
- \ctikzset{bipoles/thermistorptc/width/.initial=.6}
- \ctikzset{bipoles/thermistorptc/main/.initial=.7}
- \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/main/.initial=.7}
- \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/width/.initial=.6}
- \ctikzset{bipoles/vresistor/height/.initial=.45}
- \ctikzset{bipoles/vresistor/width/.initial=.6}
- \ctikzset{bipoles/generic/height/.initial=.23}
- \ctikzset{bipoles/generic/width/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
- \ctikzset{bipoles/ageneric/height/.initial=.23}
- \ctikzset{bipoles/ageneric/width/.initial=.6}
- \ctikzset{bipoles/memristor/height/.initial=.23}
- \ctikzset{bipoles/memristor/wave height/.initial=.375}
- \ctikzset{bipoles/memristor/width/.initial=.60}
- \ctikzset{bipoles/tgeneric/height/.initial=.525}
- \ctikzset{bipoles/tgeneric/width/.initial=.6}
- \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
- \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
- \ctikzset{bipoles/fullgeneric/height/.initial=.23}
- \ctikzset{bipoles/fullgeneric/width/.initial=.6}
- \ctikzset{bipoles/diode/height/.initial=.3}
- \ctikzset{bipoles/diode/width/.initial=.25}
-
- \ctikzset{tripoles/thyristor/height/.initial=.66}
- \ctikzset{tripoles/thyristor/height 2/.initial=.3}
- \ctikzset{tripoles/thyristor/width/.initial=.6}
- \ctikzset{tripoles/thyristor/diode height/.initial=.3}
- \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
- \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
- \ctikzset{tripoles/triac/height/.initial=.66}
- \ctikzset{tripoles/triac/width/.initial=.6}
- \ctikzset{tripoles/triac/diode width left/.initial=.3}
- \ctikzset{tripoles/triac/diode width right/.initial=.3}
-}
-
-%%%%%%%%%
-%%%%%%%%%%% Springe nach tex/pgfcirc.defines
-%%%---------- open: tex/pgfcirc.defines.tex
-
-%% Options
-
-%%%%%%%%%%%%
-%% Dimensions
-
-% coordinates
-\newdimen\pgf@circ@res@up
-\newdimen\pgf@circ@res@down
-\newdimen\pgf@circ@res@zero
-\newdimen\pgf@circ@res@left
-\newdimen\pgf@circ@res@right
-\newdimen\pgf@circ@res@other
-\newdimen\pgf@circ@res@step
-\newdimen\pgf@circ@res@temp
-% inital thickness
-\newdimen \pgfstartlinewidth
-%% Keys
-
-\long\def\pgf@circ@comment#1{}
-
-\def\circuitikzbasekey{/tikz/circuitikz}
-
-\pgfkeys{\circuitikzbasekey/.is family}
-
-\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
-\let\ctikzset\circuitikzset
-\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
-\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circuit@compat
-\newif\ifpgf@circ@oldvoltagedirection
-
-% Option ">" for twoports
-\newif\ifpgf@circuit@inputarrow
-\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/.is choice}
-\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
-
-% Option "boxed" for nodes and twoports
-\newif\ifpgf@circuit@boxed
-\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
-
-% Option "dashed" for nodes and twoports
-\newif\ifpgf@circuit@dashed
-\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
-\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}
-
-% Option "t=*" for nodes
-\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
-
-
-
-\ctikzset{bipoles/.is family}
-\ctikzset{bipoles/border margin/.initial=1.1}
-\ctikzset{bipoles/thickness/.initial=2}
-\ctikzset{nodes width/.initial=.04}
-\newdimen\pgf@circ@Rlen
-\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1}}
-\pgf@circ@Rlen = 1.4cm
-
-\ctikzset{monopoles/.is family}
-\ctikzset{monopoles/ground/width/.initial=.25}
-\ctikzset{monopoles/tground/thickness/.initial=3}
-\ctikzset{monopoles/vcc/width/.initial=.2}
-\ctikzset{monopoles/match/width/.initial=.4}
-\ctikzset{monopoles/chassis/width/.initial=.25}
-\ctikzset{monopoles/alternative chassis/width/.initial=.25}
-\ctikzset{monopoles/equipotentiality/width/.initial=.25}
-\ctikzset{monopoles/tlinestub/width/.initial=.25}
-\ctikzset{monopoles/antenna/width/.initial=.25}
-\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/width/.initial=.25}
-\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/rxantenna/width/.initial=.25}
-
-\ctikzset{bipoles/resistor/height/.initial=.3}
-\ctikzset{bipoles/resistor/width/.initial=.8}
-\ctikzset{bipoles/potentiometer/height/.initial=.8}
-\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
-\ctikzset{bipoles/potentiometer/width/.initial=.8}
-\ctikzset{bipoles/photoresistor/height/.initial=.6}
-\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
-\ctikzset{bipoles/photoresistor/width/.initial=.8}
-\ctikzset{bipoles/thermistor/main/.initial=.7}
-\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/width/.initial=.8}
-\ctikzset{bipoles/thermistorntc/main/.initial=.7}
-\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistorptc/width/.initial=.8}
-\ctikzset{bipoles/thermistorptc/main/.initial=.7}
-\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistor/width/.initial=.8}
-\ctikzset{bipoles/varistor/main/.initial=.7}
-\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/varistor/width/.initial=.8}
-\ctikzset{bipoles/vresistor/height/.initial=.6}
-\ctikzset{bipoles/vresistor/width/.initial=.8}
-\ctikzset{bipoles/cuteinductor/height/.initial=.3}
-\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
-\ctikzset{bipoles/cuteinductor/width/.initial=.6}
-\ctikzset{bipoles/cuteinductor/coils/.initial=5}
-\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-\ctikzset{bipoles/americaninductor/height/.initial=.3}
-\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
-\ctikzset{bipoles/americaninductor/width/.initial=.8}
-\ctikzset{bipoles/americaninductor/coils/.initial=4}
-\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
-\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
-\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
-\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
-\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
-\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
-\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/esource/height/.initial=.60}
-\ctikzset{bipoles/esource/width/.initial=.60}
-\ctikzset{bipoles/pvsource/height/.initial=.60}
-\ctikzset{bipoles/pvsource/width/.initial=.60}
-\ctikzset{bipoles/isource/height/.initial=.60}
-\ctikzset{bipoles/isource/width/.initial=.60}
-\ctikzset{bipoles/oosource/height/.initial=.60}
-\ctikzset{bipoles/oosource/width/.initial=.60}
-\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/dcisource/height/.initial=.60}
-\ctikzset{bipoles/dcisource/width/.initial=.60}
-\ctikzset{bipoles/dcvsource/height/.initial=.60}
-\ctikzset{bipoles/dcvsource/width/.initial=.60}
-\ctikzset{bipoles/vsourcetri/height/.initial=.60}
-\ctikzset{bipoles/vsourcetri/width/.initial=.60}
-\ctikzset{bipoles/isourceam/height/.initial=.60}
-\ctikzset{bipoles/isourceam/width/.initial=.60}
-\ctikzset{bipoles/vsource/height/.initial=.60}
-\ctikzset{bipoles/vsource/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/height/.initial=.60}
-\ctikzset{bipoles/vsourceam/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/margin/.initial=.7}
-\ctikzset{bipoles/isourcesin/height/.initial=.60}
-\ctikzset{bipoles/isourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesin/height/.initial=.60}
-\ctikzset{bipoles/vsourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
-\ctikzset{bipoles/cisource/height/.initial=.7}
-\ctikzset{bipoles/cisource/width/.initial=.7}
-\ctikzset{bipoles/cisourceam/height/.initial=.7}
-\ctikzset{bipoles/cisourceam/width/.initial=.7}
-\ctikzset{bipoles/cvsource/height/.initial=.7}
-\ctikzset{bipoles/cvsource/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/height/.initial=.7}
-\ctikzset{bipoles/cvsourceam/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
-\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
-\ctikzset{bipoles/cisourcesin/width/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
-\ctikzset{bipoles/capacitor/height/.initial=.6}
-\ctikzset{bipoles/capacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/height/.initial=.5}
-\ctikzset{bipoles/ecapacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/font/.initial= \fontsize{6}{0}\selectfont\boldmath}
-\ctikzset{bipoles/pcapacitor/height/.initial=.6}
-\ctikzset{bipoles/pcapacitor/width/.initial=.2}
-\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
-\ctikzset{bipoles/vcapacitor/height/.initial=.6}
-\ctikzset{bipoles/vcapacitor/width/.initial=.5}
-\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
-\ctikzset{bipoles/piezoelectric/height/.initial=.7}
-\ctikzset{bipoles/piezoelectric/width/.initial=.5}
-\ctikzset{bipoles/battery/height/.initial=.6}
-\ctikzset{bipoles/battery/width/.initial=.3}
-\ctikzset{bipoles/battery1/height/.initial=.6}
-\ctikzset{bipoles/battery1/width/.initial=.3}
-\ctikzset{bipoles/battery2/height/.initial=.6}
-\ctikzset{bipoles/battery2/width/.initial=.3}
-\ctikzset{bipoles/diode/height/.initial=.50}
-\ctikzset{bipoles/diode/width/.initial=.40}
-\ctikzset{bipoles/varcap/height/.initial=.50}
-\ctikzset{bipoles/varcap/width/.initial=.45}
-\ctikzset{bipoles/spst/height/.initial=.35}
-\ctikzset{bipoles/spst/width/.initial=.35}
-\ctikzset{bipoles/spst/depth/.initial=.2}
-\ctikzset{bipoles/nos/height/.initial=.3}
-\ctikzset{bipoles/nos/width/.initial=.35}
-\ctikzset{bipoles/ncs/height/.initial=.35}
-\ctikzset{bipoles/ncs/width/.initial=.35}
-\ctikzset{bipoles/generic/height/.initial=.30}
-\ctikzset{bipoles/generic/width/.initial=.80}
-\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
-\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
-\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
-\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
-\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
-\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
-\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
-\ctikzset{bipoles/fuse/height/.initial=.20}
-\ctikzset{bipoles/fuse/width/.initial=.50}
-\ctikzset{bipoles/afuse/height/.initial=.20}
-\ctikzset{bipoles/afuse/width/.initial=.50}
-\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
-\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
-\ctikzset{bipoles/ageneric/height/.initial=.30}
-\ctikzset{bipoles/ageneric/width/.initial=.80}
-\ctikzset{bipoles/memristor/height/.initial=.30}
-\ctikzset{bipoles/memristor/wave height/.initial=.5}
-\ctikzset{bipoles/memristor/width/.initial=.80}
-\ctikzset{bipoles/tgeneric/height/.initial=.70}
-\ctikzset{bipoles/tgeneric/width/.initial=.80}
-\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
-\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
-\ctikzset{bipoles/fullgeneric/height/.initial=.30}
-\ctikzset{bipoles/fullgeneric/width/.initial=.80}
-\ctikzset{bipoles/open/height/.initial=.3} %necessary for curly voltages
-\ctikzset{bipoles/open/width/.initial=.3} %necessary for curly voltages
-\ctikzset{bipoles/open/voltage/straight label distance/.initial=0}
-\ctikzset{bipoles/open/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/short/height/.initial=0} %dummy height for voltage positioning
-\ctikzset{bipoles/short/width/.initial=0} %dummy width for voltage positioning
-%\ctikzset{bipoles/short/voltage/straight label distance/.initial=.2}
-%\ctikzset{bipoles/short/voltage/distance from node/.initial=.5}
-\ctikzset{bipoles/ammeter/height/.initial=.60}
-\ctikzset{bipoles/ammeter/width/.initial=.60}
-\ctikzset{bipoles/ohmmeter/height/.initial=.60}
-\ctikzset{bipoles/ohmmeter/width/.initial=.60}
-\ctikzset{bipoles/voltmeter/height/.initial=.60}
-\ctikzset{bipoles/voltmeter/width/.initial=.60}
-\ctikzset{bipoles/buffer/height/.initial=1}
-\ctikzset{bipoles/buffer/width/.initial=1}
-\ctikzset{bipoles/not port/width/.initial=1}
-\ctikzset{bipoles/not port/height/.initial=.8}
-\ctikzset{bipoles/not port/circle width/.initial=.15}
-\ctikzset{bipoles/lamp/height/.initial=.60}
-\ctikzset{bipoles/lamp/width/.initial=.60}
-\ctikzset{bipoles/tline/height/.initial=.3}
-\ctikzset{bipoles/tline/width/.initial=.8}
-\ctikzset{bipoles/squid/height/.initial=.60}
-\ctikzset{bipoles/squid/width/.initial=.60}
-\ctikzset{bipoles/barrier/height/.initial=.60}
-\ctikzset{bipoles/barrier/width/.initial=.60}
-\ctikzset{bipoles/thermocouple/height/.initial=.250}
-\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
-\ctikzset{bipoles/thermocouple/width/.initial=.140}
-\ctikzset{bipoles/pushbutton/height/.initial=.5}
-\ctikzset{bipoles/pushbutton/height 2/.initial=.0}
-\ctikzset{bipoles/pushbutton/width/.initial=.50}
-
-\ctikzset{bipoles/twoport/width/.initial=.7}
-\ctikzset{bipoles/twoport/height/.initial=.7}
-\ctikzset{bipoles/twoport/text/.initial=}
-\ctikzset{bipoles/vco/width/.initial=.7}
-\ctikzset{bipoles/bandpass/width/.initial=.7}
-\ctikzset{bipoles/bandstop/width/.initial=.7}
-\ctikzset{bipoles/highpass/width/.initial=.7}
-\ctikzset{bipoles/lowpass/width/.initial=.7}
-\ctikzset{bipoles/adc/width/.initial=.7}
-\ctikzset{bipoles/dac/width/.initial=.7}
-\ctikzset{bipoles/dsp/width/.initial=.7}
-\ctikzset{bipoles/fft/width/.initial=.7}
-\ctikzset{bipoles/amp/width/.initial=.7}
-\ctikzset{bipoles/vamp/width/.initial=.7}
-\ctikzset{bipoles/piattenuator/width/.initial=.7}
-\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
-\ctikzset{bipoles/tattenuator/width/.initial=.7}
-\ctikzset{bipoles/vtattenuator/width/.initial=.7}
-\ctikzset{bipoles/phaseshifter/width/.initial=.7}
-\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
-\ctikzset{bipoles/detector/width/.initial=.7}
-
-
-\newif\ifpgf@circuit@trans@depletiontype
-\pgf@circuit@trans@depletiontypefalse
-
-\newif\ifpgf@circuit@mos@arrows
-\ctikzset{tripoles/mos style/.is choice}
-\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
-\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
-
-% Option solderdot for fet
-\newif\ifpgf@circuit@fet@solderdot
-\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-
-% Option bodydiode for fet
-\newif\ifpgf@circuit@fet@bodydiode
-\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-
-% Option draw fet without gate connection
-\newif\ifpgf@circuit@bpt@drawgate
-\pgf@circuit@bpt@drawgatetrue
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-
-% Option draw bpt without base connection
-\newif\ifpgf@circuit@bpt@drawbase
-\pgf@circuit@bpt@drawbasetrue
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-
-% Option draw bpt with optical input
-\newif\ifpgf@circuit@bpt@drawphoto
-\pgf@circuit@bpt@drawphotofalse
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-
-% Option draw pmos with empty circle
-\newif\ifpgf@circuit@pmos@emptycircle
-\newif\ifpgf@circuit@pmos@emptycircle
-\pgf@circuit@pmos@emptycirclefalse
-\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-
-
-\newif\ifpgf@circuit@trans@ntype
-\pgf@circuit@trans@ntypetrue %default true
-%\newif\ifpgf@circuit@trans@ptype
-%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
-\ctikzset{tripoles/nmos/width/.initial=.7}
-\ctikzset{tripoles/nmos/gate height/.initial=.35}
-\ctikzset{tripoles/nmos/base height/.initial=.5}
-\ctikzset{tripoles/nmos/conn height/.initial=0}
-\ctikzset{tripoles/nmos/height/.initial=1.1}
-\ctikzset{tripoles/nmos/base width/.initial=.5}
-\ctikzset{tripoles/nmos/gate width/.initial=.62}
-\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nmos/curr direction/.initial=1}
-
-\ctikzset{tripoles/pmos/width/.initial=.7}
-\ctikzset{tripoles/pmos/gate height/.initial=.35}
-\ctikzset{tripoles/pmos/base height/.initial=.5}
-\ctikzset{tripoles/pmos/conn height/.initial=0}
-\ctikzset{tripoles/pmos/height/.initial=1.1}
-\ctikzset{tripoles/pmos/base width/.initial=.5}
-\ctikzset{tripoles/pmos/gate width/.initial=.62}
-\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pmos/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nfet/width/.initial=.7}
-\ctikzset{tripoles/nfet/gate height/.initial=.35}
-\ctikzset{tripoles/nfet/base height/.initial=.5}
-\ctikzset{tripoles/nfet/conn height/.initial=0}
-\ctikzset{tripoles/nfet/height/.initial=1.1}
-\ctikzset{tripoles/nfet/base width/.initial=.5}
-\ctikzset{tripoles/nfet/gate width/.initial=.62}
-\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pfet/width/.initial=.7}
-\ctikzset{tripoles/pfet/gate height/.initial=.35}
-\ctikzset{tripoles/pfet/base height/.initial=.5}
-\ctikzset{tripoles/pfet/conn height/.initial=0}
-\ctikzset{tripoles/pfet/height/.initial=1.1}
-\ctikzset{tripoles/pfet/base width/.initial=.5}
-\ctikzset{tripoles/pfet/gate width/.initial=.62}
-\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigfete/width/.initial=.7}
-\ctikzset{tripoles/nigfete/gate height/.initial=.35}
-\ctikzset{tripoles/nigfete/base height/.initial=.5}
-\ctikzset{tripoles/nigfete/conn height/.initial=.35}
-\ctikzset{tripoles/nigfete/height/.initial=1.1}
-\ctikzset{tripoles/nigfete/base width/.initial=.5}
-\ctikzset{tripoles/nigfete/gate width/.initial=.62}
-\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfete/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetd/width/.initial=.7}
-\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetd/base height/.initial=.5}
-\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetd/height/.initial=1.1}
-\ctikzset{tripoles/nigfetd/base width/.initial=.5}
-\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
-
-\ctikzset{tripoles/pigfete/width/.initial=.7}
-\ctikzset{tripoles/pigfete/gate height/.initial=.35}
-\ctikzset{tripoles/pigfete/base height/.initial=.5}
-\ctikzset{tripoles/pigfete/conn height/.initial=.35}
-\ctikzset{tripoles/pigfete/height/.initial=1.1}
-\ctikzset{tripoles/pigfete/base width/.initial=.5}
-\ctikzset{tripoles/pigfete/gate width/.initial=.62}
-\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetd/width/.initial=.7}
-\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetd/base height/.initial=.5}
-\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetd/height/.initial=1.1}
-\ctikzset{tripoles/pigfetd/base width/.initial=.5}
-\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
-
-\ctikzset{tripoles/npn/width/.initial=.6}
-\ctikzset{tripoles/npn/base height/.initial=.45}
-\ctikzset{tripoles/npn/base height 2/.initial=.15}
-\ctikzset{tripoles/npn/base height/.initial=.4}
-\ctikzset{tripoles/npn/conn height/.initial=0}
-\ctikzset{tripoles/npn/height/.initial=1.1}
-\ctikzset{tripoles/npn/base width/.initial=.5}
-\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/npn/curr direction/.initial=1}
-
-\ctikzset{tripoles/pnp/width/.initial=.6}
-\ctikzset{tripoles/pnp/base height/.initial=.45}
-\ctikzset{tripoles/pnp/base height 2/.initial=.15}
-\ctikzset{tripoles/pnp/base height/.initial=.4}
-\ctikzset{tripoles/pnp/conn height/.initial=0}
-\ctikzset{tripoles/pnp/height/.initial=1.1}
-\ctikzset{tripoles/pnp/base width/.initial=.5}
-\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pnp/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigbt/width/.initial=.6}
-\ctikzset{tripoles/pigbt/gate height/.initial=.45}
-\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/pigbt/base height/.initial=.4}
-\ctikzset{tripoles/pigbt/conn height/.initial=0}
-\ctikzset{tripoles/pigbt/height/.initial=1.1}
-\ctikzset{tripoles/pigbt/gate width/.initial=.62}
-\ctikzset{tripoles/pigbt/base width/.initial=.5}
-\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigbt/width/.initial=.6}
-\ctikzset{tripoles/nigbt/gate height/.initial=.45}
-\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/nigbt/base height/.initial=.4}
-\ctikzset{tripoles/nigbt/conn height/.initial=0}
-\ctikzset{tripoles/nigbt/height/.initial=1.1}
-\ctikzset{tripoles/nigbt/gate width/.initial=.62}
-\ctikzset{tripoles/nigbt/base width/.initial=.5}
-\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/Lpigbt/width/.initial=.6}
-\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/Lnigbt/width/.initial=.6}
-\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/njfet/width/.initial=.7}
-\ctikzset{tripoles/njfet/gate height/.initial=.5}
-\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/njfet/gate width/.initial=.5}
-\ctikzset{tripoles/njfet/conn height/.initial=.35}
-\ctikzset{tripoles/njfet/height/.initial=1.1}
-\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/njfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pjfet/width/.initial=.7}
-\ctikzset{tripoles/pjfet/gate height/.initial=.5}
-\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/pjfet/gate width/.initial=.5}
-\ctikzset{tripoles/pjfet/conn height/.initial=.35}
-\ctikzset{tripoles/pjfet/height/.initial=1.1}
-\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/isfet/width/.initial=1}
-\ctikzset{tripoles/isfet/gate height/.initial=.35}
-\ctikzset{tripoles/isfet/base height/.initial=.5}
-\ctikzset{tripoles/isfet/height/.initial=1.1}
-\ctikzset{tripoles/isfet/base width/.initial=.3}
-\ctikzset{tripoles/isfet/gate width/.initial=.5}
-\ctikzset{tripoles/isfet/conn height/.initial=0}
-\ctikzset{tripoles/isfet/wave width/.initial=.16}
-\ctikzset{tripoles/isfet/wave amp/.initial=.06}
-\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
-\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
-\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/isfet/curr direction/.initial=1}
-
-\newif\ifpgf@circuit@europeanlogicport
-\ctikzset{logic ports/.is choice}
-\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue } }
-\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse } }
-
-
-\ctikzset{tripoles/american and port/width/.initial=1.1}
-\ctikzset{tripoles/american and port/height/.initial=.8}
-\ctikzset{tripoles/american and port/port width/.initial=.7}
-\ctikzset{tripoles/american and port/input height/.initial=.5}
-\ctikzset{tripoles/american nand port/width/.initial=1.1}
-\ctikzset{tripoles/american nand port/height/.initial=.8}
-\ctikzset{tripoles/american nand port/port width/.initial=.7}
-\ctikzset{tripoles/american nand port/circle width/.initial=.15}
-\ctikzset{tripoles/american nand port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/width/.initial=1.1}
-\ctikzset{tripoles/american or port/height/.initial=.8}
-\ctikzset{tripoles/american or port/port width/.initial=.7}
-\ctikzset{tripoles/american or port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/input skip/.initial=.25}
-\ctikzset{tripoles/american or port/aaa/.initial=.6}
-\ctikzset{tripoles/american or port/bbb/.initial=.4}
-\ctikzset{tripoles/american or port/ccc/.initial=.5}
-\ctikzset{tripoles/american or port/ddd/.initial=.0}
-\ctikzset{tripoles/american nor port/width/.initial=1.1}
-\ctikzset{tripoles/american nor port/height/.initial=.8}
-\ctikzset{tripoles/american nor port/port width/.initial=.7}
-\ctikzset{tripoles/american nor port/input height/.initial=.5}
-\ctikzset{tripoles/american nor port/input skip/.initial=.25}
-\ctikzset{tripoles/american nor port/circle width/.initial=.15}
-\ctikzset{tripoles/american nor port/aaa/.initial=.6}
-\ctikzset{tripoles/american nor port/bbb/.initial=.4}
-\ctikzset{tripoles/american nor port/ccc/.initial=.5}
-\ctikzset{tripoles/american nor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xor port/width/.initial=1.1}
-\ctikzset{tripoles/american xor port/height/.initial=.8}
-\ctikzset{tripoles/american xor port/port width/.initial=.7}
-\ctikzset{tripoles/american xor port/input height/.initial=.5}
-\ctikzset{tripoles/american xor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xor port/distance/.initial=.1}
-\ctikzset{tripoles/american xor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xnor port/width/.initial=1.1}
-\ctikzset{tripoles/american xnor port/height/.initial=.8}
-\ctikzset{tripoles/american xnor port/port width/.initial=.7}
-\ctikzset{tripoles/american xnor port/input height/.initial=.5}
-\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xnor port/distance/.initial=.1}
-\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
-\ctikzset{tripoles/european and port/width/.initial=1.4}
-\ctikzset{tripoles/european and port/height/.initial=.65}
-\ctikzset{tripoles/european and port/reserved/.initial=.6}
-\ctikzset{tripoles/european and port/input height/.initial=.6}
-\ctikzset{tripoles/european or port/width/.initial=1.4}
-\ctikzset{tripoles/european or port/height/.initial=.65}
-\ctikzset{tripoles/european or port/reserved/.initial=.6}
-\ctikzset{tripoles/european or port/input height/.initial=.6}
-\ctikzset{tripoles/european xor port/width/.initial=1.4}
-\ctikzset{tripoles/european xor port/height/.initial=.65}
-\ctikzset{tripoles/european xor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xor port/input height/.initial=.6}
-\ctikzset{tripoles/european nand port/width/.initial=1.4}
-\ctikzset{tripoles/european nand port/not height/.initial=.3}
-\ctikzset{tripoles/european nand port/not width/.initial=.8}
-\ctikzset{tripoles/european nand port/height/.initial=.65}
-\ctikzset{tripoles/european nand port/reserved/.initial=.6}
-\ctikzset{tripoles/european nand port/input height/.initial=.6}
-\ctikzset{tripoles/european not port/width/.initial=1.4}
-\ctikzset{tripoles/european not port/not height/.initial=.3}
-\ctikzset{tripoles/european not port/not width/.initial=.8}
-\ctikzset{tripoles/european not port/height/.initial=.65}
-\ctikzset{tripoles/european not port/reserved/.initial=.6}
-\ctikzset{tripoles/european not port/input height/.initial=0}
-\ctikzset{tripoles/european xnor port/width/.initial=1.4}
-\ctikzset{tripoles/european xnor port/not height/.initial=.3}
-\ctikzset{tripoles/european xnor port/not width/.initial=.8}
-\ctikzset{tripoles/european xnor port/height/.initial=.65}
-\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xnor port/input height/.initial=.6}
-\ctikzset{tripoles/european nor port/width/.initial=1.4}
-\ctikzset{tripoles/european nor port/not height/.initial=.3}
-\ctikzset{tripoles/european nor port/not width/.initial=.8}
-\ctikzset{tripoles/european nor port/height/.initial=.65}
-\ctikzset{tripoles/european nor port/reserved/.initial=.6}
-\ctikzset{tripoles/european nor port/input height/.initial=.6}
-\ctikzset{tripoles/op amp/width/.initial=1.7}
-\ctikzset{tripoles/op amp/port width/.initial=.7}
-\ctikzset{tripoles/op amp/height/.initial=1.4}
-\ctikzset{tripoles/op amp/input height/.initial=.5}
-\ctikzset{tripoles/op amp/up pos/.initial=.45}
-\ctikzset{tripoles/op amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolut font size needed!
-\ctikzset{tripoles/en amp/width/.initial=1.7}
-\ctikzset{tripoles/en amp/port width/.initial=.7}
-\ctikzset{tripoles/en amp/height/.initial=1.6}
-\ctikzset{tripoles/en amp/input height/.initial=.3}
-\ctikzset{tripoles/en amp/up pos/.initial=.45}
-\ctikzset{tripoles/en amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolut font size needed!
-\ctikzset{tripoles/en amp/font2/.initial= \fontsize{14}{0}\selectfont\boldmath}%absolut font size needed!
-\ctikzset{tripoles/gm amp/width/.initial=1.7}
-\ctikzset{tripoles/gm amp/port width/.initial=.7}
-\ctikzset{tripoles/gm amp/height/.initial=1.4}
-\ctikzset{tripoles/gm amp/input height/.initial=.5}
-\ctikzset{tripoles/gm amp/up pos/.initial=.45}
-\ctikzset{tripoles/plain amp/width/.initial=1.7}
-\ctikzset{tripoles/plain amp/port width/.initial=.7}
-\ctikzset{tripoles/plain amp/height/.initial=1.4}
-\ctikzset{tripoles/plain amp/input height/.initial=.5}
-\ctikzset{tripoles/plain amp/up pos/.initial=.45}
-
-\ctikzset{tripoles/thyristor/height/.initial=1.10}
-\ctikzset{tripoles/thyristor/height 2/.initial=.5}
-\ctikzset{tripoles/thyristor/width/.initial=1.0}
-\ctikzset{tripoles/thyristor/diode height/.initial=.5}
-\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
-\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
-\ctikzset{tripoles/triac/height/.initial=1.1}
-\ctikzset{tripoles/triac/width/.initial=1}
-\ctikzset{tripoles/triac/diode width left/.initial=.3}
-\ctikzset{tripoles/triac/diode width right/.initial=.3}
-
-\ctikzset{tripoles/spdt/width/.initial=.85}
-\ctikzset{tripoles/spdt/height/.initial=.45}
-\ctikzset{tripoles/spdt/margin/.initial=.45}
-
-\ctikzset{tripoles/toggleswitch/height/.initial=.8}
-\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
-\ctikzset{tripoles/toggleswitch/width/.initial=.80}
-
-\ctikzset{tripoles/mixer/width/.initial=0.7}
-\ctikzset{tripoles/adder/width/.initial=0.7}
-\ctikzset{tripoles/circulator/width/.initial=.7}
-\ctikzset{tripoles/oscillator/width/.initial=.7}
-
-
-\ctikzset{tripoles/wilkinson/height/.initial=1.3}
-\ctikzset{tripoles/wilkinson/width/.initial=1.3}
-
-\ctikzset{quadpoles/transformer/width/.initial=1.5}
-\ctikzset{quadpoles/transformer/width1/.initial=.4}
-\ctikzset{quadpoles/transformer/height/.initial=1.5}
-\ctikzset{quadpoles/transformer/height1/.initial=.8}
-\ctikzset{quadpoles/transformer core/width/.initial=1.5}
-\ctikzset{quadpoles/transformer core/height/.initial=1.5}
-\ctikzset{quadpoles/transformer core/core height/.initial=.5}
-\ctikzset{quadpoles/transformer core/core width/.initial=.05}
-\ctikzset{quadpoles/gyrator/width/.initial=1.5}
-\ctikzset{quadpoles/gyrator/height/.initial=1.5}
-\ctikzset{quadpoles/fourport/width/.initial=1.3}
-\ctikzset{quadpoles/fourport/height/.initial=1.3}
-\ctikzset{quadpoles/coupler/width/.initial=1.3}
-\ctikzset{quadpoles/coupler/height/.initial=1.3}
-\ctikzset{quadpoles/coupler2/width/.initial=1.3}
-\ctikzset{quadpoles/coupler2/height/.initial=1.3}
-
-\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
-
-
-% %Mechanical section
-\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
-\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
-\ctikzset{bipoles/spring/height/.initial=.5}
-\ctikzset{bipoles/spring/width/.initial=.5}
-\ctikzset{bipoles/mass/height/.initial=.55}
-\ctikzset{bipoles/mass/box height/.initial=.4}
-\ctikzset{bipoles/mass/width/.initial=.5}
-
-\ctikzset{bipoles/damper/height/.initial=.35}
-\ctikzset{bipoles/damper/length/.initial=.3}
-\ctikzset{bipoles/damper/width/.initial=.4}
-
-
-\ctikzset{bipole/.is family}
-\ctikzset{bipole/kind/.initial = }
-\ctikzset{bipole/name/.initial = }
-\newif\ifpgf@circuit@bipole@isvoltage
-\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
-\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
-\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
-\newif\ifpgf@circuit@bipole@strokedsymbol
-\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
-\newif\ifpgf@circuit@bipole@iscurrent
-\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
-
-\ctikzset{bipole/voltage/.is family}
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-\newif\ifpgf@circuit@bipole@voltage@below
-\ctikzset{bipole/voltage/position/.is choice}
-\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
-\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
-
-\ctikzset{bipole/voltage/label/unit/.initial=}
-\ctikzset{bipole/voltage/label/name/.initial=}
-
-\ctikzset{bipole/current/.is family}
-\newif\ifpgf@circuit@bipole@current@backward
-\ctikzset{bipole/current/direction/.is choice}
-\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
-\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
-\newif\ifpgf@circuit@bipole@current@before
-\ctikzset{bipole/current/x position/.is choice}
-\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
-\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
-\newif\ifpgf@circuit@bipole@current@below
-\ctikzset{bipole/current/y position/.is choice}
-\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
-\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
-\ctikzset{bipole/current/label/unit/.initial=}
-\ctikzset{bipole/current/label/name/.initial=}
-
-\ctikzset{bipole/flow/.is family}
-\newif\ifpgf@circuit@bipole@flow@backward
-\ctikzset{bipole/flow/direction/.is choice}
-\ctikzset{bipole/flow/direction/forward/.code={\pgf@circuit@bipole@flow@backwardfalse}}
-\ctikzset{bipole/flow/direction/backward/.code={\pgf@circuit@bipole@flow@backwardtrue}}
-\newif\ifpgf@circuit@bipole@flow@before
-\ctikzset{bipole/flow/x position/.is choice}
-\ctikzset{bipole/flow/x position/after/.code={\pgf@circuit@bipole@flow@beforefalse}}
-\ctikzset{bipole/flow/x position/before/.code={\pgf@circuit@bipole@flow@beforetrue}}
-\newif\ifpgf@circuit@bipole@flow@below
-\ctikzset{bipole/flow/y position/.is choice}
-\ctikzset{bipole/flow/y position/above/.code={\pgf@circuit@bipole@flow@belowfalse}}
-\ctikzset{bipole/flow/y position/below/.code={\pgf@circuit@bipole@flow@belowtrue}}
-\ctikzset{bipole/flow/label/unit/.initial=}
-\ctikzset{bipole/flow/label/name/.initial=}
-\ctikzset{flow/distance/.initial = .5}
-\ctikzset{flow/offset/.initial = .2}%distance between flow-arrow and conductor
-
-
-\ctikzset{bipole/label/.is family}
-\ctikzset{bipole/label/position/.initial=90}
-\ctikzset{bipole/label/unit/.initial=}
-\ctikzset{bipole/label/name/.initial=}
-\ctikzset{bipole/annotation/.is family}
-\ctikzset{bipole/annotation/position/.initial=-90}
-\ctikzset{bipole/annotation/unit/.initial=}
-\ctikzset{bipole/annotation/name/.initial=}
-\ctikzset{bipole/nodes/.is family}
-\ctikzset{bipole/nodes/left/.is choice}
-\ctikzset{bipole/nodes/left/none/.code={\ctikzsetvalof{bipole/nodes/left}{none}}}
-\ctikzset{bipole/nodes/left/empty/.code={\ctikzsetvalof{bipole/nodes/left}{empty}}}
-\ctikzset{bipole/nodes/left/full/.code={\ctikzsetvalof{bipole/nodes/left}{full}}}
-\ctikzset{bipole/nodes/left/diamond/.code={\ctikzsetvalof{bipole/nodes/left}{diamond}}}
-\ctikzset{bipole/nodes/left/rectjoinfill/.code={\ctikzsetvalof{bipole/nodes/left}{rectjoinfill}}}
-\ctikzset{bipole/nodes/right/.is choice}
-\ctikzset{bipole/nodes/right/none/.code={\ctikzsetvalof{bipole/nodes/right}{none}}}
-\ctikzset{bipole/nodes/right/empty/.code={\ctikzsetvalof{bipole/nodes/right}{empty}}}
-\ctikzset{bipole/nodes/right/full/.code={\ctikzsetvalof{bipole/nodes/right}{full}}}
-\ctikzset{bipole/nodes/right/diamond/.code={\ctikzsetvalof{bipole/nodes/right}{diamond}}}
-\ctikzset{bipole/nodes/right/rectjoinfill/.code={\ctikzsetvalof{bipole/nodes/right}{rectjoinfill}}}
-
-
-
-
-\newif\ifpgf@circuit@europeanresistor
-\ctikzset{resistor/.is choice}
-\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
-\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
-
-\ctikzset{inductor/.is choice}
-\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
-\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
-\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
-
-\newif\ifpgf@circuit@strokediode
-\newif\ifpgf@circuit@fulldiode
-\pgf@circuit@strokediodefalse
-\pgf@circuit@fulldiodefalse
-
-\ctikzset{diode/.is choice}
-\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
-\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
-\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
-
-\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full }}
-\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty }}
-\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke }}
-
-\ctikzset{thickness/.initial=2}
-\ctikzset{color/.initial=black}
-\pgfkeys{/tikz/color/.add code={}{\ctikzset{color={#1}}}}
-
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circ@siunitx@res
-
-\ctikzset{straight/.is choice}
-\ctikzset{straightvoltage value/.initial=true}
-\ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}}
-\ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}}
-\ctikzset{straightvoltage/.style = {/tikz/circuitikz/straight=true}}
-\newif\ifpgf@circuit@bipole@voltage@straight
-\ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight}
-
-
-\ctikzset{voltage/.is family}
-\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
-\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
-\ctikzset{voltage/bump a/.initial=1.2}
-\ctikzset{voltage/bump b/.initial=1.5}
-\ctikzset{voltage/european label distance/.initial=1.4}
-\ctikzset{voltage/american label distance/.initial=1.1}
-% special cases
-\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
-\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
-\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
-\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
-\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
-%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
-%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
-
-\ctikzset{current/.is family}
-\ctikzset{current/distance/.initial = .5}
-
-
-\tikzset{american currents/.style = { \circuitikzbasekey/current = american } }
-\tikzset{european currents/.style = { \circuitikzbasekey/current = european } }
-\tikzset{american voltages/.style = { \circuitikzbasekey/voltage = american } }
-\tikzset{european voltages/.style = { \circuitikzbasekey/voltage = european } }
-\tikzset{american resistors/.style = { \circuitikzbasekey/resistor = american } }
-\tikzset{european resistors/.style = { \circuitikzbasekey/resistor = european } }
-
-\newif\ifpgf@circuit@europeangfsurgearrester
-\ctikzset{gas filled surge arrester choice/.is choice}
-\ctikzset{gas filled surge arrester choice/european/.code= {\pgf@circuit@europeangfsurgearrestertrue } }
-\ctikzset{gas filled surge arrester choice/american/.code= {\pgf@circuit@europeangfsurgearresterfalse } }
-
-\tikzset{american gas filled surge arrester set/.style = { \circuitikzbasekey/gas filled surge arrester choice=american } }
-\tikzset{european gas filled surge arrester set/.style = { \circuitikzbasekey/gas filled surge arrester choice=european } }
-\tikzset{american inductors/.style = { \circuitikzbasekey/inductor = american } }
-\tikzset{european inductors/.style = { \circuitikzbasekey/inductor = european } }
-\tikzset{cute inductors/.style = { \circuitikzbasekey/inductor = cute } }
-\tikzset{american ports/.style = { \circuitikzbasekey/logic ports = american } }
-\tikzset{european ports/.style = { \circuitikzbasekey/logic ports = european } }
-\tikzset{european/.style = { european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester set} }
-\tikzset{american/.style = { american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester set} }
-\tikzset{cute/.style = { european currents, european voltages, american resistors, cute inductors, american ports } }
-
-% I should try to make the tree clearer (this voltaege conflicts with the options above)
-
-\newif\ifpgf@circuit@europeanvoltage
-\ctikzset{voltage/.is choice}
-\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse } }
-\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue } }
-
-\newif\ifpgf@circuit@europeancurrent
-\ctikzset{current/.is choice}
-\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse }
-\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue }
-
-\ctikzset{label/align/.is choice}
-\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
-\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
-\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
-
-%%%%%%%%%% new
-\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
-%%%---------- close: tex/pgfcirc.defines
-%%%%%%%%%%% Springe nach tex/pgfcircutils
-%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%\def\pgf@circ@handleSI#1{%
- % \pgf@circ@siunitx@resfalse
-%
- % \edef\len{\stringlength[e]{#1}}
- %\testmatchingchar[e]{#1}{\len}{>}%
- %\ifmatchingchar%
- % \ifnum\findchars{#1}{<}=0
- % \def\pgf@circ@handleSI@val{\substring{#1}{1}{\findchars{#1}{<}-1}}
- %\def\pgf@circ@handleSI@unit{\substring{#1}{\findchars{#1}{<}-1}+1}{\stringlength{#1}}
- %\pgf@circ@siunitx@restrue
-% \else
-% \fi
- %\else
- %\fi
-%}
-
-\def\pgf@circ@handleSI#1{
- \noexpandarg
- \def\pgf@temp{}
- \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
- \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
-
- \ifnum\pgf@circ@handleSI@unit@len=0
- \pgf@circ@siunitx@resfalse
- \else
- \IfEndWith{#1}{>}{
- \pgf@circ@siunitx@restrue
- \noexpandarg
- \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
- %\typeout{si |#1|}
- }{
- \pgf@circ@siunitx@resfalse
- %\typeout{no si |#1|}
- }
- \fi
-}
-
-\def\pgf@circ@ifkeyempty#1{
- \pgfextra{
- \ctikzset{#1/.get=\pgf@circ@temp}
- \edef\pgf@temp{}
- }
- \ifx\pgf@circ@temp\pgf@temp
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Math routines
-
-\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
-
-
-%%%---------- close: tex/pgfcircutils
-
-%%%%%%%%%%% Springe nach tex/pgfcircshapes
-%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Other shapes
-
-
-%% Nothing
-
-\pgfdeclareshape{emptyshape}{
- \savedanchor{\northeast}{%
- \pgf@x=.5\wd\pgfnodeparttextbox%
- \pgf@y=.5\ht\pgfnodeparttextbox%
- }
- \anchor{north}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{east}{%
- \northeast
- \pgf@y=0cm
- }
- \anchor{south}{%
- \northeast
- \pgf@y=-\pgf@y
- \pgf@x=0cm
- }
- \anchor{west}{
- \northeast
- \pgf@y=0cm
- \pgf@x=-\pgf@x
- }
- \anchor{text}{%
- \pgfpointorigin
- }
- \anchor{center}{
- \pgfpointorigin
- }
-}
-
-%% Full terminal
-
-\pgfdeclareshape{circ}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
-}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}}
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Empty terminal
-
-\pgfdeclareshape{ocirc}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
-}{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}}
- }
-
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetfillcolor{white}
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Diamond terminal
-
-\pgfdeclareshape{diamondpole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
- \pgftransformrotate{45}
- \pgfpathrectanglecorners
- {\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@temp}{\pgf@circ@res@up+\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up-\pgf@circ@res@temp}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% Fill for correct rectangular joins
-
-\pgfdeclareshape{rectjoinfill}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfpathrectanglecorners
- {\pgfpoint{0}{.5\pgflinewidth}}
- {\pgfpoint{0}{-.5\pgflinewidth}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-
-%% Current arrow
-
-\pgfdeclareshape{currarrow}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{tip}{
- \pgfpointorigin
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 16
- \pgf@x =\pgf@circ@res@step
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 16
-
- \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
-
- \endpgfscope
- }
-
-}
-
-%% Flow arrow
-
-\pgfdeclareshape{flowarrow}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{tip}{
- \pgfpointorigin
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 16
- \pgf@x =\pgf@circ@res@step
- }
- \behindforegroundpath{
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 4
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfnode{currarrow}{tip}{}{}{\pgfusepath{fill}}
- \endpgfscope
- }
-}
-
-%% Input arrow
-
-\pgfdeclareshape{inputarrow}{
- \savedanchor{\tip}{
- \pgfpointorigin
- }
- \anchor{center}{
- \tip
- }
- \anchor{tip}{
- \tip
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 16
-
- \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{fill}
-
- \endpgfscope
- }
-
-}
-
-
-%% box
-
-\pgfdeclareshape{box}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@circ@res@step = 0.5\pgf@circ@res@step
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-
-}
-
-%%%---------- close: tex/pgfcircshapes
-%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
-%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Monopoles
-
-%% Ground symbol
-
-\pgfdeclareshape{ground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-
-}
-
-
-
-\pgfdeclareshape{rground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{tground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- %\pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{sground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
- \pgfpathclose
- \pgfusepath{draw}
-
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-
-}
-
-% noiseless ground
-\pgfdeclareshape{nground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{1.3\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpatharc{0}{180}{1.3\pgf@circ@res@step}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \endpgfscope
- }
-}
-
-% protective ground
-\pgfdeclareshape{pground}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- %\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathcircle{\pgfpoint{0pt}{-\pgf@circ@res@step}} {1.2\pgf@circ@res@step}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \endpgfscope
- }
-}
-
-% chassis ground
-\pgfdeclareshape{cground}{
-\anchor{center}{
- \pgfpointorigin
-}
-\behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/chassis/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-1.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% Contributed by Leonardo Azzinnari
-\pgfdeclareshape{tlinestub}{
- \anchor{center}{\pgfpointorigin}
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
-
- \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-
-
-
-\pgfdeclareshape{antenna}{
-\anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
- \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=6\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
-
- % \pgfpathmoveto{\pgfpointorigin}
- % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- % \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- % \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgftransformxshift{ -4\pgf@circ@res@step }
-
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
- }
-
-
-\pgfdeclareshape{txantenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
- \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=6\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
-% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
- }
-
-
-\pgfdeclareshape{rxantenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
- \pgf@x=5\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=6\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
-% \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
-}
-
-% Vcc
-\pgfdeclareshape{vcc}{
-\anchor{center}{\pgfpointorigin}
-\anchor{text}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=2\pgf@circ@res@step
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
-\behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
-}
-
-}
-
-% Vee
-\pgfdeclareshape{vee}{
-\anchor{center}{\pgfpointorigin}
-\anchor{text}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=-2\pgf@circ@res@step
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
-
-\behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
-}
-
-}
-
-
-% match
-\pgfdeclareshape{match}{
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
- \pgf@x=1.5\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \pgf@y=-1.5\ht\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
- \pgfusepath{fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-
-}
-
-
-%%%---------- close: tex/pgfcircmonopoles
-%%%%%%%%%%% Springe nach tex/pgfcircbipoles
-%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%% Generic macro for defining a bipole shape
-% #1 - additional anchors
-% #2 - lower y-size of the bipole (from the center).
-% #3 - #shape is the name of the shape
-% #4 - upper y-size of the bipole (from the center)
-% #5 - width of the bipole
-% #6 - macros drawing the bipole
-
-
-\long\def\pgfcircdeclarebipole#1#2#3#4#5#6{
- \pgfdeclareshape{#3shape}{
-
- \savedanchor{\northeast}{
- \pgf@y=#4\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\northeastborder}{
- \pgf@y=#4\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwestborder}{
- \pgf@y=-#2\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=-#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwest}{
- \pgf@y=-#2\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\centerpoint}{
- \pgf@circ@res@down=-#2\pgf@circ@Rlen
- \pgf@circ@res@up=#4\pgf@circ@Rlen
- \pgfpointorigin
- \pgf@y=\pgf@circ@res@up
- \advance\pgf@y by\pgf@circ@res@down
- \pgf@y=.5\pgf@y
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{n}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{ne}{
- \northeast
- }
- \anchor{nw}{
- \northeast
- \pgf@x=-\pgf@x
- }
- \anchor{e}{%
- \northeast
- \pgf@y=0cm
- }
- \anchor{s}{%
- \southwest
- \pgf@x=0cm
- }
- \anchor{se}{%
- \southwest
- \pgf@x=-\pgf@x
- }
- \anchor{sw}{%
- \southwest
- }
- \anchor{w}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{north}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{east}{%
- \northeast
- \pgf@y=0cm
- }
- \anchor{south}{%
- \southwest
- \pgf@x=0cm
- }
- \anchor{west}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{right}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{above}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{left}{%
- \southwest
- \pgf@y=0cm
- }
- \anchor{below}{%
- \southwest
- \pgf@x=0cm
- }
- \anchor{a}{%
- \northeast
- \pgf@y=0cm
- }
- \anchor{b} {
- \southwest
- \pgf@y=0cm
- }
- \savedanchor{\textanchor}{%
- \pgf@y=\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \anchor{text}{%
- \textanchor
- }
- \anchorborder{%
- \ifpgf@circuit@bipole@inverted
- \pgf@circ@res@left=-\pgf@x
- \pgf@circ@res@right=-\pgf@y
- \else
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@right=\pgf@y
- \fi
- \ifdim\pgf@circ@res@right>0cm
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
- \else
- \southwestborder
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
- \fi
- }
-
- #1
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@zero = 0cm
- \pgf@circ@res@left = -\pgf@x
- \pgf@circ@res@right = \pgf@x
- \southwest
- \pgf@circ@res@down = \pgf@y
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- #6
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- }
- }
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Standard bipole shapes declarations
-
-%% Resistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/resistor/height}}{resistor}{\ctikzvalof{bipoles/resistor/height}}{\ctikzvalof{bipoles/resistor/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \divide \pgf@circ@res@step by 12
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-}
-
-
-
-%% Variable resistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vresistor/height}}{vresistor}{\ctikzvalof{bipoles/vresistor/height}}{\ctikzvalof{bipoles/vresistor/width}}{ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \divide \pgf@circ@res@step by 12
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
-
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-%% Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/capacitor/height}}{capacitor}{\ctikzvalof{bipoles/capacitor/height}}{\ctikzvalof{bipoles/capacitor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/capacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-%% Polar Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pcapacitor/height}}{polarcapacitor}{\ctikzvalof{bipoles/pcapacitor/height}}{\ctikzvalof{bipoles/pcapacitor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/pcapacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgftransformrotate{-90}
- \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
-}
-
-%% Electrolytic Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ecapacitor/height}}{ecapacitor}{\ctikzvalof{bipoles/ecapacitor/height}}{\ctikzvalof{bipoles/ecapacitor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/ecapacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
- \pgfsetrectcap
- % % % Draw plus pole
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfsetfillcolor{white}
- \pgfusepath{draw,fill}
- % % Draw minus pole
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfsetfillcolor{black}
- \pgfusepath{draw,fill}
- \pgfsetfillcolor{black}
- % % plus pole annotation
- \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
- {\pgfkeysvalueof{/tikz/circuitikz/bipoles/ecapacitor/font} $+$}
-}
-
-%% Battery
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery/height}}{battery}{\ctikzvalof{bipoles/battery/height}}{\ctikzvalof{bipoles/battery/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 6
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-
-%% Battery 1 % poles with equl thickness
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery1/height}}{battery1}{\ctikzvalof{bipoles/battery1/height}}{\ctikzvalof{bipoles/battery1/width}}{
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Battery 2 % negative pole thicker
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery2/height}}{battery2}{\ctikzvalof{bipoles/battery2/height}}{\ctikzvalof{bipoles/battery2/width}}{
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{3\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-%% cute inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cuteinductor/lower coil height}}{cuteinductor}{\ctikzvalof{bipoles/cuteinductor/height}}{\ctikzvalof{bipoles/cuteinductor/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% variable cute inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}{vcuteinductor}{\ctikzvalof{bipoles/vcuteinductor/height}}{\ctikzvalof{bipoles/vcuteinductor/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% american inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/americaninductor/height 2}}{americaninductor}{\ctikzvalof{bipoles/americaninductor/height}}{\ctikzvalof{bipoles/americaninductor/width}}{
- \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@Rlen
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% variable american inductor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vamericaninductor/height 2}}{vamericaninductor}{\ctikzvalof{bipoles/vamericaninductor/height}}{\ctikzvalof{bipoles/vamericaninductor/width}}{
- \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@Rlen
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/vamericaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% Independent voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsource/height}}{vsource}{\ctikzvalof{bipoles/vsource/height}}{\ctikzvalof{bipoles/vsource/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-%% Independent voltage source - American style
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourceam/height}}{vsourceAM}{\ctikzvalof{bipoles/vsourceam/height}}{\ctikzvalof{bipoles/vsourceam/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$-$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$+$}
- \fi
-}
-
-
-
-%% Independent sinusoidal voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesin/height}}{vsourcesin}{\ctikzvalof{bipoles/vsourcesin/height}}{\ctikzvalof{bipoles/vsourcesin/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Triangle Voltage source - contributed by Ralf Farkas
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-% Square Voltage source - contributed by Alistair Kwan
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcesquare/height}}{vsourcesquare}{\ctikzvalof{bipoles/vsourcesquare/height}}{\ctikzvalof{bipoles/vsourcesquare/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Triangle Voltage source - contributed by Ralf Farkas
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vsourcetri/height}}{vsourcetri}{\ctikzvalof{bipoles/vsourcetri/height}}{\ctikzvalof{bipoles/vsourcetri/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% Empty Source
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% PV Source
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pvsource/height}}{pvsource}{\ctikzvalof{bipoles/pvsource/height}}{\ctikzvalof{bipoles/pvsource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %Arrow Part
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty Source
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/esource/height}}{esource}{\ctikzvalof{bipoles/esource/height}}{\ctikzvalof{bipoles/esource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% DC Current Source with open shape
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcisource/height}}{dcisource}{\ctikzvalof{bipoles/dcisource/height}}{\ctikzvalof{bipoles/dcisource/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}}\pgfpatharc{0}{90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}}\pgfpatharc{0}{-90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}\pgfpatharc{180}{270}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}\pgfpatharc{180}{90}{0.85\pgf@circ@res@right and \pgf@circ@res@up}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
-
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% DC-Voltage source
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dcvsource/height}}{dcvsource}{\ctikzvalof{bipoles/dcvsource/height}}{\ctikzvalof{bipoles/dcvsource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
- \pgfusepath{draw}
-}
-
-
-%% Independent current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isource}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Independent double oo source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/oosource/height}}{oosource}{\ctikzvalof{bipoles/oosource/height}}{\ctikzvalof{bipoles/oosource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
- \pgfusepath{draw}
-}
-
-
-%% Independent current source - American
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isourceam/height}}{isourceAM}{\ctikzvalof{bipoles/isourceam/height}}{\ctikzvalof{bipoles/isourceam/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-
-%% Independent sinusoidal current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/isource/height}}{isourcesin}{\ctikzvalof{bipoles/isource/height}}{\ctikzvalof{bipoles/isource/width}}{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-
-%% Controlled voltage source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsource/height}}{cvsource}{\ctikzvalof{bipoles/cvsource/height}}{\ctikzvalof{bipoles/cvsource/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% Controlled voltage source - American
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourceam/height}}{cvsourceAM}{\ctikzvalof{bipoles/cvsourceam/height}}{\ctikzvalof{bipoles/cvsourceam/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$-$}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$-$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$+$}
- \fi
-}
-
-
-%% Controlled sinusoidal voltage source
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cvsourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-%% Controlled sinusoidal current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cvsourcesin/height}}{cisourcesin}{\ctikzvalof{bipoles/cvsourcesin/height}}{\ctikzvalof{bipoles/cvsourcesin/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-%% Controlled current source
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisource/height}}{cisource}{\ctikzvalof{bipoles/cisource/height}}{\ctikzvalof{bipoles/cisource/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% Controlled current source - American
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/cisourceam/height}}{cisourceAM}{\ctikzvalof{bipoles/cisourceam/height}}{\ctikzvalof{bipoles/cisourceam/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% Black generic diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulldiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black Zener diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black alternative zigzag Zener diode
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black Schottky diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullsdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Black tunnel diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulltdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black light emitting diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fulllediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-}
-
-%% Black photodiode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{fullpdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black varcap
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varcap/height}}{fullvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
- \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgfsetlinewidth{\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfusepath{draw,fill}
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty generic diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptydiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty Zener diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty alternative zigzag Zener diode
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptyzzdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-%% Empty Schottky diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptysdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty tunnel diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptytdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty light emitting diode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptylediode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty photodiode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/diode/height}}{emptypdiode}{\ctikzvalof{bipoles/diode/height}}{\ctikzvalof{bipoles/diode/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latex'}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty varcap
-
-\pgfcircdeclarebipole{
- \anchor{strokepathstart}{
- \northeast
- \pgf@y=0cm
- \advance\pgf@x by -\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth
- \advance\pgf@x by -\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth
- }
- \anchor{strokepathend}{
- \northeast
- \pgf@y=0cm
- }
- }{\ctikzvalof{bipoles/varcap/height}}{emptyvarcap}{\ctikzvalof{bipoles/varcap/height}}{\ctikzvalof{bipoles/varcap/width}}{
- \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgfsetlinewidth{\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfusepath{draw}
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% (Closing) SPST
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spst/depth}}{cspst}{\ctikzvalof{bipoles/spst/height}}{\ctikzvalof{bipoles/spst/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsstart{latex'}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0\pgf@circ@res@down}}
- \pgfpatharcto{1.2\pgf@circ@res@right}{1.2\pgf@circ@res@right}{0}{0}{1}{\pgfpoint{.9\pgf@circ@res@left}{.9\pgf@circ@res@up}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-}
-
-%% Opening SPST
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spst/depth}}{ospst}{\ctikzvalof{bipoles/spst/height}}{\ctikzvalof{bipoles/spst/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfpatharcto{1.1\pgf@circ@res@right}{1.1\pgf@circ@res@right}{0}{0}{1}{\pgfpoint{.7\pgf@circ@res@left}{.9\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@left}{1\pgf@circ@res@up}}
- \pgfsetarrowsend{latex'}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-}
-
-%% Normal open Switch
-\pgfcircdeclarebipole{}{0}{nos}{\ctikzvalof{bipoles/nos/height}}{\ctikzvalof{bipoles/nos/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{draw}
-}
-
-%% Normal closed Switch
-\pgfcircdeclarebipole{}{0}{ncs}{\ctikzvalof{bipoles/ncs/height}}{\ctikzvalof{bipoles/ncs/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Push Button
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/pushbutton/height 2}}{pushbutton}{\ctikzvalof{bipoles/pushbutton/height}}{\ctikzvalof{bipoles/pushbutton/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-
-% % METERINGSHAPE
-\long\def\drawmeteringcircle{
- \def\pgf@circ@temp{right}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \def\pgf@circ@temp{below}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \pgf@circ@res@step=1.2\pgf@circ@res@up
- \fi
- \fi
- %draw connections to circle
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- %draw circle
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgfusepath{draw}
- \endpgfscope
- %draw arrow
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-%AMPEREMETER
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ammeter/height}}{ammeter}{\ctikzvalof{bipoles/ammeter/height}}{\ctikzvalof{bipoles/ammeter/width}}{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\textbf{A}}{}{}
-}
-%OHMMETER
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ohmmeter/height}}{ohmmeter}{\ctikzvalof{bipoles/ohmmeter/height}}{\ctikzvalof{bipoles/ohmmeter/width}}{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
-}
-%VOLTMETER
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/voltmeter/height}}{voltmeter}{\ctikzvalof{bipoles/voltmeter/height}}{\ctikzvalof{bipoles/voltmeter/width}}{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\textbf{V}}{}{}
-
-}
-
-%% Short circuit
-
-\pgfcircdeclarebipole{}{0}{short}{0}{0}{ }
-
-%% Open circuit
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/open/height}}{open}{\ctikzvalof{bipoles/open/height}}{\ctikzvalof{bipoles/open/width}}{
-
-}
-
-%% Generic bipole - used as resistor by some (bleah)
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/generic/height}}{generic}{\ctikzvalof{bipoles/generic/height}}{\ctikzvalof{bipoles/generic/width}}{
-
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-}
-
-
-%% fuse
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fuse/height}}{fuse}{\ctikzvalof{bipoles/fuse/height}}{\ctikzvalof{bipoles/fuse/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-}
-
-
-
-%% Generic bipole, filled - used as inductor by some (bleah)
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fullgeneric/height}}{fullgeneric}{\ctikzvalof{bipoles/fullgeneric/height}}{\ctikzvalof{bipoles/fullgeneric/width}}{
-
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw,fill}
-}
-
-
-%% Generic asymmetric bipole
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/ageneric/height}}{ageneric}{\ctikzvalof{bipoles/ageneric/height}}{\ctikzvalof{bipoles/ageneric/width}}{
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-%% asymmetric fuse
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/afuse/height}}{afuse}{\ctikzvalof{bipoles/afuse/height}}{\ctikzvalof{bipoles/afuse/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-
-
-%% Memristor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/memristor/height}}{memristor}{\ctikzvalof{bipoles/memristor/height}}{\ctikzvalof{bipoles/memristor/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-
-
-%% Generic empty tunable
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tgeneric/height}}{tgeneric}{\ctikzvalof{bipoles/tgeneric/height}}{\ctikzvalof{bipoles/tgeneric/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Photoresistor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/photoresistor/height 2}}{photoresistor}{\ctikzvalof{bipoles/photoresistor/height}}{\ctikzvalof{bipoles/photoresistor/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-%% Thermistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistor/height}}{thermistor}{\ctikzvalof{bipoles/thermistor/height}}{\ctikzvalof{bipoles/thermistor/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- %\pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- %\endpgfscope
-}
-
-
-%% Thermistor PTC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorptc/height 2}}{thermistorptc}{\ctikzvalof{bipoles/thermistorptc/height}}{\ctikzvalof{bipoles/thermistorptc/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Thermistor NTC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermistorntc/height 2}}{thermistorntc}{\ctikzvalof{bipoles/thermistorntc/height}}{\ctikzvalof{bipoles/thermistorntc/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% thermocouple
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/thermocouple/height 2}}{thermocouple}{\ctikzvalof{bipoles/thermocouple/height}}{\ctikzvalof{bipoles/thermocouple/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-}
-
-%% Varistor
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/varistor/height}}{varistor}{\ctikzvalof{bipoles/varistor/height}}{\ctikzvalof{bipoles/varistor/width}}{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\tiny\textsf{U}}}
-}
-
-
-
-%% Generic full tunable
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tfullgeneric/height}}{tfullgeneric}{\ctikzvalof{bipoles/tfullgeneric/height}}{\ctikzvalof{bipoles/tfullgeneric/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw,fill}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-
-
-
-%% Variable Capacitor
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vcapacitor/height}}{vcapacitor}{\ctikzvalof{bipoles/vcapacitor/height}}{\ctikzvalof{bipoles/vcapacitor/width}}{
- %\pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/width}\pgf@circ@Rlen
- \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfusepath{draw}
-}
-
-
-%% Piezoelectric Element
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piezoelectric/height}}{piezoelectric}{\ctikzvalof{bipoles/piezoelectric/height}}{\ctikzvalof{bipoles/piezoelectric/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- %% Outer markings
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %% Inner Box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left+4}{\pgf@circ@res@up-1}}{\pgfpoint{\pgf@circ@res@right-4}{\pgf@circ@res@down+1}}
- \pgfusepath{draw}
-
-}
-
-
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Handling of terminals
-
-
-%% Easily usable styles
-
-\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=diamond}}
-\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamond}}
-\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=diamond}}
-\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=diamond}}
-
-\ctikzset{.-/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{.-*/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=full}}
-\ctikzset{.-o/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=empty}}
-\ctikzset{.-d/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=diamond}}
-\ctikzset{-./.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{o-./.style = {\circuitikzbasekey/bipole/nodes/left=empty, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{*-./.style = {\circuitikzbasekey/bipole/nodes/left=full, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{d-./.style = {\circuitikzbasekey/bipole/nodes/left=diamond, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{.-./.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-
-\tikzset{reversed/.style = {\circuitikzbasekey/bipole/inverted=true}}
-
-
-%% The output routine
-
-\def\drawpoles{
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{diamond} }
- \ifx\pgf@temp\pgf@circ@temp
- (\tikztostart) node[diamondpole] {}
- \else
- \pgfextra{ \def\pgf@temp{empty} }
- \ifx\pgf@temp\pgf@circ@temp
- (\tikztostart) node[ocirc] {}
- \else
- \pgfextra{ \def\pgf@temp{full} }
- \ifx\pgf@temp\pgf@circ@temp
- (\tikztostart) node[circ] {}
- \else
- \pgfextra{ \def\pgf@temp{rectjoinfill} }
- \ifx\pgf@temp\pgf@circ@temp
- (\tikztostart) node[rectjoinfill] {}
- \else
- \fi
- \fi
- \fi
- \fi
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} \def\pgf@temp{diamond} }
- \ifx\pgf@temp\pgf@circ@temp
- (\tikztotarget) node[diamondpole] {}
- \else
- \pgfextra{ \def\pgf@temp{empty} }
- \ifx\pgf@temp\pgf@circ@temp
- (\tikztotarget) node[ocirc] {}
- \else
- \pgfextra{ \def\pgf@temp{full} }
- \ifx\pgf@temp\pgf@circ@temp
- (\tikztotarget) node[circ] {}
- \else
- \pgfextra{ \def\pgf@temp{rectjoinfill} }
- \ifx\pgf@temp\pgf@circ@temp
- (\tikztotarget) node[rectjoinfill] {}
- \else
- \fi
- \fi
- \fi
- \fi
-}
-
-
-
-%% Lamp
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lamp/height}}{lamp}{\ctikzvalof{bipoles/lamp/height}}{\ctikzvalof{bipoles/lamp/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tline/height}
- }{tline}{\ctikzvalof{bipoles/tline/height}
- }{\ctikzvalof{bipoles/tline/width}
- }
- {
- \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0}}
- {\pgfpoint{\pgf@circ@res@step}{0}}
- {\pgfpoint{0}{-\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% SQUID added by Cor Molenaar 5 March 2010
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/squid/height}}{squid}{\ctikzvalof{bipoles/squid/height}}{\ctikzvalof{bipoles/squid/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-
-
-% Generic barrier added by Cor Molenaar 5 March 2010
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/barrier/height}}{barrier}{\ctikzvalof{bipoles/barrier/height}}{\ctikzvalof{bipoles/barrier/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
-
- \pgfusepath{draw}
-}
-
-
-% Contributed by Danilo Piazzalunga
-
-\pgfdeclareshape{buffer}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- }
- }
-
-
-
-
-
-\pgfdeclareshape{plain amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
-
-
-
- }
- }
-
-%% Generic two port box
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/twoport/height}}{twoport}{\ctikzvalof{bipoles/twoport/height}}{\ctikzvalof{bipoles/twoport/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
-}
-
-%% voltage controled oscillator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vco/width}}{vco}{\ctikzvalof{bipoles/twoport/width}}{\ctikzvalof{bipoles/vco/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw circle
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
-}
-
-%% bandpass filter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bandpass/width}}{bandpass}{\ctikzvalof{bipoles/bandpass/width}}{\ctikzvalof{bipoles/bandpass/width}}{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% bandstop filter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bandstop/width}}{bandstop}{\ctikzvalof{bipoles/bandstop/width}}{\ctikzvalof{bipoles/bandstop/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/bandstop/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225% 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt}% always draw solid line for inner symbol
- \pgfsetarrows{-}%never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% highpass filter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/highpass/width}}{highpass}{\ctikzvalof{bipoles/highpass/width}}{\ctikzvalof{bipoles/highpass/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% lowpass filter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/lowpass/width}}{lowpass}{\ctikzvalof{bipoles/lowpass/width}}{\ctikzvalof{bipoles/lowpass/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% ADC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/adc/width}}{adc}{\ctikzvalof{bipoles/adc/width}}{\ctikzvalof{bipoles/adc/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{A}
- \def\textii{D}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{A}
- \def\textii{D}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DAC
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dac/width}}{dac}{\ctikzvalof{bipoles/dac/width}}{\ctikzvalof{bipoles/dac/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{D}
- \def\textii{A}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{D}
- \def\textii{A}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DSP
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/dsp/width}}{dsp}{\ctikzvalof{bipoles/dsp/width}}{\ctikzvalof{bipoles/dsp/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{DSP}}
-}
-
-%% FFT
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/fft/width}}{fft}{\ctikzvalof{bipoles/fft/width}}{\ctikzvalof{bipoles/fft/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{FFT}}
-}
-
-%% Amplifier
-\pgfcircdeclarebipole{}{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{amp}{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
-
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgfusepath{draw}
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-}
-
-
-%% variable amplifier
-\pgfcircdeclarebipole{}{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{vamp}{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
- }{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
-
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgfusepath{draw}
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
- % draw arrow
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% pi attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/piattenuator/width}}{piattenuator}{\ctikzvalof{bipoles/piattenuator/width}}{\ctikzvalof{bipoles/piattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable pi attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vpiattenuator/width}}{vpiattenuator}{\ctikzvalof{bipoles/vpiattenuator/width}}{\ctikzvalof{bipoles/vpiattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% T attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/tattenuator/width}}{tattenuator}{\ctikzvalof{bipoles/tattenuator/width}}{\ctikzvalof{bipoles/tattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable T attenuator
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/vtattenuator/width}}{vtattenuator}{\ctikzvalof{bipoles/vtattenuator/width}}{\ctikzvalof{bipoles/vtattenuator/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% phase shifter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{phaseshifter}{\ctikzvalof{bipoles/phaseshifter/width}}{\ctikzvalof{bipoles/phaseshifter/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-}
-
-%% variable phase shifter
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/phaseshifter/width}}{vphaseshifter}{\ctikzvalof{bipoles/vphaseshifter/width}}{\ctikzvalof{bipoles/vphaseshifter/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% detector
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/detector/width}}{detector}{\ctikzvalof{bipoles/detector/width}}{\ctikzvalof{bipoles/detector/width}}{
- \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{0.8\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@fulldiode
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
- \else
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
- \fi
-
-}
-
-
-
-
-%% european gas filled surge arrester
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{european gas filled surge arrester}{\ctikzvalof{bipoles/european gas filled surge arrester/height}}{\ctikzvalof{bipoles/european gas filled surge arrester/width}}{
-
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
-}
-
-
-
-
-%% american gas filled surge arrester
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{american gas filled surge arrester}{\ctikzvalof{bipoles/american gas filled surge arrester/height}}{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
- %\def\pgf@circ@temp{right}
- %\ifx\tikz@res@label@pos\pgf@circ@temp
- % \pgf@circ@res@step=-1.2\pgf@circ@res@up
- %\else
-% \def\pgf@circ@temp{below}
-% \ifx\tikz@res@label@pos\pgf@circ@temp
-% \pgf@circ@res@step=-1.2\pgf@circ@res@up
-% \else
-% \pgf@circ@res@step=1.2\pgf@circ@res@up
-% \fi
-% \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfnode{circle}{center}{}{}{}
-
- \pgfscope
- \pgfsetarrowsend{latex}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope{}
-
- %\pgftransformshift{\pgfpoint{.25\pgf@circ@res@left}{.45\pgf@circ@res@down}}
- %\pgfnode{circ}{center}{}{}{}
- %\pgftransformshift{}
- \pgfcircle{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
- \pgfusepath{fill}
-}
-
-% % MECHANICAL SYMBOLS
-
-%% mechanical capacitance - stiffness/spring
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spring/height}}{spring}{\ctikzvalof{bipoles/spring/height}}{\ctikzvalof{bipoles/spring/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% mechanical inductance - mass
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/mass/box height}}{mass}{\ctikzvalof{bipoles/mass/height}}{\ctikzvalof{bipoles/mass/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
-
-\pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-}
-
-%% mechanical resistor - damper
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/damper/height}}{damper}{\ctikzvalof{bipoles/damper/height}}{\ctikzvalof{bipoles/damper/width}}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {\pgf@circ@res@zero}}
- \pgfusepath{stroke}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
-
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{stroke}
-
-}
-
-
-%%%---------- close: tex/pgfcircbipoles
-%%%%%%%%%%% Springe nach tex/pgfcirctripoles
-%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Tripoles
-
-
-
-\pgfdeclareshape{spdt}
- {
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out 1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{out 2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/margin}\pgf@circ@res@left
-
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
- \endpgfscope
-
-
- \pgfscope
- \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
- \pgfpathlineto{
- \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
- {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
- }
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
- }
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% Logic ports
-%%
-
-
-
-
-
-
-\long\def\pgfcircdeclarelogicport#1#2{
- \pgfdeclareshape{american #1 port}
- {
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in 1}{
- \inOne
- }
- \anchor{in}{
- \inOne
- }
- \anchor{in 2}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-.8\pgf@x
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- #2
-
- }
- }
-}
-
-
-\pgfcircdeclarelogicport{and}{
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@down}}
- \pgfpathcurveto
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {.5\pgf@circ@res@down}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {0pt}}
- \pgfpathcurveto
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {.5\pgf@circ@res@up}}
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-
-\pgfcircdeclarelogicport{nand}{
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{2\pgflinewidth}
-
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathcurveto
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- {\pgfpoint{.0\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclarelogicport{nor}{
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
-
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-}
-
-
-
-
-\pgfcircdeclarelogicport{or}{
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclarelogicport{xor}{
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/distance}\pgf@circ@res@right+}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-
-
-\pgfcircdeclarelogicport{xnor}{
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {(\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input skip})*\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/circle width}\pgf@circ@res@right
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@res@other-\pgf@circ@res@step}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ddd}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \def\pgf@circ@temp{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/distance}\pgf@circ@res@right+}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{\pgf@circ@res@up}}
-
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/bbb}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/ccc}\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/aaa}\pgf@circ@res@left}{.95*\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@temp-\pgf@circ@res@other}{.95*\pgf@circ@res@down}}
-
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-}
-
-
-\pgfdeclareshape{american not port}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- }
- }
-
-\pgfdeclareshape{invschmitt}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgfusepath{draw}
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgfsetfillcolor{white}
- \pgfusepath{draw,fill}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- %draw inner shape
-
- \pgfsetlinewidth{2\pgflinewidth}
-
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- }
- }
-
-\pgfdeclareshape{schmitt}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- %draw inner shape
-
- \pgfsetlinewidth{2\pgflinewidth}
-
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- }
- }
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% #1 - name
-% #2 - text inside
-% #3 - number of inputs
-% #4 - is it a not
-
-\long\def\pgfcircdeclareeurologicport#1#2#3#4{
- \pgfdeclareshape{european #1 port}
- {
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \inOne
- }
- \anchor{in 1}{
- \inOne
- }
- \anchor{in 2}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-.8\pgf@x
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \def\pgf@temp{1}
- \def\pgf@circ@temp{#3}
- \ifx\pgftemp\pgf@circ@temp % one input
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}
- \else % two inputs
- \pgfpathmoveto{
- \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@up}}
- %
- \pgfpathmoveto{
- \pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/input height}\pgf@circ@res@down}}
- \fi%
- %
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
- %
- \edef\pgf@temp{not}
- \edef\pgf@circ@temp{#4}
- \ifx\pgf@temp\pgf@circ@temp % is a not
- \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not height}\pgf@circ@res@up}}
- \fi
- %
- \pgfusepath{draw}
- %
- \pgfpathmoveto{\pgfpointorigin}
- \pgftext{#2}
- %
- %
- %
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathrectanglecorners
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-%
-%
- }
- }
-}
-
-
-
-\pgfcircdeclareeurologicport{and}{$\&$}{2}{}
-\pgfcircdeclareeurologicport{or}{$\ge 1$}{2}{}
-\pgfcircdeclareeurologicport{xor}{$=1$}{2}{}
-\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
-\pgfcircdeclareeurologicport{nand}{$\&$}{2}{not}
-\pgfcircdeclareeurologicport{nor}{$\ge 1$}{2}{not}
-\pgfcircdeclareeurologicport{xnor}{$=1$}{2}{not}
-
-\long\def\pgfcircdeclaretransistor#1#2#3{
- \pgfdeclareshape{#1}
- {
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northeast{% upper right
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=0pt
- }
- \savedanchor\left{%center left
- \pgf@y=0pt
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/width}\pgf@circ@Rlen
- }
- \anchor{text}{
- \northeast
- \pgf@y=.7\pgf@y
- \pgf@x= \pgf@circ@Rlen
- \pgf@x=0.1\pgf@x
- }
- \anchor{pathstart}{ % south
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{pathend}{
- \northeast
- }
- \anchor{north}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \northeast
- \pgf@y=0pt
- }
- \anchor{south}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{south west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- }
- \anchor{north east}{
- \northeast
- }
- \anchor{north west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{south east}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{B}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{base}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{G}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{gate}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{nobase}{
- \left
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@x
- }
- \anchor{nogate}{
- \left
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@x
- }
- \anchor{E}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{emitter}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{C}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{collector}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{D}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{drain}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- #2
- \backgroundpath{
- \pgftransformationadjustments
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- %
- \ifnum \pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction} > 0
- \pgf@circuit@trans@ntypetrue
- \else
- \pgf@circuit@trans@ntypefalse
- \fi
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = \pgf@x
- \left
- \pgf@circ@res@left = \pgf@x
- %
- #3
- % BODY DIODE
- \ifpgf@circuit@fet@bodydiode
- \drawbodydiode{#1}
- \fi
- %
- }
- }
-}
-
-\long\def\drawbodydiode#1{
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgftransformrotate{90}
- \pgftransformscale{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode scale}}
- \ifpgf@circuit@fulldiode
- \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \else
- \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \fi
- \endpgfscope
- %Draw upper connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope{}
- %Draw lower connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope
-}
-
-\long\def\declarebpt#1{
- \pgfcircdeclaretransistor{#1}{}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transiytor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@ntype
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{.5}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}%
- }
- \fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \ifpgf@circuit@bpt@drawphoto
- \pgfscope
- \pgfsetarrowsstart{latex'}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
- \else
- \ifpgf@circuit@bpt@drawbase
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
- \fi
- }
-}
-
-\declarebpt{npn}
-\declarebpt{pnp}
-
-\long\def\declareigbt#1{
-\pgfcircdeclaretransistor{#1}{}
-{
- %draw upper connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- %draw thicker gate lines
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %draw lower connection
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transiytor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@ntype
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{.5}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}%
- }
- \fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- %draw gate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
- \fi
- \pgfusepath{draw}
-}
-}
-
-\declareigbt{pigbt}
-\declareigbt{nigbt}
-\declareigbt{Lnigbt}
-\declareigbt{Lpigbt}
-
-
-\pgfcircdeclaretransistor{nmos}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
-
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-}
-
-
-\pgfcircdeclaretransistor{pmos}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.4}{%
- \pgfpoint%
- {\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
-
-
- \pgfusepath{draw}
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
- \pgfpathcircle{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left - \pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
- {\pgf@circ@res@up+\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
- \ifpgf@circuit@pmos@emptycircle
- \pgfsetfillcolor{white}
- \fi
- \pgfusepath{draw,fill}
-}
-
-\long\def\drawfetcore#1{
- \pgftransformationadjustments
- %top connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
- \ifpgf@circuit@trans@depletiontype
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \else
-
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.45}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.25}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down*0.25}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \fi
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %Bulk connection line
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- %bottom connection
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- %draw thick gate line
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
-
- \pgftransformlineattime{.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \ifpgf@circuit@trans@ntype
- \else
- \pgftransformrotate{180}
- \fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- % GATE CONNECTION
- \ifpgf@circuit@bpt@drawgate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
- \fi
-
-}
-
-\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
-{\pgfcircdeclaretransistor{#1}{
- \anchor{bulk}{\left\pgf@x=0pt}
- \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
- #2
- }
- {#3}
-}
-
-
-\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nfet}
-}
-
-
-\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pfet}
-}
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfete}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-
-
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
-\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfetebulk}
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-
-
-% N-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{nigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfete}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
-\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfetebulk}
-}
-
-
-% P-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{pigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-\pgfcircdeclaretransistor{njfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint{\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclaretransistor{pjfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.4}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfdeclaretransistorwrapperaddbulk{isfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- % DRAIN CONNECTION
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- % DRAIN
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % GATE, DEPLETION TYPE
- \pgfscope %% added
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth} %% added
- \pgfusepath{draw} %% added
- \endpgfscope %% added
-
- % BULK
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- % SOURCE
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- % GATE
- %\pgfscope
- %\pgfpathmoveto{\pgfpoint
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- %\pgfpathlineto{\pgfpoint
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate width}\pgf@circ@res@left}
- % {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- %\pgfsetlinewidth{2\pgflinewidth}
- %\pgfusepath{draw}
- %\endpgfscope
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
- % ARROW
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfusepath{draw}
-
- % Wavy lines
- \pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-
-%% Black thyristor
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{anode}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{G}{
- \northeast
- }
- \anchor{cathode}{
- \northeast
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/thyristor/height 2}}{fullthyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty thyristor
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{anode}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{G}{
- \northeast
- }
- \anchor{cathode}{
- \northeast
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/thyristor/height 2}}{emptythyristor}{\ctikzvalof{tripoles/thyristor/height}}{\ctikzvalof{tripoles/thyristor/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty triac
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{G}{
- \northeast
- }
- \anchor{anode}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{cathode}{
- \northeast
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/triac/height}}{emptytriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty triac
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{G}{
- \northeast
- }
- \anchor{anode}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{cathode}{
- \northeast
- \pgf@y=0cm
- }
-}{\ctikzvalof{tripoles/triac/height}}{fulltriac}{\ctikzvalof{tripoles/triac/height}}{\ctikzvalof{tripoles/triac/width}}{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-
-
-
-
-
-
-\pgfcircdeclarebipole{
- \anchor{out 1}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{out 2}{
- \northeast
- \pgf@y=.8\pgf@y
- }
-}{\ctikzvalof{tripoles/toggleswitch/height 2}}{toggleswitch}{\ctikzvalof{tripoles/toggleswitch/height}}{\ctikzvalof{tripoles/toggleswitch/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetdash{}{0cm}
-}
-
-
-
-
-
-
-
-
-
-
-\pgfdeclareshape{op amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \pgfsetrectcap
- \pgfusepath{draw}
-
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgfusepath{draw}
- \endpgfscope
-
-
-
- }
- }
-
-%op amp shape as in european standard en 60617
-\pgfdeclareshape{en amp}
-{
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {
- \left
- \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf@x
- }
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{up}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{down}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/font} $-$}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/font} $+$}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \pgfsetrectcap
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgfusepath{draw}
- \endpgfscope
-
- \pgftext[base,y=-3ex,at=\pgfpoint{.3\pgf@circ@res@left}{\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/font2} $\triangleright$}
- \pgftext[base,y=-3ex,at=\pgfpoint{.3\pgf@circ@res@right}{\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/en amp/font2} $\infty$}
- }
-}
-
-%%Transkonduktanzverstรคrker
-\pgfdeclareshape{gm amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{0pt}} %
- \pgfsetrectcap
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
- %Umrandung:
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}} %geรคndert startpunkt neu am ausgangsstrich
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}%vom Ausgang nach oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}%ecke links unten nach rechts unten
- \pgfpathclose
- \pgfusepath{draw}
- \endpgfscope
-
- }
- }
-
-
-
-%% Potentiometer
-\pgfcircdeclarebipole{
- \anchor{wiper}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
- \anchor{W}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
-}{\ctikzvalof{bipoles/potentiometer/height 2}}{potentiometer}{\ctikzvalof{bipoles/potentiometer/height}}{\ctikzvalof{bipoles/potentiometer/width}}{
-\pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-\pgftransformationadjustments
-\pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
-\divide \pgf@circ@res@step by 12
-
-\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
-
-\pgf@circ@res@other = \pgf@circ@res@left
-\advance\pgf@circ@res@other by \pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by 2\pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
-\advance\pgf@circ@res@other by \pgf@circ@res@step
-\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
-\pgfsetbeveljoin
-\pgfusepath{draw}
-
-\pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
-\endpgfscope
-}
-
-
-
-
-
-%% Generic tunable
-
-\pgfcircdeclarebipole{
- \anchor{wiper}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
-}{\ctikzvalof{bipoles/generic potentiometer/height 2}}{genericpotentiometer}{\ctikzvalof{bipoles/generic potentiometer/height}}{\ctikzvalof{bipoles/generic potentiometer/width}}{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw}
-
- \pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex'}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-\pgfdeclareshape{mixer}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{adder}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{oscillator}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \else
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@circ@Rlen
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{north}{
- \northwest
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@x=.5\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{text}{
- \pgf@x=-2\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@Rlen{}
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
-
- % draw outer box
- \ifpgf@circuit@boxed{}
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{circulator}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{3}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed{}
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfusepath{draw}
-
- % inner arrow
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
- \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-
-% Wilkinson divider
-\pgfdeclareshape{wilkinson}{
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x= \pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{out2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- % draw inner resisitor - european or american style is recognised
- {
- \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgftransformrotate{90}
-
- % calculate size of resistor
- \ifpgf@circuit@europeanresistor
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{genericshape}{center}{}{pgf@generic}{\pgfusepath{fill}}
- \else
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{resistorshape}{center}{}{pgf@resistor}{\pgfusepath{fill}}
- \fi
- }
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-
-% electromechanical device (motor/generator)
-\pgfdeclareshape{elmech}
-{
- \savedanchor\northwest{
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgfpointorigin
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -.5\ht\pgfnodeparttextbox
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{%
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{top}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathstart}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathend}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{bottom}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@Rlen
- \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- % draw outer box
- % \ifpgf@circuit@boxed
- % \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- % \fi
- % draw outer circle
- %\ifpgf@circuit@boxed
- % \pgf@circ@res@step=.7\pgf@circ@res@step
- % \pgfsetdash{}{0pt} % draw solid circle if boxed
- %\else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- %\fi
- \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfsetfillcolor{black}
- \pgfusepath{draw,fill}
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfsetfillcolor{white}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{magnetron}
-{
- \savedanchor\northwest{
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{anode}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{cathode1}{
- \northwest
- \pgf@circ@res@step=\pgf@y
- \pgfmathparse{cos(105)}
- \pgf@x=\pgfmathresult\pgf@circ@res@step
- \pgfmathparse{sin(105)}
- \pgf@y=\pgfmathresult\pgf@circ@res@step
- %\pgfpointorigin
- %\pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
- }
- \anchor{cathode2}{
- \northwest
- \pgf@circ@res@step=\pgf@y
- \pgfmathparse{cos(75)}
- \pgf@x=\pgfmathresult\pgf@circ@res@step
- \pgfmathparse{sin(75)}
- \pgf@y=\pgfmathresult\pgf@circ@res@step
- %\pgfpointorigin
- %\pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
- }
- \anchor{text}{
- \pgfpointorigin
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -.5\ht\pgfnodeparttextbox
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{%
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{top}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathstart}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathend}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{bottom}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgf@circ@res@step=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@Rlen
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfmathsetlength{\pgf@circ@res@other}{sin(15)*\pgf@circ@res@up}
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- % draw outer box
- % \ifpgf@circuit@boxed
- % \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- % \fi
- % draw outer circle
- %\ifpgf@circuit@boxed
- % \pgf@circ@res@step=.7\pgf@circ@res@step
- % \pgfsetdash{}{0pt} % draw solid circle if boxed
- %\else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- %\fi
- %create outer circle
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@right}
- \pgfsetfillcolor{white}
- \pgfusepath{draw}
- %create chambers
- \foreach \angle in {45,135,225,315}{
- \pgfpathmoveto{ \pgfpointpolar{\angle}{0.6\pgf@circ@res@right}}
- \pgfpathlineto{ \pgfpointpolar{\angle}{\pgf@circ@res@right}}
- }
- \pgfsetroundcap
- \pgfusepath{draw}
- \pgfscope
- %draw connection from outside
- %anode
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- %cathodes
- \pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- %create cathode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.15\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- %create anode
- \pgfpathmoveto{\pgfpoint{0.3\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-%%%---------- close: tex/pgfcirctripoles
-%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
-%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Quadripoles
-
-\long\def\pgfcircdeclarequadpole#1#2#3{
- \pgfdeclareshape{#1}
- {
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=.5\pgf@circ@Rlen
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
- }
- \anchor{A2}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{B1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{A1}{
- \northwest
- }
- \anchor{B2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{base}{
- \northwest
- \pgf@x=0pt
- }
- #3
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- #2
-
- }
- }
-}
-
-
-
-\def\pgf@circ@drawtransformerbasicanchor{
- \pgfkeysvalueof{/tikz/circuitikz/quadpoles/trans/height}
- \anchor{AA2}{
- \northwest
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{AA1}{
- \northwest
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
-}
-
-\def\pgf@circ@drawtransformerbasicbody{
- \def\stretto{.4}
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@down}%
- }
-
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
-
- \endpgfscope
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@up}%
- }
-
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@inductor1}{b}}
-
- \pgfpathmoveto{\pgfpointanchor{pgf@inductor1}{a}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@inductor2}{a}}
-
- \pgfpathmoveto{\pgfpointanchor{pgf@inductor2}{b}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
-}
-
-
-
- % contrib Kristofer M. Monisit
-
- \pgfdeclareshape{fd op amp}
- {
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out +}{
- \northwest
- \pgf@y=.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{out -}{
- \northwest
- \pgf@y=-.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
-
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
-
-
- % Negative output terminal
- \pgfpathmoveto{\pgfpoint
- {0.7\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $-$}
-
-
- % Positive output terminal
- \pgfpathmoveto{\pgfpoint
- {0.7\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} $+$}
-
- \pgfsetrectcap
- % Draw them all!
- \pgfusepath{draw}
-
- % Triangle
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathclose
- \pgfusepath{draw}
- \endpgfscope
- }
- }
-
-
-
-
-\pgfcircdeclarequadpole{transformer}{
-
- \pgf@circ@drawtransformerbasicbody
-
-}{\pgf@circ@drawtransformerbasicanchor}
-
-\pgfcircdeclarequadpole{transformer core}{
-
- \pgf@circ@drawtransformerbasicbody
-
- \pgfmoveto{\pgfpoint%
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgfmoveto{\pgfpoint%
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
-}{\pgf@circ@drawtransformerbasicanchor}
-
-
-\pgfcircdeclarequadpole{gyrator}{
-
- \def\stretto{.4}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{.7*\stretto\pgf@circ@res@down}}
- \pgfpatharc{90}{270}{.7*\stretto\pgf@circ@res@down}
-
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{.7*\stretto\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{.7*\stretto\pgf@circ@res@down}
- \pgfusepath{draw}
-
-}{}
-
-%% four-port
-% defines a general outer box for four-ports
-% TikZ usage:
-% \draw (0,0) node[coupler](coup){\SI{-3}{dB}}
-% (coup.port1) to[short,-o] ++(-1,0)
-%
-
-\long\def\pgfcircdeclarefourport#1#2{
- \pgfdeclareshape{#1}{
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=.5\pgf@circ@Rlen
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{port1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{port4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
- \anchor{1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
-
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % draw inner stuff
- #2
-
- % draw inner text
- \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
- }
- }
-}
-
-% four-port
-\pgfcircdeclarefourport{fourport}{}
-
-
-% straight coupler
-\pgfcircdeclarefourport{coupler}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
-}
-
-% "bended" coupler
-\pgfcircdeclarefourport{coupler2}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
-
-
-}
-%%%---------- close: tex/pgfcircquadpoles
-
-%%%%%%%%%%% Springe nach tex/pgfcirclabel
-%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Bipole label positioning
-
-%% Options
-\ctikzset{label/.style = { l=#1 } }
-\ctikzset{l/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
- \ctikzsetvalof{bipole/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-
-\ctikzset{label above/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-
-\ctikzset{l^/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-
-\ctikzset{label below/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-\ctikzset{l_/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-\ctikzset{annotation/.style = { a=#1 } }
-\ctikzset{a/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/annotation/name=#1}
- \ctikzsetvalof{bipole/annotation/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/annotation/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/annotation/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- }}
-
-\ctikzset{annotation above/.code = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=90 }
-}
-
-\ctikzset{a^/.style = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=90 }
-}
-
-\ctikzset{annotation below/.code = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=-90 }
-}
-\ctikzset{a_/.style = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=-90 }
-}
-
-
-
-\def\pgf@circ@drawlabels#1{
- \pgfextra{
- \pgfmathsubtract{\pgf@circ@direction}{90}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
-
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/position}}
- \ifnum \pgf@circ@temp < 0
- \pgfmathadd{\pgf@circ@labanc}{180}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- \ifpgf@circuit@bipole@inverted
- \pgfmathadd{\pgf@circ@temp}{180} %If shape is inverted, use opposite anchor
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
-
- \ifnum \ctikzvalof{mirror value} = -1
- \pgfmathadd{\pgf@circ@temp}{180} %If shape is mirrored, use opposite anchor
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- }
- %Firstly, place a coodinate directly at the edge of the shape
- (\ctikzvalof{bipole/name}.\pgf@circ@temp) coordinate (labelcoor)
- %now decide, which labels should be drawn
- \pgfextra{
- \edef\pgf@temp{\ctikzvalof{label/align}}
- \def\pgf@circ@temp{straight}
- }
- \ifx\pgf@temp\pgf@circ@temp %straight
- \pgf@circ@drawreglabels{#1}
- \else
- \pgfextra{\def\pgf@circ@temp{rotate}}
- \ifx\pgf@temp\pgf@circ@temp %rotate
- \pgf@circ@drawrotlabels{#1}
- \else% smart
- \pgf@circ@drawsmartlabels{#1}
- \fi
- \fi
-}
-
-
-\def\pgf@circ@drawsmartlabels#1{
- \pgfextra{
- \pgfmathmod{\pgf@circ@direction}{90}
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- \ifnum \pgfcircmathresult > 20
- \ifnum \pgfcircmathresult < 70
- \pgf@circ@drawrotlabels{#1}
- \else
- \pgf@circ@drawreglabels{#1}
- \fi
- \else
- \pgf@circ@drawreglabels{#1}
- \fi
-}
-
-
-\def\pgf@circ@drawrotlabels#1{
- \pgfextra{
- \ifnum \ctikzvalof{bipole/#1/position}>0
- %we need some more space for placement below, due to mid-anchor
- \def\pgf@circ@labposdistance{1.5ex}
- \else
- \def\pgf@circ@labposdistance{2ex}
- \fi
- %Calculate rotation of the label from direction and strip decimals
- \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- % rotate the label at second or third quadrant:
- \ifnum \pgfcirclabrot > 90 \ifnum \pgfcirclabrot < 270
- \pgfmathsubtract{\pgf@circ@direction}{180}
- \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- %invert the space relationships due to rotatet strings
- \ifnum \ctikzvalof{bipole/#1/position}>0
- \def\pgf@circ@labposdistance{2ex}
- \else
- \def\pgf@circ@labposdistance{1.5ex}
- \fi
- \fi\fi
- \pgfmathparse{\ctikzvalof{bipole/#1/position}>0?\pgf@circ@direction+90:\pgf@circ@direction-90}
- \edef\pgf@circ@labposangle{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- (labelcoor)++(\pgf@circ@labposangle:\pgf@circ@labposdistance) coordinate(labelcoor)
- node[anchor=mid,rotate=\pgfcirclabrot](\ctikzvalof{bipole/name}#1){\pgf@circ@finallabels{#1}}
-}
-
-\def\pgf@circ@drawreglabels#1{
-
- %Now calculate all shape positions
- %Use mid-anchor at x-axis and base-anchor at y-axis, respectively.
- %All points between will be addressed by angled-anchors:
- \pgfextra{
- \pgfmathadd{\pgf@circ@labanc}{90}
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \pgfmathparse{mod(\pgf@circ@temp,180)>135?mod(\pgf@circ@temp,180)-180:mod(\pgf@circ@temp,180)}
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- %Values between -5 and 5 are at pos /neg x-axis, values around 90 are at both y-axis
- \ifnum \pgfcircmathresult > 84 \ifnum \pgfcircmathresult< 96
- \pgfextra{\edef\pgf@circ@labpos{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}}
- \ifnum \pgf@circ@labpos > 180
- \ifnum \ctikzvalof{bipole/#1/position} > 0
- \pgfextra{\def\pgf@circ@labanc{mid west}}
- \else
- \pgfextra{\def\pgf@circ@labanc{mid east}}
- \fi
- \else
- \ifnum \ctikzvalof{bipole/#1/position} > 0
- \pgfextra{\def\pgf@circ@labanc{mid east}}
- \else
- \pgfextra{\def\pgf@circ@labanc{mid west}}
- \fi
- \fi
- \fi\fi
- \ifnum \pgfcircmathresult <6
- \ifnum \ctikzvalof{bipole/#1/position} < 0
- %we need some more space for placement below, due to mid-anchor
- (labelcoor)++(-\pgf@circ@labanc:2ex) coordinate(labelcoor)
- \else
- (labelcoor)++(-\pgf@circ@labanc:1.5ex) coordinate(labelcoor)
- \fi
- \pgfextra{\def\pgf@circ@labanc{mid}}
- \fi
- (labelcoor) node[anchor=\pgf@circ@labanc](\ctikzvalof{bipole/name}#1){\pgf@circ@finallabels{#1}}
-}
-
-\def\pgf@circ@finallabels#1{%
- \edef\pgf@temp{}%
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/unit}}%
- \ifx\pgf@temp\pgf@circ@temp%
- \ctikzvalof{bipole/#1/name}%
- \else%
- $\SI{\ctikzvalof{bipole/#1/name}}{\ctikzvalof{bipole/#1/unit}}$%
- \fi%
-}
-
-\ctikzset{text/.style = { t=#1 } }
-\ctikzset{t/.code = {
- \ctikzsetvalof{bipoles/twoport/text}{#1}
-}}
-%%%---------- close: tex/pgfcirclabel
-%%%%%%%%%%% Springe nach tex/pgfcircvoltage
-%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Voltage management
-
-
-\ctikzset{v^>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v^</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v_>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-\ctikzset{v_</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
-\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
-\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
-\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
-
-% Default position varies whether the component is a voltage source
-% or not
-\ctikzset{v/.code = {
- \ifpgf@circuit@bipole@isvoltage
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \ifpgf@circ@oldvoltagedirection
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \fi
- \fi
- \ifpgf@circ@oldvoltagedirection\else
- \ifpgf@circuit@bipole@iscurrent
- \ifpgf@circuit@bipole@current@backward
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \fi\fi\fi
- \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
- \ctikzsetvalof{bipole/voltage/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- }
-}
-
-
-
-
-%% Output routine for generic bipoles
-
-\def\pgf@circ@drawvoltagegeneric{
- \pgfextra{
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/straight label distance}
- \pgfkeysifdefined{\pgf@temp}
- {
- \edef\partheight{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/straight label distance}}
- \edef\tmpdistfromline{(\partheight\pgf@circ@Rlen)}
- }
- {
- \pgfkeysifdefined{/tikz/circuitikz/bipoles/voltage/straight label distance}
- {
- \edef\partheight{\ctikzvalof{bipoles/voltage/straight label distance}}
- \edef\tmpdistfromline{(\partheight\pgf@circ@Rlen)}
- }
- {%calculate default value from part height
- \edef\partheight{0.5*\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/height}}
- \edef\tmpdistfromline{(\partheight\pgf@circ@Rlen+0.2\pgf@circ@Rlen)}
- }
- }
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{\tmpdistfromline}
- \else
- \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{-\tmpdistfromline}
- \else
- \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
- \fi
- \fi
- \else
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{-\tmpdistfromline}
- \else
- \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{\tmpdistfromline}
- \else
- \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
- \fi
- \fi
- \fi
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@voltage@angle{90}
- \else
- \def\pgf@circ@voltage@angle{-90}
- \fi
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\distacefromnode{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}} }
- { \edef\distacefromnode{\ctikzvalof{voltage/distance from node}} }
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\bumpb{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}} }
- { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
- }
- % %\pgf@circ@Rlen/16 is equal to the length of the currarrow
- coordinate (pgfcirc@midtmp) at ($(\tikztostart) ! \pgf@circ@Rlen/16 ! (anchorstartnode)$) %absolute move, minimum space is length of arrowhead
- coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distacefromnode ! (anchorstartnode)$)
-
- coordinate (pgfcirc@Vfrom) at ($(pgfcirc@midtmp) ! -\distfromline ! \pgf@circ@voltage@angle:(anchorstartnode)$)
- coordinate (pgfcirc@midtmp) at ($(\tikztotarget) ! \pgf@circ@Rlen/16 ! (anchorendnode)$)%absolute move, minimum space is length of arrowhead
- coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distacefromnode ! (anchorendnode)$)
-
- coordinate (pgfcirc@Vto) at ($(pgfcirc@midtmp) ! \distfromline ! \pgf@circ@voltage@angle : (anchorendnode)$)
-
- \ifpgf@circuit@bipole@voltage@below
- coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
- coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
- \else
- coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
- coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
- \fi
-
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@straight
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) --(pgfcirc@Vfrom) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
- \else
- (pgfcirc@Vfrom) --(pgfcirc@Vto) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
- node[currarrow, sloped, allow upside down, pos=1] {}
- (pgfcirc@Vfrom)
- \else
- (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
- node[currarrow, sloped, allow upside down, pos=1] {}
- (pgfcirc@Vto)
- \fi
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
- \else
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
- \fi
- \else
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$-$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$+$}
- \else
- (pgfcirc@Vfrom) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{\scriptsize$+$}
- (pgfcirc@Vto) node[inner sep=0, anchor=\pgf@circ@bipole@voltage@label@anchor]{$-$}
- \fi
- \fi
- \fi
-}
-
-%% Output routine for voltage sources
-\def\pgf@circ@drawvoltagegenerator{
- \ifpgf@circuit@bipole@voltage@below
- coordinate (pgfcirc@Vfrom) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-120)$)
- coordinate (pgfcirc@Vto) at ($(\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.-60)$)
- \else
- coordinate (pgfcirc@Vfrom) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.120)$)
- coordinate (pgfcirc@Vto) at ($ (\ctikzvalof{bipole/name}.center) ! \ctikzvalof{voltage/bump a} ! (\ctikzvalof{bipole/name}.60)$)
- \fi
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vfrom)
- \else
- (pgfcirc@Vfrom) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vto)
- \fi
- \else% american voltage
- \ifpgf@circuit@bipole@voltageoutsideofsymbol
- % if it is a battery, must put + and -
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vfrom) node {$-$} (pgfcirc@Vto) node {$+$}
- \else
- (pgfcirc@Vfrom) node {$+$} (pgfcirc@Vto) node {$-$}
- \fi
- \fi
- \fi
-}
-
-%% Output routine
-\def\pgf@circ@drawvoltage{% node name
-%\pgf@circ@direction
- \pgfextra{
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{east}
- \else \def\pgf@circ@bipole@voltage@label@anchor{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
-
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@voltage@below
- \pgf@circuit@bipole@voltage@belowfalse
- \else
- \pgf@circuit@bipole@voltage@belowtrue
- \fi
- \fi
-
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@below
- \pgf@circuit@bipole@voltage@belowfalse
- \else
- \pgf@circuit@bipole@voltage@belowtrue
- \fi
- \fi
-
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@where{-90}
- \else
- \def\pgf@circ@bipole@voltage@label@where{90}
- \fi
-
-
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\eudist{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}} }
- { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
-
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- }%end pgfextra
-
- \ifpgf@circuit@bipole@isvoltage
- \pgf@circ@drawvoltagegenerator
- \else
- \pgf@circ@drawvoltagegeneric
- \fi
-
- % (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where) %Zeile sinnlos!?
- \ifpgf@circuit@bipole@voltage@straight
- coordinate (Vlab) at ($(pgfcirc@Vto)!0.5!(pgfcirc@Vfrom) $)
- node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt]
- at (Vlab) { \pgf@circ@finallabels{voltage/label} }
- \else
- coordinate (Vlab) at ($(\ctikzvalof{bipole/name}.center) !
- \ifpgf@circuit@europeanvoltage
- \eudist
- \else
- \ctikzvalof{voltage/american label distance}
- \fi !
- (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)$)
- node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt] at (Vlab) { \pgf@circ@finallabels{voltage/label} }
- \fi
-}%end drawvoltages
-%%%---------- close: tex/pgfcircvoltage
-%%%%%%%%%%% Springe nach tex/pgfcirccurrent
-%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Current handling
-
-%% Options
-\ctikzset{i^>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i>^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i>_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i^</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i<^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i<_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i/.code = {
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above }
- \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
- \ctikzsetvalof{bipole/current/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-%reverse current direction for voltage sources
- \ifpgf@circ@oldvoltagedirection\else
- \ifpgf@circuit@bipole@isvoltage
- \ifpgf@circuit@bipole@voltage@backward
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below }
- \else
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above }
- \fi\fi\fi
-}
-}
-
-
-\ifpgf@circ@oldvoltagedirection
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
-\else
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
-\fi
-\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
-\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
-\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
-
-%% Output routine
-\def\pgf@circ@drawcurrent{
- \pgfextra{
- \edef\pgf@circ@ffffff{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- \ifnum\pgfcircmathresult >355
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
-
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@bipole@current@label@where{-90}
- \else
- \def\pgf@circ@bipole@current@label@where{+90}
- \fi
- }
-
- \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
- \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line
- (\tikztostart)--(\tikztotarget)
- \else% normal bipole or source
- \ifpgf@circuit@bipole@current@before
- (\tikztostart)--(anchorstartnode)
- \else
- (anchorendnode)--(\tikztotarget)
- \fi
- \fi
- \ifpgf@circuit@bipole@current@backward
- \pgfextra{
- \pgfmathsubtract{\pgf@circ@ffffff}{180}
- \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- \fi
- coordinate[currarrow,pos=\ctikzvalof{current/distance},rotate=\pgf@circ@ffffff](Iarrow)
- (Iarrow.\pgf@circ@bipole@current@label@where) node[anchor=\pgf@circ@dir]{\pgf@circ@finallabels{current/label}}
-}
-
-%%%---------- close: tex/pgfcirccurrent
-%%%%%%%%%%% Springe nach tex/pgfcircflow
-%%%---------- open: tex/pgfcircflow.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/LICENSE for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% flow handling
-
-%% Options
-\ctikzset{f^>/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/curflowrent/y position = above
- }
-}
-
-\ctikzset{f_>/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f>^/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f>_/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f^</.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f_</.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f<^/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f<_/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f</.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = backward} }
-\ctikzset{f_/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = below } }
-\ctikzset{f>/.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = forward } }
-\ctikzset{f^/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = above } }
-
-\ctikzset{f/.code = {
- \pgfkeys{\circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = above }
- \pgfkeys{/tikz/circuitikz/bipole/flow/label/name=#1}
- \ctikzsetvalof{bipole/flow/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}
-}
-
-%% Output routine
-\def\pgf@circ@drawflow{
- \pgfextra{
- \edef\pgf@circ@ffffff{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- \ifnum\pgfcircmathresult >355
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
-
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@bipole@flow@label@where{-90}
- \else
- \def\pgf@circ@bipole@flow@label@where{+90}
- \fi
- }
-
- \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
- \ifx\pgf@circ@temp\pgf@temp%draw flow at a short at middle of the line
- (\tikztostart)--(\tikztotarget)
- \else% normal bipole or source
- \ifpgf@circuit@bipole@flow@before
- (\tikztostart)--(anchorstartnode)
- \else
- (anchorendnode)--(\tikztotarget)
- \fi
- \fi
- \pgfextra{
- \ifpgf@circuit@bipole@flow@backward
- \ifpgf@circuit@bipole@flow@below
- \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \else
- \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \fi
- \pgfmathsubtract{\pgf@circ@ffffff}{180}
- \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \else
- \ifpgf@circuit@bipole@flow@below
- \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \else
- \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \fi
- \fi
- }
- coordinate[flowarrow,pos=\ctikzvalof{flow/distance},rotate=\pgf@circ@ffffff,yshift=\flow@offset](Farrowpos)
- (Farrowpos.\pgf@circ@bipole@flow@label@where) node[anchor=\pgf@circ@dir]{ \pgf@circ@finallabels{flow/label}}
-}
-
-%%%---------- close: tex/pgfcircflow
-
-\ExecuteOptions{nofetbodydiode,nofetsolderdot,nooldvoltagedirection,europeancurrents,europeanvoltages,americanports,americanresistors,cuteinductors,europeangfsurgearrester,nosiunitx,noarrowmos,smartlabels,nocompatibility}
-
-\ProcessOptions\relax
-
-%%%%%%%%%%% Springe nach tex/pgfcircpath
-%%%---------- open: tex/pgfcircpath.tex
-
-\def\pgf@circ@direction{0.0}
-
-% Names
-\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
-\ctikzset{n/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/name=#1}
-}}
-
-% Reflect the node along
-\ctikzset{mirrored/.is choice}
-\ctikzset{mirror value/.initial=1}
-\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
-\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
-\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
-
-% Invert node along path
-\ctikzset{inverted/.is choice}
-\ctikzset{invert value/.initial=1}
-\ctikzset{inverted/true/.code = {\ctikzsetvalof{invert value}{-1}\pgf@circuit@bipole@invertedtrue}}
-\ctikzset{inverted/false/.code = {\ctikzsetvalof{invert value}{1}\pgf@circuit@bipole@invertedfalse}}
-\ctikzset{invert/.style = {/tikz/circuitikz/inverted=true}}
-\newif\ifpgf@circuit@bipole@inverted
-\ctikzset{bipole/inverted/.is if=pgf@circuit@bipole@inverted}
-
-
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-
-
-
-% Initialize paths
-\def\pgfcircresetpath{
- \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90, ,bipole/annotation/name=, bipole/annotation/position=-90,
- bipole/inverted=false, bipole/kind=,
- bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
- bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
- bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
- bipole/current/y position=above, bipole/current/direction=forward,
- mirrored=false
- }
-}
-
-%% Helper function for path-function to ensure using anchors between nodes
-\def\set@explicit@center@anchor#1{
- \pgfutil@ifundefined{pgf@sh@ns@#1}
- {
- %This coordinate is no node(but a relative position or a coordinate), no further handling needed
- }{
- \pgfutil@in@.{#1}
- \ifpgfutil@in@
- % Anchor is used, do nothing!
- \else%
- \let\tikz@moveto@waiting=\relax
- \pgfpathmoveto{\tikz@last@position}%force movement, because tikz@moveto@waiting
- \edef#1{#1.center}%ensure using center anchor
- \fi
- }
-}
-
-
-%% Generic bipole path
-\def\pgf@circ@bipole@path#1#2{
-
-\pgfextra{
- \set@explicit@center@anchor{\tikztostart}
- \set@explicit@center@anchor{\tikztotarget}
- \pgfsyssoftpath@getcurrentpath{\myp@th}%% save current path to extend after calculation of correct start/end coordinates
- \ctikzset{bipole/kind = #1}
- \edef\pgf@temp{\ctikzvalof{bipole/name}}
- \def\pgf@circ@temp{}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = #2\pgf@circ@rand} % create it
- \fi
- }
-
- (\tikztostart) coordinate (\ctikzvalof{bipole/name}start)%necessary to get correct coordinates in the case of relativ start/end or constructions like ((node1)-|(node2))
- (\tikztotarget) coordinate (\ctikzvalof{bipole/name}end)
- \pgfextra{
- \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \edef\pgf@circ@direction{\pgfmathresult}%Calculate direction(angle) of path
- \pgfsyssoftpath@setcurrentpath{\myp@th}
- }
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- \else
- --($(\ctikzvalof{bipole/name}start) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}end)$) %ugly workaround to get correct linejoins(node breaks path?)
- \fi
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)%%positio of middle node
- node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}, xscale=\ctikzvalof{invert value}]
- (\ctikzvalof{bipole/name}) {}
- \ifpgf@circuit@bipole@inverted
- \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathend)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathstart)
- \else
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.right)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.left)
- \fi
- \else
- \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathstart)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathend)
- \else
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.left)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.right)
- \fi
- \fi
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- \else
- \ifpgf@circuit@bipole@strokedsymbol%draw line thrue symbol(e.g. diodes)
- \ifcsname pgf@anchor@#1shape@strokepathstart\endcsname%if special path-anchors are defined, use them!
- (\ctikzvalof{bipole/name}start.center) -- (\ctikzvalof{bipole/name}.strokepathstart)
- (\ctikzvalof{bipole/name}.strokepathend) -- (\ctikzvalof{bipole/name}end.center)
- \else
- (\ctikzvalof{bipole/name}start.center) -- (\ctikzvalof{bipole/name}end.center)
- \fi
- \else
- (\ctikzvalof{bipole/name}start.center) -- (anchorstartnode)
- (anchorendnode) -- (\ctikzvalof{bipole/name}end.center)
- \fi
- \fi
-
- \drawpoles
- \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabels{label}\fi
- \pgf@circ@ifkeyempty{bipole/annotation/name}\else\pgf@circ@drawlabels{annotation}\fi
- \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
- \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
- \pgf@circ@ifkeyempty{bipole/flow/label/name}\else\pgf@circ@drawflow\fi
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- (\ctikzvalof{bipole/name}end)%Move to end of path
- \else
- ($(\ctikzvalof{bipole/name}end) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}start)$) -- (\ctikzvalof{bipole/name}end)%ugly workaround to get correct linejoins(node breaks path?)
- %tikztostart and tikztotarget could not be used, because it would break if target coordinate is something like (node1-|node2)
-
- \fi
- % reset
- \pgfextra{
- \pgfcircresetpath
- }
- \tikztonodes%draw pending nodes an path
-}
-
-
-%% Path definitions
-\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
-\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
-\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
-\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
-\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
-\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
-\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
-\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
-\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
-\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
-\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
-\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
-\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
-\def\pgf@circ@batteryone@path#1{\pgf@circ@bipole@path{battery1}{#1}}
-\def\pgf@circ@batterytwo@path#1{\pgf@circ@bipole@path{battery2}{#1}}
-\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
-\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
-\def\pgf@circ@inductor@path#1{%
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@europeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@cuteinductor@path{#1}%
- \else%
- \pgf@circ@americaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@vinductor@path#1{
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@veuropeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@vcuteinductor@path{#1}%
- \else%
- \pgf@circ@vamericaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
-\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
-\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
-\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
-\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
-\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
-\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
-\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
-\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
-\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
-\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
-\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
-\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
-\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
-\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
-\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
-\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
-\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
-\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
-\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
-\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
-\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
-\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
-\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
-\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
-\def\pgf@circ@nos@path#1{\pgf@circ@bipole@path{nos}{#1}}
-\def\pgf@circ@ncs@path#1{\pgf@circ@bipole@path{ncs}{#1}}
-\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
-\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
-\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
-\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
-\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
-\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
-\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
-\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
-\def\pgf@circ@empty@path#1{}
-\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
-\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
-\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
-\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
-\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
-\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
-\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
-\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
-\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
-\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
-\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
-\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
-\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
-
-\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
-\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
-\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
-
-\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
-\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
-\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
-\def\pgf@circ@bandstop@path#1{\pgf@circ@bipole@path{bandstop}{#1}}
-\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
-\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
-\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
-\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
-\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
-\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
-\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
-\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
-\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
-\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
-\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
-\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
-\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
-\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
-\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
-
-%%Mechanical
-\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
-\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
-\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
-
-
-
-
-%% Styles
-
-\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
-\def\compattikzset#1{\tikzset{\comnpatname#1}}
-
-%\def\ctikzsetbipole#1#2{%
-% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
-%}
-
-\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
-\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
-\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
-\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
-\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
-\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
-\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
-\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
-\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
-\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
-\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
-\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
-\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
-\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
-\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
-\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
-\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
-\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
-\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
-\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
-\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
-\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batteryone@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{battery2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batterytwo@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
-\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
-\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
-\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
-\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
-\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
-\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
-\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
-\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
-\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
-\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
-\compattikzset{transmission line/.style = {tline = #1}}
-\compattikzset{TL/.style = {tline = #1}}
-\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-
-\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source = #1, \circuitikzbasekey/bipole/is current=true}}
-\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source = #1, \circuitikzbasekey/bipole/is current=true}}
-
-
-\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
-\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
-\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
-\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
-\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
-\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
-\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
-
-\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
-
-\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
-\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
-\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
-\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
-\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
-
-\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
-\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
-\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
-\compattikzset{bandstop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandstop@path}}
-\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
-\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
-\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
-\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
-\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
-\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
-\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
-\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
-\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
-\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
-\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
-\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
-\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
-\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
-\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
-
-% % % % % %
-% % Beginn of Diodes
-% % % % % %
-
-\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
-\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
-\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
-\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
-\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
-\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
-\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
-\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
-\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
-\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
-\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
-\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
-\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
-\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
-\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
-\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
-
-\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
-\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
-\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
-\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
-\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
-\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
-\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
-\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
-\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
-\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
-
-\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
-\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
-%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
-
-\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
-\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
-\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
-\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
-\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
-\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
-\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
-\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
-\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
-\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
-
-%% Define Shortcuts
-\compattikzset{Do/.style = {\comnpatname empty diode}}
-\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
-\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
-\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
-\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
-\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
-\compattikzset{leDo/.style = {\comnpatname empty led}}
-\compattikzset{VCo/.style = {\comnpatname empty varcap}}
-\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
-\compattikzset{Tro/.style = {\comnpatname empty triac}}
-
-\compattikzset{D*/.style = {\comnpatname full diode}}
-\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
-\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
-\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
-\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
-\compattikzset{pD*/.style = {\comnpatname full photodiode}}
-\compattikzset{leD*/.style = {\comnpatname full led}}
-\compattikzset{VC*/.style = {\comnpatname full varcap}}
-\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
-\compattikzset{Tr*/.style = {\comnpatname full triac}}
-
-\compattikzset{D/.style = {\comnpatname diode}}
-\compattikzset{tD/.style = {\comnpatname tunnel diode}}
-\compattikzset{zD/.style = {\comnpatname Zener diode}}
-\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
-\compattikzset{sD/.style = {\comnpatname Schottky diode}}
-\compattikzset{pD/.style = {\comnpatname photodiode}}
-\compattikzset{leD/.style = {\comnpatname led}}
-\compattikzset{VC/.style = {\comnpatname varcap}}
-\compattikzset{Ty/.style = {\comnpatname thyristor}}
-\compattikzset{Tr/.style = {\comnpatname triac}}
-
-\compattikzset{D-/.style = {\comnpatname stroke diode}}
-\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
-\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
-\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
-\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
-\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
-\compattikzset{leD-/.style = {\comnpatname stroke led}}
-\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
-\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
-\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
-
-% % % % % %
-% % End of Diodes
-% % % % % %
-
-
-\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
-\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
-\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
-\compattikzset{ncs/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
-\compattikzset{nos/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
-\compattikzset{normal closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
-\compattikzset{normal open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
-\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
-\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
-
-\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
-\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
-\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
-
-% short forms
-\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, l=#1}}
-
-\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path, i=#1}}
-\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosource@path, v=#1}}
-
-\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
-\compattikzset{isource/.style = {\comnpatname current source = #1}}
-\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
-\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-
-\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-
-\compattikzset{R/.style= {\comnpatname resistor = #1}}
-%\ifpgf@circuit@compat\else\compattikzset{R/.style= {resistor = #1}}\fi
-\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
-\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
-\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
-\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
-\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
-\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
-\compattikzset{C/.style = {\comnpatname capacitor = #1}}
-\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
-\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
-\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
-\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
-\compattikzset{L/.style = {\comnpatname inductor = #1}}
-\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
-\compattikzset{V/.style = {\comnpatname voltage source = #1}}
-\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
-\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\def\pgf@temp#1{
- \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
- \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
- \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
- \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-
-%current sources
-\compattikzset{I/.style = {\comnpatname current source = #1}}
-\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\def\pgf@temp#1{
- \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
- \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
- \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
- \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-
-
-
-\compattikzset{Mr/.style = {\comnpatname memristor}}
-
-\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
-\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
-\compattikzset{spst/.style = {\comnpatname switch = #1}}
-
-\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
-
-\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
-\compattikzset{vss/.style = {\comnpatname vee = #1}}
-
-\def\inheritlogicport#1#2{
- \pgfdeclareshape{#2 port}{
- \inheritsavedanchors[from=#1 #2 port]
- \inheritbackgroundpath[from=#1 #2 port]
- \inheritanchor[from=#1 #2 port]{in}
- \inheritanchor[from=#1 #2 port]{in 1}
- \inheritanchor[from=#1 #2 port]{in 2}
- \inheritanchor[from=#1 #2 port]{out}
- \inheritanchor[from=#1 #2 port]{center}
- \inheritanchor[from=#1 #2 port]{left}
- }
-}
-
-\ifpgf@circuit@europeanlogicport
- \inheritlogicport{european}{and}
- \inheritlogicport{european}{or}
- \inheritlogicport{european}{xor}
- \inheritlogicport{european}{not}
- \inheritlogicport{european}{nand}
- \inheritlogicport{european}{nor}
- \inheritlogicport{european}{xnor}
-\else
- \inheritlogicport{american}{and}
- \inheritlogicport{american}{or}
- \inheritlogicport{american}{xor}
- \inheritlogicport{american}{not}
- \inheritlogicport{american}{nand}
- \inheritlogicport{american}{nor}
- \inheritlogicport{american}{xnor}
-\fi
-
-% Transistor like bipoles
-
-\def\pgf@circ@trans@path#1#2{
- \pgfextra{
- \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
- \def\pgf@circ@temp{#2}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
- \fi
- }
- \ifpgf@circuit@bipole@inverted
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- \else
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- \fi
- \pgfextra{
- \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \pgfmathadd{\pgfmathresult}{-90}
- \edef\pgf@circ@direction{\pgfmathresult}
- }
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)
- node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
- (\ctikzvalof{bipole/name}) {} node {\ctikzvalof{bipole/label/name}}
- \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
- (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
- \else
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
- (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
- \fi
- \pgfextra{
- \pgfcircresetpath
- }
- (\tikztotarget) \tikztonodes % e si continua
-}
-
-
-\def\pgf@circ@definetranspath#1{
- \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
-}
-
-\pgf@circ@definetranspath{elmech}
-\pgf@circ@definetranspath{nmos}
-\pgf@circ@definetranspath{pmos}
-\pgf@circ@definetranspath{npn}
-\pgf@circ@definetranspath{pnp}
-\pgf@circ@definetranspath{nfet}
-\pgf@circ@definetranspath{nigfete}
-\pgf@circ@definetranspath{nigfetd}
-\pgf@circ@definetranspath{nigfetebulk}
-\pgf@circ@definetranspath{pfet}
-\pgf@circ@definetranspath{pigfete}
-\pgf@circ@definetranspath{pigfetd}
-\pgf@circ@definetranspath{pigfetebulk}
-\pgf@circ@definetranspath{njfet}
-\pgf@circ@definetranspath{pjfet}
-\pgf@circ@definetranspath{pigbt}
-\pgf@circ@definetranspath{nigbt}
-\pgf@circ@definetranspath{Lpigbt}
-\pgf@circ@definetranspath{Lnigbt}
-%%%---------- close: tex/pgfcircpath
-
-\ifpgf@circ@siunitx
- \RequirePackage{xstring}[2009/03/13]
- %\expandafter\let\csname angstrom\endcsname\relax
- \RequirePackage{siunitx}
-\fi
-
-
-
-\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
-%override (unused) circuitikz environment for compability to externalization)
-\let\circuitikz\tikzpicture
-\let\endcircuitikz\endtikzpicture
-
-\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.3-body.tex b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.3-body.tex
new file mode 100644
index 0000000000..de4190f52b
--- /dev/null
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.3-body.tex
@@ -0,0 +1,16743 @@
+% Copyright 2018-2021 by Romano Giannetti
+% Copyright 2015-2021 by Stefan Lindner
+% Copyright 2013-2021 by Stefan Erhardt
+% Copyright 2007-2021 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+\NeedsTeXFormat{LaTeX2e}
+
+\def\pgfcircversion{0.9.3}
+\def\pgfcircversiondate{2019/07/13}
+
+%% Version 3.0 of pgf/TikZ is required
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+%
+% "arrows" library is deprecated, and behave badly with
+% arrows on short paths. Change to the new arrows.meta
+% In pfgcirc.define, we will add the old definition of
+% latex' which we have lost in the transition
+%
+\usetikzlibrary{arrows.meta, bending}
+
+% The options are listed in the manual in this order
+
+\DeclareOption{europeanvoltage}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{straightvoltages}{
+ \pgf@circuit@bipole@voltage@straighttrue
+}
+
+\DeclareOption{americanvoltage}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrent}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrent}{
+ \ctikzset{current = american}
+}
+
+
+
+\DeclareOption{americanresistor}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistor}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductor}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductor}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductor}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanport}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanport}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{european}{
+ \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
+ \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester choice = european}
+}
+
+\DeclareOption{american}{
+ \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester choice = american}
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{fulldiodes}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiodes}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{europeanvoltages}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{americanvoltages}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrents}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrents}{
+ \ctikzset{current = american}
+}
+
+\DeclareOption{americanresistors}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistors}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductors}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductors}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductors}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanports}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanports}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{americangfsurgearrester}{
+ \ctikzset{gas filled surge arrester choice = american}
+}
+
+\DeclareOption{europeangfsurgearrester}{
+ \ctikzset{gas filled surge arrester choice = european}
+}
+
+\DeclareOption{siunitx}{
+ \pgf@circ@siunitxtrue
+}
+
+\DeclareOption{nosiunitx}{
+ \pgf@circ@siunitxfalse
+}
+
+\DeclareOption{fulldiode}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiode}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{strokediode}{
+ \ctikzset{diode = stroke}
+}
+
+\DeclareOption{arrowmos}{
+ \pgf@circuit@mos@arrowstrue
+}
+
+\DeclareOption{noarrowmos}{
+ \pgf@circuit@mos@arrowsfalse
+}
+
+\DeclareOption{fetbodydiode}{
+ \pgf@circuit@fet@bodydiodetrue
+}
+
+\DeclareOption{nofetbodydiode}{
+ \pgf@circuit@fet@bodydiodefalse
+}
+
+\DeclareOption{fetsolderdot}{
+ \pgf@circuit@fet@solderdottrue
+}
+
+\DeclareOption{nofetsolderdot}{
+ \pgf@circuit@fet@solderdotfalse
+}
+
+\DeclareOption{emptypmoscircle}{
+ \pgf@circuit@pmos@emptycircletrue
+}
+
+
+\DeclareOption{lazymos}{
+ \ctikzset{tripoles/nmos/width=.5}
+ \ctikzset{tripoles/nmos/gate height=.35}
+ \ctikzset{tripoles/nmos/base height=.35}
+ \ctikzset{tripoles/nmos/height/.initial=1.2}
+ \ctikzset{tripoles/nmos/base width=.5}
+ \ctikzset{tripoles/nmos/gate width=.65}
+
+ \ctikzset{tripoles/pmos/width=.5}
+ \ctikzset{tripoles/pmos/gate height=.35}
+ \ctikzset{tripoles/pmos/base height=.35}
+ \ctikzset{tripoles/pmos/height/.initial=1.2}
+ \ctikzset{tripoles/pmos/base width=.5}
+ \ctikzset{tripoles/pmos/gate width=.65}
+
+ \pgf@circuit@pmos@emptycircletrue
+}
+
+\DeclareOption{straightlabels}{
+ \ctikzset{label/align = straight}
+}
+
+\DeclareOption{rotatelabels}{
+ \ctikzset{label/align = rotate}
+}
+
+\DeclareOption{smartlabels}{
+ \ctikzset{label/align = smart}
+}
+
+\DeclareOption{compatibility}{
+ \pgf@circuit@compattrue
+}
+
+\DeclareOption{oldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectiontrue
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriesfalse
+}
+\DeclareOption{nooldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectionfalse
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriesfalse
+}
+
+\DeclareOption{RPvoltages}{
+ \pgf@circ@oldvoltagedirectiontrue
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriestrue
+}
+\DeclareOption{EFvoltages}{
+ \pgf@circ@oldvoltagedirectionfalse
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriestrue
+}
+
+
+\DeclareOption{betterproportions}{
+ \ctikzset{monopoles/ground/width/.initial=.15}
+
+ \ctikzset{bipoles/resistor/height/.initial=.23}
+ \ctikzset{bipoles/resistor/width/.initial=.6}
+ \ctikzset{bipoles/capacitor/height/.initial=.4}
+ \ctikzset{bipoles/capacitor/width/.initial=.1}
+ \ctikzset{bipoles/potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
+ \ctikzset{bipoles/photoresistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistor/main/.initial=.7}
+ \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
+ \ctikzset{bipoles/thermistorptc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorptc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/main/.initial=.7}
+ \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/width/.initial=.6}
+ \ctikzset{bipoles/vresistor/height/.initial=.45}
+ \ctikzset{bipoles/vresistor/width/.initial=.6}
+ \ctikzset{bipoles/generic/height/.initial=.23}
+ \ctikzset{bipoles/generic/width/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/ageneric/height/.initial=.23}
+ \ctikzset{bipoles/ageneric/width/.initial=.6}
+ \ctikzset{bipoles/memristor/height/.initial=.23}
+ \ctikzset{bipoles/memristor/wave height/.initial=.375}
+ \ctikzset{bipoles/memristor/width/.initial=.60}
+ \ctikzset{bipoles/tgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tgeneric/width/.initial=.6}
+ \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
+ \ctikzset{bipoles/fullgeneric/height/.initial=.23}
+ \ctikzset{bipoles/fullgeneric/width/.initial=.6}
+ \ctikzset{bipoles/diode/height/.initial=.3}
+ \ctikzset{bipoles/diode/width/.initial=.25}
+ \ctikzset{bipoles/bidirectionaldiode/height/.initial=.66}
+ \ctikzset{bipoles/bidirectionaldiode/width/.initial=.6}
+ \ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
+ \ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
+
+ \ctikzset{tripoles/thyristor/height/.initial=.66}
+ \ctikzset{tripoles/thyristor/height 2/.initial=.3}
+ \ctikzset{tripoles/thyristor/width/.initial=.6}
+ \ctikzset{tripoles/thyristor/diode height/.initial=.3}
+ \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+ \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+ \ctikzset{tripoles/triac/height/.initial=.66}
+ \ctikzset{tripoles/triac/width/.initial=.6}
+ \ctikzset{tripoles/triac/diode width left/.initial=.3}
+ \ctikzset{tripoles/triac/diode width right/.initial=.3}
+}
+
+% This is a nice hack that prints all the shapes declared
+% by the package. Very useful for coverage testing and debugging.
+%
+% \let\origpgfdeclareshape=\pgfdeclareshape
+% \def\pgfdeclareshape#1{%
+% \typeout{SHAPE:\space"#1"}%
+% \origpgfdeclareshape{#1}
+% }
+
+
+%%%%%%%%%
+%%%%%%%%%%% Springe nach tex/pgfcirc.defines
+%%%---------- open: tex/pgfcirc.defines.tex
+%% Counters
+
+\newcount\pgf@circ@count@a
+\newcount\pgf@circ@count@b
+\newcount\pgf@circ@count@c
+%%%%%%%%%%%%
+%% Dimensions
+
+% coordinates
+\newdimen\pgf@circ@res@up
+\newdimen\pgf@circ@res@down
+\newdimen\pgf@circ@res@zero
+\newdimen\pgf@circ@res@left
+\newdimen\pgf@circ@res@right
+\newdimen\pgf@circ@res@other
+\newdimen\pgf@circ@res@step
+\newdimen\pgf@circ@res@temp
+% inital thickness
+\newdimen \pgfstartlinewidth
+
+% arrow tips, ported over old arrows library (deprecated)
+% see https://tex.stackexchange.com/questions/234084/latex-arrow-tip-with-arrows-meta-library
+% this was the original definition of latex' tips, renamed to avoid clashes
+%
+\pgfarrowsdeclare{latexslim}{latexslim}
+{
+ \pgfutil@tempdima=0.28pt%
+ \advance\pgfutil@tempdima by.3\pgflinewidth%
+ \pgfarrowsleftextend{+-4\pgfutil@tempdima}
+ \pgfarrowsrightextend{+6\pgfutil@tempdima}
+}
+{
+ \pgfutil@tempdima=0.28pt%
+ \advance\pgfutil@tempdima by.3\pgflinewidth%
+ \pgfpathmoveto{\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
+ \pgfpathcurveto
+ {\pgfqpoint{3.5\pgfutil@tempdima}{.5\pgfutil@tempdima}}
+ {\pgfqpoint{-1\pgfutil@tempdima}{1.5\pgfutil@tempdima}}
+ {\pgfqpoint{-4\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
+ \pgfpathcurveto
+ {\pgfqpoint{-1.5\pgfutil@tempdima}{1\pgfutil@tempdima}}
+ {\pgfqpoint{-1.5\pgfutil@tempdima}{-1\pgfutil@tempdima}}
+ {\pgfqpoint{-4\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
+ \pgfpathcurveto
+ {\pgfqpoint{-1\pgfutil@tempdima}{-1.5\pgfutil@tempdima}}
+ {\pgfqpoint{3.5\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
+ {\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
+ \pgfpathclose
+ \pgfusepathqfill
+}
+
+\pgfarrowsdeclarereversed{latexslim reversed}{latexslim reversed}{latexslim}{latexslim}
+
+%% Macro to fill or draw
+
+\def\pgf@circ@draworfill{%
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgfusepath{draw}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{draw, fill}
+ \fi
+}
+
+\def\pgf@circ@draworfillandclip{%
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgfusepath{draw, clip}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{draw, clip, fill}
+ \fi
+}
+
+\def\pgf@circ@maybefill{%
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgfusepath{discard}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{fill}
+ \fi
+}
+%% Keys
+
+\long\def\pgf@circ@comment#1{}
+
+\def\circuitikzbasekey{/tikz/circuitikz}
+
+\pgfkeys{\circuitikzbasekey/.is family}
+
+\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
+\let\ctikzset\circuitikzset
+\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
+\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circuit@compat
+\newif\ifpgf@circ@oldvoltagedirection % default false
+\newif\ifpgf@circ@explicitvdir
+\newif\ifpgf@circ@fixbatteries
+
+\ctikzset{voltage dir/.is choice}
+\ctikzset{voltage dir/old/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriesfalse}}
+\ctikzset{voltage dir/noold/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriesfalse}}
+\ctikzset{voltage dir/RP/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriestrue}}
+\ctikzset{voltage dir/EF/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriestrue}}
+\tikzset{voltage dir/.style={circuitikz/voltage dir=#1}}
+
+
+% Option ">" for twoports
+\newif\ifpgf@circuit@inputarrow
+\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/.is choice}
+\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
+
+% Option "boxed" for nodes and twoports
+\newif\ifpgf@circuit@boxed
+\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
+
+% Option "dashed" for nodes and twoports
+\newif\ifpgf@circuit@dashed
+\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
+\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}
+
+% Option "t=*" for nodes
+\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
+
+\ctikzset{current arrow scale/.initial=16}
+
+\ctikzset{bipoles/.is family}
+\ctikzset{bipoles/border margin/.initial=1.1}
+\ctikzset{bipoles/thickness/.initial=2}
+\ctikzset{tripoles/thickness/.initial=2}
+\ctikzset{quadpoles/thickness/.initial=2}
+\ctikzset{nodes width/.initial=.04}
+
+% Base len for all circuitikz
+\newdimen\pgf@circ@Rlen
+\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1}}
+\pgf@circ@Rlen = 1.4cm
+
+\ctikzset{monopoles/.is family}
+\ctikzset{monopoles/ground/width/.initial=.25}
+\ctikzset{monopoles/ground/connectionthickness/.initial=1}
+\ctikzset{monopoles/ground/thickness/.initial=2}
+\ctikzset{monopoles/rground/thickness/.initial=2}
+\ctikzset{monopoles/tground/thickness/.initial=3}
+\ctikzset{monopoles/vcc/width/.initial=.2}
+\ctikzset{monopoles/vcc/arrow/.initial=legacy}
+\ctikzset{monopoles/vee/arrow/.initial=legacy}
+\ctikzset{monopoles/match/width/.initial=.4}
+\ctikzset{monopoles/chassis/width/.initial=.25}
+\ctikzset{monopoles/alternative chassis/width/.initial=.25}
+\ctikzset{monopoles/equipotentiality/width/.initial=.25}
+\ctikzset{monopoles/tlinestub/width/.initial=.25}
+\ctikzset{monopoles/antenna/width/.initial=.25}
+\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/width/.initial=.25}
+\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/rxantenna/width/.initial=.25}
+\ctikzset{monopoles/bareantenna/width/.initial=.25}
+\ctikzset{monopoles/bareantenna/label/xanchor/.initial=1}
+\ctikzset{monopoles/bareantenna/label/yanchor/.initial=0.5}
+\ctikzset{monopoles/waves/width/.initial=0.5}
+% microstrips
+\ctikzset{bipoles/mstline/height/.initial=0.3}
+\ctikzset{bipoles/mstline/width/.initial=1.2}
+\pgfkeys{/tikz/mstlinelen/.add code={}{\ctikzset{bipoles/mstline/width=#1}}}
+\ctikzset{monopoles/msport/width/.initial=.5}
+\ctikzset{monopoles/msrstub/height/.initial=1.0}
+\ctikzset{monopoles/msrstub/width/.initial=0.6}
+
+% microphone and loudspeaker
+\ctikzset{bipoles/loudspeaker/height/.initial=.8}
+\ctikzset{bipoles/loudspeaker/depth/.initial=.3}
+\ctikzset{bipoles/loudspeaker/width/.initial=.8}
+\ctikzset{bipoles/mic/height/.initial=1.2}
+\ctikzset{bipoles/mic/depth/.initial=.0}
+\ctikzset{bipoles/mic/width/.initial=.8}
+
+\ctikzset{bipoles/resistor/height/.initial=.3}
+\ctikzset{bipoles/resistor/width/.initial=.8}
+\ctikzset{bipoles/potentiometer/height/.initial=.8}
+\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
+\ctikzset{bipoles/potentiometer/width/.initial=.8}
+\ctikzset{bipoles/photoresistor/height/.initial=.6}
+\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
+\ctikzset{bipoles/photoresistor/width/.initial=.8}
+\ctikzset{bipoles/thermistor/main/.initial=.7}
+\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/width/.initial=.8}
+\ctikzset{bipoles/thermistorntc/main/.initial=.7}
+\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistorptc/width/.initial=.8}
+\ctikzset{bipoles/thermistorptc/main/.initial=.7}
+\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistor/width/.initial=.8}
+\ctikzset{bipoles/varistor/main/.initial=.7}
+\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/varistor/width/.initial=.8}
+\ctikzset{bipoles/vresistor/height/.initial=.6}
+\ctikzset{bipoles/vresistor/width/.initial=.8}
+\ctikzset{bipoles/cuteinductor/height/.initial=.3}
+\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
+\ctikzset{bipoles/cuteinductor/width/.initial=.6}
+\ctikzset{bipoles/cuteinductor/coils/.initial=5}
+\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+%% Cute choke settings
+\ctikzset{bipoles/cutechoke/height/.initial=.3}
+\ctikzset{bipoles/cutechoke/lower coil height/.initial=.15}
+\ctikzset{bipoles/cutechoke/width/.initial=.6}
+\ctikzset{bipoles/cutechoke/coils/.initial=5}
+\ctikzset{bipoles/cutechoke/coil aspect/.initial=.5}%percentage of choke width, which is covered by lower coil
+\ctikzset{bipoles/cutechoke/cstep/.initial=.3}
+\ctikzset{bipoles/cutechoke/cdist/.initial=1.3}
+\ctikzset{bipoles/cutechoke/cthick/.initial=1}
+\newif\ifpgf@circuit@bipole@twolines
+\pgf@circuit@bipole@twolinesfalse
+%
+\ctikzset{bipoles/americaninductor/height/.initial=.3}
+\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
+\ctikzset{bipoles/americaninductor/width/.initial=.8}
+\ctikzset{bipoles/americaninductor/coils/.initial=4}
+\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
+\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
+\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
+\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
+\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
+\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
+\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/esource/height/.initial=.60}
+\ctikzset{bipoles/esource/width/.initial=.60}
+\ctikzset{bipoles/pvsource/height/.initial=.60}
+\ctikzset{bipoles/pvsource/width/.initial=.60}
+\ctikzset{bipoles/isource/height/.initial=.60}
+\ctikzset{bipoles/isource/width/.initial=.60}
+\ctikzset{bipoles/oosource/height/.initial=.60}
+\ctikzset{bipoles/oosource/width/.initial=.60}
+\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/dcisource/angle/.initial=80}
+\ctikzset{bipoles/dcisource/height/.initial=.60}
+\ctikzset{bipoles/dcisource/width/.initial=.60}
+\ctikzset{bipoles/dcvsource/height/.initial=.60}
+\ctikzset{bipoles/dcvsource/width/.initial=.60}
+\ctikzset{bipoles/vsourcetri/height/.initial=.60}
+\ctikzset{bipoles/vsourcetri/width/.initial=.60}
+\ctikzset{bipoles/isourceam/height/.initial=.60}
+\ctikzset{bipoles/isourceam/width/.initial=.60}
+\ctikzset{bipoles/vsource/height/.initial=.60}
+\ctikzset{bipoles/vsource/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/height/.initial=.60}
+\ctikzset{bipoles/vsourceam/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/margin/.initial=.7}
+\ctikzset{bipoles/isourcesin/height/.initial=.60}
+\ctikzset{bipoles/isourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesin/height/.initial=.60}
+\ctikzset{bipoles/vsourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
+\ctikzset{bipoles/cisource/height/.initial=.7}
+\ctikzset{bipoles/cisource/width/.initial=.7}
+\ctikzset{bipoles/cisourceam/height/.initial=.7}
+\ctikzset{bipoles/cisourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsource/height/.initial=.7}
+\ctikzset{bipoles/cvsource/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/height/.initial=.7}
+\ctikzset{bipoles/cvsourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
+\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
+\ctikzset{bipoles/cisourcesin/width/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
+\ctikzset{bipoles/capacitor/height/.initial=.6}
+\ctikzset{bipoles/capacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/height/.initial=.5}
+\ctikzset{bipoles/ecapacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/font/.initial= \fontsize{6}{0}\selectfont\boldmath}
+\ctikzset{bipoles/pcapacitor/height/.initial=.6}
+\ctikzset{bipoles/pcapacitor/width/.initial=.2}
+\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
+\ctikzset{bipoles/vcapacitor/height/.initial=.6}
+\ctikzset{bipoles/vcapacitor/width/.initial=.5}
+\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
+\ctikzset{bipoles/piezoelectric/height/.initial=.7}
+\ctikzset{bipoles/piezoelectric/width/.initial=.5}
+\ctikzset{bipoles/battery/height/.initial=.6}
+\ctikzset{bipoles/battery/width/.initial=.3}
+\ctikzset{bipoles/battery1/height/.initial=.6}
+\ctikzset{bipoles/battery1/width/.initial=.3}
+\ctikzset{bipoles/battery2/height/.initial=.6}
+\ctikzset{bipoles/battery2/width/.initial=.3}
+\ctikzset{bipoles/diode/height/.initial=.50}
+\ctikzset{bipoles/diode/width/.initial=.40}
+\ctikzset{bipoles/bidirectionaldiode/height/.initial=1.1}
+\ctikzset{bipoles/bidirectionaldiode/width/.initial=1}
+\ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
+\ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
+\ctikzset{bipoles/varcap/height/.initial=.50}
+\ctikzset{bipoles/varcap/width/.initial=.45}
+\ctikzset{bipoles/spst/height/.initial=.35}
+\ctikzset{bipoles/spst/width/.initial=.35}
+\ctikzset{bipoles/spst/depth/.initial=.2}
+\ctikzset{bipoles/nos/height/.initial=.3}
+\ctikzset{bipoles/nos/width/.initial=.35}
+\ctikzset{bipoles/nos/depth/.initial=.2}
+\ctikzset{bipoles/ncs/height/.initial=.35}
+\ctikzset{bipoles/ncs/width/.initial=.35}
+\ctikzset{bipoles/ncs/depth/.initial=.2}
+\ctikzset{bipoles/generic/height/.initial=.30}
+\ctikzset{bipoles/generic/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
+\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
+\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
+\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
+\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
+\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
+\ctikzset{bipoles/fuse/height/.initial=.20}
+\ctikzset{bipoles/fuse/width/.initial=.50}
+\ctikzset{bipoles/afuse/height/.initial=.20}
+\ctikzset{bipoles/afuse/width/.initial=.50}
+\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
+\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
+\ctikzset{bipoles/ageneric/height/.initial=.30}
+\ctikzset{bipoles/ageneric/width/.initial=.80}
+\ctikzset{bipoles/memristor/height/.initial=.30}
+\ctikzset{bipoles/memristor/wave height/.initial=.5}
+\ctikzset{bipoles/memristor/width/.initial=.80}
+\ctikzset{bipoles/tgeneric/height/.initial=.70}
+\ctikzset{bipoles/tgeneric/width/.initial=.80}
+\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
+\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
+\ctikzset{bipoles/fullgeneric/height/.initial=.30}
+\ctikzset{bipoles/fullgeneric/width/.initial=.80}
+\ctikzset{bipoles/open/height/.initial=.3} %necessary for curly voltages
+\ctikzset{bipoles/open/width/.initial=.3} %necessary for curly voltages
+\ctikzset{bipoles/open/voltage/straight label distance/.initial=0}
+\ctikzset{bipoles/open/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/short/height/.initial=0} %dummy height for voltage positioning
+\ctikzset{bipoles/short/width/.initial=0} %dummy width for voltage positioning
+%\ctikzset{bipoles/short/voltage/straight label distance/.initial=.2}
+%\ctikzset{bipoles/short/voltage/distance from node/.initial=.5}
+\ctikzset{bipoles/ammeter/height/.initial=.60}
+\ctikzset{bipoles/ammeter/width/.initial=.60}
+\ctikzset{bipoles/ohmmeter/height/.initial=.60}
+\ctikzset{bipoles/ohmmeter/width/.initial=.60}
+\ctikzset{bipoles/voltmeter/height/.initial=.60}
+\ctikzset{bipoles/voltmeter/width/.initial=.60}
+\ctikzset{bipoles/smeter/height/.initial=.60}
+\ctikzset{bipoles/smeter/width/.initial=.60}
+\ctikzset{bipoles/qmeter/depth/.initial=.40}
+\ctikzset{bipoles/qmeter/height/.initial=.80}
+\ctikzset{bipoles/qmeter/width/.initial=.60}
+\ctikzset{bipoles/iloop/width/.initial=.40}
+\ctikzset{bipoles/iloop/height/.initial=.60}
+\ctikzset{bipoles/oscope/height/.initial=.60}
+\ctikzset{bipoles/oscope/width/.initial=.60}
+\ctikzset{bipoles/buffer/height/.initial=1}
+\ctikzset{bipoles/buffer/width/.initial=1}
+\ctikzset{bipoles/not port/width/.initial=1}
+\ctikzset{bipoles/not port/height/.initial=.8}
+\ctikzset{bipoles/not port/circle width/.initial=.15}
+\ctikzset{bipoles/lamp/height/.initial=.60}
+\ctikzset{bipoles/lamp/width/.initial=.60}
+\ctikzset{bipoles/bulb/height/.initial=.8}
+\ctikzset{bipoles/bulb/width/.initial=.8}
+\ctikzset{bipoles/tline/height/.initial=.3}
+\ctikzset{bipoles/tline/width/.initial=.8}
+\ctikzset{bipoles/squid/height/.initial=.60}
+\ctikzset{bipoles/squid/width/.initial=.60}
+\ctikzset{bipoles/barrier/height/.initial=.60}
+\ctikzset{bipoles/barrier/width/.initial=.60}
+\ctikzset{bipoles/thermocouple/height/.initial=.250}
+\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
+\ctikzset{bipoles/thermocouple/width/.initial=.140}
+\ctikzset{bipoles/pushbutton/height/.initial=.5}
+\ctikzset{bipoles/pushbutton/height 2/.initial=.2}
+\ctikzset{bipoles/pushbutton/width/.initial=.50}
+
+\ctikzset{bipoles/twoport/width/.initial=.7}
+\ctikzset{bipoles/twoport/height/.initial=.7}
+\ctikzset{bipoles/twoport/text/.initial=}
+\ctikzset{bipoles/vco/width/.initial=.7}
+\ctikzset{bipoles/bandpass/width/.initial=.7}
+\ctikzset{bipoles/bandstop/width/.initial=.7}
+\ctikzset{bipoles/highpass/width/.initial=.7}
+\ctikzset{bipoles/lowpass/width/.initial=.7}
+\ctikzset{bipoles/adc/width/.initial=.7}
+\ctikzset{bipoles/dac/width/.initial=.7}
+\ctikzset{bipoles/dsp/width/.initial=.7}
+\ctikzset{bipoles/fft/width/.initial=.7}
+\ctikzset{bipoles/amp/width/.initial=.7}
+\ctikzset{bipoles/vamp/width/.initial=.7}
+\ctikzset{bipoles/piattenuator/width/.initial=.7}
+\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
+\ctikzset{bipoles/tattenuator/width/.initial=.7}
+\ctikzset{bipoles/vtattenuator/width/.initial=.7}
+\ctikzset{bipoles/phaseshifter/width/.initial=.7}
+\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
+\ctikzset{bipoles/detector/width/.initial=.7}
+% resistive sensor american style
+\ctikzset{bipoles/resistivesens/height/.initial=.6}
+\ctikzset{bipoles/resistivesens/width/.initial=.8}
+
+% crossing wires
+\ctikzset{bipoles/crossing/size/.initial=.2}
+
+\newif\ifpgf@circuit@trans@depletiontype
+\pgf@circuit@trans@depletiontypefalse
+
+\newif\ifpgf@circuit@mos@arrows
+\ctikzset{tripoles/mos style/.is choice}
+\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
+\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
+\pgfkeys{/tikz/arrowmos/.add code={}{\pgf@circuit@mos@arrowstrue}}
+\pgfkeys{/tikz/noarrowmos/.add code={}{\pgf@circuit@mos@arrowsfalse}}
+
+% Option solderdot for fet
+\newif\ifpgf@circuit@fet@solderdot
+\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+
+% Option bodydiode for fet
+\newif\ifpgf@circuit@fet@bodydiode
+\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+
+% Option draw fet without gate connection
+\newif\ifpgf@circuit@bpt@drawgate
+\pgf@circuit@bpt@drawgatetrue
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+
+% Option draw bpt without base connection
+\newif\ifpgf@circuit@bpt@drawbase
+\pgf@circuit@bpt@drawbasetrue
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+
+% Option draw bpt with optical input
+\newif\ifpgf@circuit@bpt@drawphoto
+\pgf@circuit@bpt@drawphotofalse
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+
+% Option draw pmos with empty circle
+\newif\ifpgf@circuit@pmos@emptycircle
+\pgf@circuit@pmos@emptycirclefalse
+\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+% Option draw pmos with no circle
+\newif\ifpgf@circuit@pmos@nocircle
+\pgf@circuit@pmos@nocirclefalse
+\pgfkeys{/tikz/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
+\ctikzset{tripoles/pmos style/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
+% back to normal
+\pgfkeys{/tikz/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
+\ctikzset{tripoles/pmos style/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
+
+
+\newif\ifpgf@circuit@trans@ntype
+\pgf@circuit@trans@ntypetrue %default true
+%\newif\ifpgf@circuit@trans@ptype
+%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
+\ctikzset{tripoles/nmos/width/.initial=.7}
+\ctikzset{tripoles/nmos/gate height/.initial=.35}
+\ctikzset{tripoles/nmos/base height/.initial=.5}
+\ctikzset{tripoles/nmos/conn height/.initial=0}
+\ctikzset{tripoles/nmos/height/.initial=1.1}
+\ctikzset{tripoles/nmos/base width/.initial=.5}
+\ctikzset{tripoles/nmos/gate width/.initial=.62}
+\ctikzset{tripoles/nmos/arrow pos/.initial=.6}
+\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nmos/curr direction/.initial=1}
+
+\ctikzset{tripoles/pmos/width/.initial=.7}
+\ctikzset{tripoles/pmos/gate height/.initial=.35}
+\ctikzset{tripoles/pmos/base height/.initial=.5}
+\ctikzset{tripoles/pmos/conn height/.initial=0}
+\ctikzset{tripoles/pmos/height/.initial=1.1}
+\ctikzset{tripoles/pmos/base width/.initial=.5}
+\ctikzset{tripoles/pmos/gate width/.initial=.62}
+\ctikzset{tripoles/pmos/arrow pos/.initial=.4}
+\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pmos/curr direction/.initial=-1}
+
+\ctikzset{tripoles/hemt/width/.initial=.7}
+\ctikzset{tripoles/hemt/gate height/.initial=.35}
+\ctikzset{tripoles/hemt/base height/.initial=.5}
+\ctikzset{tripoles/hemt/conn height/.initial=0}
+\ctikzset{tripoles/hemt/height/.initial=1.1}
+\ctikzset{tripoles/hemt/base width/.initial=.5}
+\ctikzset{tripoles/hemt/gate width/.initial=.62}
+\ctikzset{tripoles/hemt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/hemt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/hemt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/hemt/curr direction/.initial=1}
+
+\ctikzset{tripoles/nfet/width/.initial=.7}
+\ctikzset{tripoles/nfet/gate height/.initial=.35}
+\ctikzset{tripoles/nfet/base height/.initial=.5}
+\ctikzset{tripoles/nfet/conn height/.initial=0}
+\ctikzset{tripoles/nfet/height/.initial=1.1}
+\ctikzset{tripoles/nfet/base width/.initial=.5}
+\ctikzset{tripoles/nfet/gate width/.initial=.62}
+\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pfet/width/.initial=.7}
+\ctikzset{tripoles/pfet/gate height/.initial=.35}
+\ctikzset{tripoles/pfet/base height/.initial=.5}
+\ctikzset{tripoles/pfet/conn height/.initial=0}
+\ctikzset{tripoles/pfet/height/.initial=1.1}
+\ctikzset{tripoles/pfet/base width/.initial=.5}
+\ctikzset{tripoles/pfet/gate width/.initial=.62}
+\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigfete/width/.initial=.7}
+\ctikzset{tripoles/nigfete/gate height/.initial=.35}
+\ctikzset{tripoles/nigfete/base height/.initial=.5}
+\ctikzset{tripoles/nigfete/conn height/.initial=.35}
+\ctikzset{tripoles/nigfete/height/.initial=1.1}
+\ctikzset{tripoles/nigfete/base width/.initial=.5}
+\ctikzset{tripoles/nigfete/gate width/.initial=.62}
+\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfete/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetd/width/.initial=.7}
+\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetd/base height/.initial=.5}
+\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetd/height/.initial=1.1}
+\ctikzset{tripoles/nigfetd/base width/.initial=.5}
+\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
+
+\ctikzset{tripoles/pigfete/width/.initial=.7}
+\ctikzset{tripoles/pigfete/gate height/.initial=.35}
+\ctikzset{tripoles/pigfete/base height/.initial=.5}
+\ctikzset{tripoles/pigfete/conn height/.initial=.35}
+\ctikzset{tripoles/pigfete/height/.initial=1.1}
+\ctikzset{tripoles/pigfete/base width/.initial=.5}
+\ctikzset{tripoles/pigfete/gate width/.initial=.62}
+\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetd/width/.initial=.7}
+\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetd/base height/.initial=.5}
+\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetd/height/.initial=1.1}
+\ctikzset{tripoles/pigfetd/base width/.initial=.5}
+\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
+
+\ctikzset{tripoles/npn/width/.initial=.6}
+\ctikzset{tripoles/npn/base height/.initial=.45}
+\ctikzset{tripoles/npn/base height 2/.initial=.15}
+\ctikzset{tripoles/npn/base height/.initial=.4}
+\ctikzset{tripoles/npn/conn height/.initial=0}
+\ctikzset{tripoles/npn/height/.initial=1.1}
+\ctikzset{tripoles/npn/base width/.initial=.5}
+\ctikzset{tripoles/npn/arrow pos/.initial=.5}
+\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/npn/curr direction/.initial=1}
+
+\ctikzset{tripoles/pnp/width/.initial=.6}
+\ctikzset{tripoles/pnp/base height/.initial=.45}
+\ctikzset{tripoles/pnp/base height 2/.initial=.15}
+\ctikzset{tripoles/pnp/base height/.initial=.4}
+\ctikzset{tripoles/pnp/conn height/.initial=0}
+\ctikzset{tripoles/pnp/height/.initial=1.1}
+\ctikzset{tripoles/pnp/base width/.initial=.5}
+\ctikzset{tripoles/pnp/arrow pos/.initial=.5}
+\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pnp/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigbt/width/.initial=.6}
+\ctikzset{tripoles/pigbt/gate height/.initial=.45}
+\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/pigbt/base height/.initial=.4}
+\ctikzset{tripoles/pigbt/conn height/.initial=0}
+\ctikzset{tripoles/pigbt/height/.initial=1.1}
+\ctikzset{tripoles/pigbt/gate width/.initial=.62}
+\ctikzset{tripoles/pigbt/base width/.initial=.5}
+\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigbt/width/.initial=.6}
+\ctikzset{tripoles/nigbt/gate height/.initial=.45}
+\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/nigbt/base height/.initial=.4}
+\ctikzset{tripoles/nigbt/conn height/.initial=0}
+\ctikzset{tripoles/nigbt/height/.initial=1.1}
+\ctikzset{tripoles/nigbt/gate width/.initial=.62}
+\ctikzset{tripoles/nigbt/base width/.initial=.5}
+\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/Lpigbt/width/.initial=.6}
+\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/Lnigbt/width/.initial=.6}
+\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/njfet/width/.initial=.7}
+\ctikzset{tripoles/njfet/gate height/.initial=.5}
+\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/njfet/gate width/.initial=.5}
+\ctikzset{tripoles/njfet/conn height/.initial=.35}
+\ctikzset{tripoles/njfet/height/.initial=1.1}
+\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/njfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pjfet/width/.initial=.7}
+\ctikzset{tripoles/pjfet/gate height/.initial=.5}
+\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/pjfet/gate width/.initial=.5}
+\ctikzset{tripoles/pjfet/conn height/.initial=.35}
+\ctikzset{tripoles/pjfet/height/.initial=1.1}
+\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/isfet/width/.initial=1}
+\ctikzset{tripoles/isfet/gate height/.initial=.35}
+\ctikzset{tripoles/isfet/base height/.initial=.5}
+\ctikzset{tripoles/isfet/height/.initial=1.1}
+\ctikzset{tripoles/isfet/base width/.initial=.3}
+\ctikzset{tripoles/isfet/gate width/.initial=.5}
+\ctikzset{tripoles/isfet/conn height/.initial=0}
+\ctikzset{tripoles/isfet/wave width/.initial=.16}
+\ctikzset{tripoles/isfet/wave amp/.initial=.06}
+\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
+\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
+\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/isfet/curr direction/.initial=1}
+
+\newif\ifpgf@circuit@europeanlogicport
+\ctikzset{logic ports/.is choice}
+\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue
+ \tikzset{and port/.style={shape=european and port}}
+ \tikzset{or port/.style={shape=european or port}}
+ \tikzset{xor port/.style={shape=european xor port}}
+ \tikzset{not port/.style={shape=european not port}}
+ \tikzset{nand port/.style={shape=european nand port}}
+ \tikzset{nor port/.style={shape=european nor port}}
+ \tikzset{xnor port/.style={shape=european xnor port}}
+ } }
+\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse
+ \tikzset{and port/.style={shape=american and port}}
+ \tikzset{or port/.style={shape=american or port}}
+ \tikzset{xor port/.style={shape=american xor port}}
+ \tikzset{not port/.style={shape=american not port}}
+ \tikzset{nand port/.style={shape=american nand port}}
+ \tikzset{nor port/.style={shape=american nor port}}
+ \tikzset{xnor port/.style={shape=american xnor port}}
+ } }
+
+\ctikzset{logic ports origin/.is choice}
+\ctikzset{logic ports origin/legacy/.code= {
+ \ctikzset{tripoles/american and port/origin/.initial=0.8}
+ \ctikzset{tripoles/american nand port/origin/.initial=0.8}
+ \ctikzset{tripoles/american nor port/origin/.initial=0.8}
+ \ctikzset{tripoles/american or port/origin/.initial=0.8}
+ \ctikzset{tripoles/american xor port/origin/.initial=0.8}
+ \ctikzset{tripoles/american xnor port/origin/.initial=0.8}
+ \ctikzset{tripoles/european and port/origin/.initial=0.8}
+ \ctikzset{tripoles/european nand port/origin/.initial=0.8}
+ \ctikzset{tripoles/european or port/origin/.initial=0.8}
+ \ctikzset{tripoles/european nor port/origin/.initial=0.8}
+ \ctikzset{tripoles/european xor port/origin/.initial=0.8}
+ \ctikzset{tripoles/european xnor port/origin/.initial=0.8}
+ \ctikzset{tripoles/european not port/origin/.initial=0.8}
+ }
+}
+\ctikzset{logic ports origin/center/.code= {
+ \ctikzset{tripoles/american and port/origin/.initial=0}
+ \ctikzset{tripoles/american nand port/origin/.initial=0}
+ \ctikzset{tripoles/american nor port/origin/.initial=0}
+ \ctikzset{tripoles/american or port/origin/.initial=0}
+ \ctikzset{tripoles/american xor port/origin/.initial=0}
+ \ctikzset{tripoles/american xnor port/origin/.initial=0}
+ \ctikzset{tripoles/european and port/origin/.initial=0}
+ \ctikzset{tripoles/european nand port/origin/.initial=0}
+ \ctikzset{tripoles/european or port/origin/.initial=0}
+ \ctikzset{tripoles/european nor port/origin/.initial=0}
+ \ctikzset{tripoles/european xor port/origin/.initial=0}
+ \ctikzset{tripoles/european xnor port/origin/.initial=0}
+ \ctikzset{tripoles/european not port/origin/.initial=0}
+ }
+}
+
+
+\ctikzset{tripoles/american and port/width/.initial=1.1}
+\ctikzset{tripoles/american and port/height/.initial=.8}
+\ctikzset{tripoles/american and port/port width/.initial=.7}
+\ctikzset{tripoles/american and port/input height/.initial=.5}
+\ctikzset{tripoles/american nand port/width/.initial=1.1}
+\ctikzset{tripoles/american nand port/height/.initial=.8}
+\ctikzset{tripoles/american nand port/port width/.initial=.7}
+\ctikzset{tripoles/american nand port/circle width/.initial=.15}
+\ctikzset{tripoles/american nand port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/width/.initial=1.1}
+\ctikzset{tripoles/american or port/height/.initial=.8}
+\ctikzset{tripoles/american or port/port width/.initial=.7}
+\ctikzset{tripoles/american or port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/input skip/.initial=.25}
+\ctikzset{tripoles/american or port/aaa/.initial=.6}
+\ctikzset{tripoles/american or port/bbb/.initial=.4}
+\ctikzset{tripoles/american or port/ccc/.initial=.5}
+\ctikzset{tripoles/american or port/ddd/.initial=.0}
+\ctikzset{tripoles/american nor port/width/.initial=1.1}
+\ctikzset{tripoles/american nor port/height/.initial=.8}
+\ctikzset{tripoles/american nor port/port width/.initial=.7}
+\ctikzset{tripoles/american nor port/input height/.initial=.5}
+\ctikzset{tripoles/american nor port/input skip/.initial=.25}
+\ctikzset{tripoles/american nor port/circle width/.initial=.15}
+\ctikzset{tripoles/american nor port/aaa/.initial=.6}
+\ctikzset{tripoles/american nor port/bbb/.initial=.4}
+\ctikzset{tripoles/american nor port/ccc/.initial=.5}
+\ctikzset{tripoles/american nor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xor port/width/.initial=1.1}
+\ctikzset{tripoles/american xor port/height/.initial=.8}
+\ctikzset{tripoles/american xor port/port width/.initial=.7}
+\ctikzset{tripoles/american xor port/input height/.initial=.5}
+\ctikzset{tripoles/american xor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xor port/distance/.initial=.1}
+\ctikzset{tripoles/american xnor port/width/.initial=1.1}
+\ctikzset{tripoles/american xnor port/height/.initial=.8}
+\ctikzset{tripoles/american xnor port/port width/.initial=.7}
+\ctikzset{tripoles/american xnor port/input height/.initial=.5}
+\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xnor port/distance/.initial=.1}
+\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
+\ctikzset{tripoles/american and port/origin/.initial=0.8}
+\ctikzset{tripoles/american and port/inputs/.initial=2}
+% variable number of inputs
+\ctikzset{tripoles/american nand port/origin/.initial=0.8}
+\ctikzset{tripoles/american nand port/inputs/.initial=2}
+\ctikzset{tripoles/american nor port/origin/.initial=0.8}
+\ctikzset{tripoles/american nor port/inputs/.initial=2}
+\ctikzset{tripoles/american nor port/angle/.initial=70}
+\ctikzset{tripoles/american nor port/inner/.initial=0.3}
+\ctikzset{tripoles/american or port/origin/.initial=0.8}
+\ctikzset{tripoles/american or port/inputs/.initial=2}
+\ctikzset{tripoles/american or port/angle/.initial=70}
+\ctikzset{tripoles/american or port/inner/.initial=0.3}
+\ctikzset{tripoles/american xor port/origin/.initial=0.8}
+\ctikzset{tripoles/american xor port/inputs/.initial=2}
+\ctikzset{tripoles/american xor port/angle/.initial=70}
+\ctikzset{tripoles/american xor port/inner/.initial=0.3}
+\ctikzset{tripoles/american xnor port/origin/.initial=0.8}
+\ctikzset{tripoles/american xnor port/inputs/.initial=2}
+\ctikzset{tripoles/american xnor port/angle/.initial=70}
+\ctikzset{tripoles/american xnor port/inner/.initial=0.3}
+
+\ctikzset{tripoles/european and port/width/.initial=1.4}
+\ctikzset{tripoles/european and port/height/.initial=.65}
+\ctikzset{tripoles/european and port/reserved/.initial=.6}
+\ctikzset{tripoles/european and port/input height/.initial=.6}
+\ctikzset{tripoles/european or port/width/.initial=1.4}
+\ctikzset{tripoles/european or port/height/.initial=.65}
+\ctikzset{tripoles/european or port/reserved/.initial=.6}
+\ctikzset{tripoles/european or port/input height/.initial=.6}
+\ctikzset{tripoles/european xor port/width/.initial=1.4}
+\ctikzset{tripoles/european xor port/height/.initial=.65}
+\ctikzset{tripoles/european xor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xor port/input height/.initial=.6}
+\ctikzset{tripoles/european nand port/width/.initial=1.4}
+\ctikzset{tripoles/european nand port/not height/.initial=.3}
+\ctikzset{tripoles/european nand port/not width/.initial=.8}
+\ctikzset{tripoles/european nand port/height/.initial=.65}
+\ctikzset{tripoles/european nand port/reserved/.initial=.6}
+\ctikzset{tripoles/european nand port/input height/.initial=.6}
+\ctikzset{tripoles/european not port/width/.initial=1.4}
+\ctikzset{tripoles/european not port/not height/.initial=.3}
+\ctikzset{tripoles/european not port/not width/.initial=.8}
+\ctikzset{tripoles/european not port/height/.initial=.65}
+\ctikzset{tripoles/european not port/reserved/.initial=.6}
+\ctikzset{tripoles/european not port/input height/.initial=0}
+\ctikzset{tripoles/european xnor port/width/.initial=1.4}
+\ctikzset{tripoles/european xnor port/not height/.initial=.3}
+\ctikzset{tripoles/european xnor port/not width/.initial=.8}
+\ctikzset{tripoles/european xnor port/height/.initial=.65}
+\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xnor port/input height/.initial=.6}
+\ctikzset{tripoles/european nor port/width/.initial=1.4}
+\ctikzset{tripoles/european nor port/not height/.initial=.3}
+\ctikzset{tripoles/european nor port/not width/.initial=.8}
+\ctikzset{tripoles/european nor port/height/.initial=.65}
+\ctikzset{tripoles/european nor port/reserved/.initial=.6}
+\ctikzset{tripoles/european nor port/input height/.initial=.6}
+% variable number of inputs
+\ctikzset{tripoles/european and port/origin/.initial=0.8}
+\ctikzset{tripoles/european and port/inputs/.initial=2}
+\ctikzset{tripoles/european nand port/origin/.initial=0.8}
+\ctikzset{tripoles/european nand port/inputs/.initial=2}
+\ctikzset{tripoles/european or port/origin/.initial=0.8}
+\ctikzset{tripoles/european or port/inputs/.initial=2}
+\ctikzset{tripoles/european nor port/origin/.initial=0.8}
+\ctikzset{tripoles/european nor port/inputs/.initial=2}
+\ctikzset{tripoles/european xor port/origin/.initial=0.8}
+\ctikzset{tripoles/european xor port/inputs/.initial=2}
+\ctikzset{tripoles/european xnor port/origin/.initial=0.8}
+\ctikzset{tripoles/european xnor port/inputs/.initial=2}
+\ctikzset{tripoles/european not port/origin/.initial=0.8}
+\ctikzset{tripoles/european not port/inputs/.initial=1}%
+%%% parameters that are not used anymore after multi-input
+%%% gates --- left for compatibility of source code.
+\ctikzset{tripoles/american xor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
+% switches for logic gates
+%
+\pgfkeys{/tikz/number inputs/.initial=0}
+\pgfkeys{/tikz/number inputs/.default=0}
+%
+% switches for op amps
+% changing input polarity
+%
+\newif\ifpgf@circuit@oa@iplusup\pgf@circuit@oa@iplusupfalse
+\pgfkeys{/tikz/noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
+\ctikzset{noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
+\pgfkeys{/tikz/input noinv down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
+\ctikzset{input noinv down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
+%
+% changing output polarity (for fully diff objects)
+%
+\newif\ifpgf@circuit@oa@oplusup\pgf@circuit@oa@oplusuptrue
+\pgfkeys{/tikz/noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
+\ctikzset{noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
+\pgfkeys{/tikz/noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
+\ctikzset{noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
+%
+\ctikzset{tripoles/op amp/width/.initial=1.7}
+\ctikzset{tripoles/op amp/port width/.initial=.7}
+\ctikzset{tripoles/op amp/height/.initial=1.4}
+\ctikzset{tripoles/op amp/input height/.initial=.5}
+\ctikzset{tripoles/op amp/up pos/.initial=.45}
+\ctikzset{tripoles/op amp/font/.initial= \fontsize{10}{12}\selectfont\boldmath}%absolute font size needed!
+\ctikzset{tripoles/en amp/width/.initial=1.7}
+\ctikzset{tripoles/en amp/port width/.initial=.7}
+\ctikzset{tripoles/en amp/height/.initial=1.6}
+\ctikzset{tripoles/en amp/input height/.initial=.3}
+\ctikzset{tripoles/en amp/up pos/.initial=.45}
+\ctikzset{tripoles/en amp/font/.initial= \fontsize{10}{12}\selectfont}%absolute font size needed!
+\ctikzset{tripoles/en amp/font2/.initial= \fontsize{12}{14}\selectfont}%absolute font size needed!
+\ctikzset{tripoles/en amp/text/.initial={$\mathstrut{\triangleright}\,{\infty}$}}
+\tikzset{
+ en amp text/.code = {
+ \ctikzsetvalof{tripoles/en amp/text}{#1}
+ },
+ en amp text A/.code = {
+ \ctikzsetvalof{tripoles/en amp/text}{$\mathstrut{\triangleright}\,\mathrm{A}$}
+ },
+}
+\ctikzset{tripoles/gm amp/width/.initial=1.7}
+\ctikzset{tripoles/gm amp/port width/.initial=.7}
+\ctikzset{tripoles/gm amp/height/.initial=1.4}
+\ctikzset{tripoles/gm amp/input height/.initial=.5}
+\ctikzset{tripoles/gm amp/up pos/.initial=.45}
+\ctikzset{tripoles/inst amp/width/.initial=1.7} % instrumentation amplifier, simple
+\ctikzset{tripoles/inst amp/port width/.initial=.7}
+\ctikzset{tripoles/inst amp/height/.initial=1.4}
+\ctikzset{tripoles/inst amp/input height/.initial=.5}
+\ctikzset{tripoles/inst amp/up pos/.initial=.4}
+\ctikzset{tripoles/inst amp/refv pos/.initial=.7}
+\ctikzset{tripoles/inst amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolute font size needed!
+\ctikzset{tripoles/fd inst amp/width/.initial=1.7} % instrumentation amplifier, diff output
+\ctikzset{tripoles/fd inst amp/port width/.initial=.7}
+\ctikzset{tripoles/fd inst amp/height/.initial=1.4}
+\ctikzset{tripoles/fd inst amp/input height/.initial=.5}
+\ctikzset{tripoles/fd inst amp/up pos/.initial=.4}
+\ctikzset{tripoles/fd inst amp/refv pos/.initial=.7}
+\ctikzset{tripoles/fd inst amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolute font size needed!
+\ctikzset{tripoles/inst amp ra/width/.initial=2.4} % instrumentation amplifier with ra gain resistance added
+\ctikzset{tripoles/inst amp ra/port width/.initial=.7}
+\ctikzset{tripoles/inst amp ra/height/.initial=2.9}
+\ctikzset{tripoles/inst amp ra/input height/.initial=.7}
+\ctikzset{tripoles/inst amp ra/up pos/.initial=.4}
+\ctikzset{tripoles/inst amp ra/refv pos/.initial=.7}
+\ctikzset{tripoles/inst amp ra/ra pos/.initial=.6}
+\ctikzset{tripoles/inst amp ra/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolute font size needed!
+\ctikzset{tripoles/plain amp/width/.initial=1.7}
+\ctikzset{tripoles/plain amp/port width/.initial=.7}
+\ctikzset{tripoles/plain amp/height/.initial=1.4}
+\ctikzset{tripoles/plain amp/input height/.initial=.5}
+\ctikzset{tripoles/plain amp/up pos/.initial=.45}
+
+\ctikzset{tripoles/thyristor/height/.initial=1.10}
+\ctikzset{tripoles/thyristor/height 2/.initial=.5}
+\ctikzset{tripoles/thyristor/width/.initial=1.0}
+\ctikzset{tripoles/thyristor/diode height/.initial=.5}
+\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+\ctikzset{tripoles/triac/height/.initial=1.1}
+\ctikzset{tripoles/triac/width/.initial=1}
+\ctikzset{tripoles/triac/diode width left/.initial=.3}
+\ctikzset{tripoles/triac/diode width right/.initial=.3}
+
+%% Cute switches
+\ctikzset{bipoles/cuteswitch/shape/.initial={ocirc}}
+\ctikzset{bipoles/cuteswitch/height/.initial=.6}
+\ctikzset{bipoles/cuteswitch/height 2/.initial=.2}
+\ctikzset{bipoles/cuteswitch/width/.initial=.50}
+\ctikzset{bipoles/cuteswitch/thickness/.initial=1}
+
+\ctikzset{tripoles/spdt/width/.initial=.85}
+\ctikzset{tripoles/spdt/height/.initial=.45}
+\ctikzset{tripoles/spdt/margin/.initial=.45}
+
+\ctikzset{tripoles/toggleswitch/height/.initial=.8}
+\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
+\ctikzset{tripoles/toggleswitch/width/.initial=.80}
+
+\ctikzset{tripoles/mixer/width/.initial=0.7}
+\ctikzset{tripoles/adder/width/.initial=0.7}
+\ctikzset{tripoles/circulator/width/.initial=.7}
+\ctikzset{tripoles/oscillator/width/.initial=.7}
+
+
+\ctikzset{tripoles/wilkinson/height/.initial=1.3}
+\ctikzset{tripoles/wilkinson/width/.initial=1.3}
+
+\ctikzset{quadpoles/transformer/inner/.initial=0.4}
+\ctikzset{quadpoles/transformer/width/.initial=1.5}
+\ctikzset{quadpoles/transformer/width1/.initial=.4}
+\ctikzset{quadpoles/transformer/height/.initial=1.5}
+\ctikzset{quadpoles/transformer/height1/.initial=.8}
+\ctikzset{quadpoles/transformer core/inner/.initial=0.4}
+\ctikzset{quadpoles/transformer core/width/.initial=1.5}
+\ctikzset{quadpoles/transformer core/height/.initial=1.5}
+\ctikzset{quadpoles/transformer core/core height/.initial=.5}
+\ctikzset{quadpoles/transformer core/core width/.initial=.05}
+\ctikzset{quadpoles/gyrator/inner/.initial=0.4}
+\ctikzset{quadpoles/gyrator/width/.initial=1.5}
+\ctikzset{quadpoles/gyrator/height/.initial=1.5}
+\ctikzset{quadpoles/fourport/width/.initial=1.3}
+\ctikzset{quadpoles/fourport/height/.initial=1.3}
+\ctikzset{quadpoles/coupler/width/.initial=1.3}
+\ctikzset{quadpoles/coupler/height/.initial=1.3}
+\ctikzset{quadpoles/coupler2/width/.initial=1.3}
+\ctikzset{quadpoles/coupler2/height/.initial=1.3}
+
+\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
+
+\ctikzset{quadpoles style/.is choice}
+\ctikzset{quadpoles style/inward/.code={ % default value
+ \ctikzset{quadpoles/transformer/inner=0.4}
+ \ctikzset{quadpoles/transformer/width=1.5}
+ \ctikzset{quadpoles/transformer core/inner=0.4}
+ \ctikzset{quadpoles/transformer core/width=1.5}
+ \ctikzset{quadpoles/gyrator/inner=0.4}
+ \ctikzset{quadpoles/gyrator/width=1.5}
+ }
+}
+\ctikzset{quadpoles style/inline/.code={ % now horizontal baffle
+ \ctikzset{quadpoles/transformer/inner=1}
+ \ctikzset{quadpoles/transformer/width=0.6}
+ \ctikzset{quadpoles/transformer core/inner=1}
+ \ctikzset{quadpoles/transformer core/width=0.6}
+ \ctikzset{quadpoles/gyrator/inner=1}
+ \ctikzset{quadpoles/gyrator/width=0.6}
+ }
+}
+
+
+%
+% multipoles
+%
+\ctikzset{multipoles/thickness/.initial=2}
+\ctikzset{multipoles/font/.initial=\tiny}
+% DIP (dual in line package) chips
+\ctikzset{multipoles/dipchip/width/.initial=1.2}
+\ctikzset{multipoles/dipchip/num pins/.initial=8}
+\ctikzset{multipoles/dipchip/pin spacing/.initial=0.4}
+\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/dipchip/num pins=#1}}}
+% QFP (quad flat package) chips
+\ctikzset{multipoles/qfpchip/num pins/.initial=8}
+\ctikzset{multipoles/qfpchip/pin spacing/.initial=0.4}
+\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/qfpchip/num pins=#1}}}
+% chip numbers
+\newif\ifpgf@circuit@chip@shownumbers\pgf@circuit@chip@shownumberstrue
+\pgfkeys{/tikz/show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
+\ctikzset{show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
+\pgfkeys{/tikz/hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
+\ctikzset{hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
+\newif\ifpgf@circuit@chip@straightnumbers\pgf@circuit@chip@straightnumberstrue
+\pgfkeys{/tikz/straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
+\ctikzset{straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
+\pgfkeys{/tikz/rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
+\ctikzset{rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
+% external chip pins
+\ctikzset{multipoles/external pins thickness/.initial=1}
+\ctikzset{multipoles/external pins width/.initial=0.2}
+\ctikzset{multipoles/external pad fraction/.initial=0}
+\pgfkeys{/tikz/external pins width/.add code={}{\ctikzset{multipoles/external pins width=#1}}}
+\pgfkeys{/tikz/external pad fraction/.add code={}{\ctikzset{multipoles/external pad fraction=#1}}}
+% topmarks
+\newif\ifpgf@circuit@chip@topmark\pgf@circuit@chip@topmarktrue
+\pgfkeys{/tikz/topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
+\ctikzset{topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
+\pgfkeys{/tikz/no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
+\ctikzset{no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
+
+% rotary switch by Romano
+\ctikzset{multipoles/rotary/thickness/.initial=1}
+\ctikzset{multipoles/rotary/shape/.initial=ocirc}
+\ctikzset{multipoles/rotary/channels/.initial=5}
+\ctikzset{multipoles/rotary/angle/.initial=60}
+\ctikzset{multipoles/rotary/wiper/.initial=20}
+\ctikzset{multipoles/rotary/arrow/.is choice}
+\newif\ifpgf@circ@rotaryarrow\pgf@circ@rotaryarrowfalse
+\newif\ifpgf@circ@rotaryarrow@cw\pgf@circ@rotaryarrow@cwfalse
+\newif\ifpgf@circ@rotaryarrow@ccw\pgf@circ@rotaryarrow@ccwfalse
+\ctikzset{multipoles/rotary/arrow/none/.code={\pgf@circ@rotaryarrowfalse\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwfalse}}
+\ctikzset{multipoles/rotary/arrow/both/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwtrue}}
+\ctikzset{multipoles/rotary/arrow/cw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwfalse}}
+\ctikzset{multipoles/rotary/arrow/ccw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwtrue}}
+
+\tikzset{%
+ rotary switch/.style args={#1in#2wiper#3}{
+ shape=rotaryswitch,
+ /tikz/circuitikz/multipoles/rotary/channels=#1,
+ /tikz/circuitikz/multipoles/rotary/angle=#2,
+ /tikz/circuitikz/multipoles/rotary/wiper=#3,
+ },
+ rotary switch -/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=none,
+ },
+ rotary switch <-/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=ccw,
+ },
+ rotary switch ->/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=cw,
+ },
+ rotary switch <->/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=both,
+ },
+ % Notice that these should be the same as the initial values of the keys
+ rotary switch/.default={5 in 60 wiper 20 },
+ rotary switch -/.default={5 in 60 wiper 20 },
+ rotary switch <-/.default={5 in 60 wiper 20 },
+ rotary switch ->/.default={5 in 60 wiper 20 },
+ rotary switch <->/.default={5 in 60 wiper 20 },
+}
+
+% %Mechanical section
+\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
+\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
+\ctikzset{bipoles/spring/height/.initial=.5}
+\ctikzset{bipoles/spring/width/.initial=.5}
+\ctikzset{bipoles/mass/height/.initial=.55}
+\ctikzset{bipoles/mass/box height/.initial=.4}
+\ctikzset{bipoles/mass/width/.initial=.5}
+
+\ctikzset{bipoles/damper/height/.initial=.35}
+\ctikzset{bipoles/damper/length/.initial=.3}
+\ctikzset{bipoles/damper/width/.initial=.4}
+
+
+\ctikzset{bipole/.is family}
+\ctikzset{bipole/kind/.initial = }
+\ctikzset{bipole/name/.initial = }
+\newif\ifpgf@circuit@bipole@isvoltage
+\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
+\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
+\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
+\newif\ifpgf@circuit@bipole@strokedsymbol
+\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
+\newif\ifpgf@circuit@bipole@iscurrent
+\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
+
+\ctikzset{bipole/voltage/.is family}
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+\newif\ifpgf@circuit@bipole@voltage@below
+\ctikzset{bipole/voltage/position/.is choice}
+\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
+\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
+
+\ctikzset{bipole/voltage/label/unit/.initial=}
+\ctikzset{bipole/voltage/label/name/.initial=}
+
+\ctikzset{bipole/current/.is family}
+\newif\ifpgf@circuit@bipole@current@backward
+\ctikzset{bipole/current/direction/.is choice}
+\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
+\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
+\newif\ifpgf@circuit@bipole@current@before
+\ctikzset{bipole/current/x position/.is choice}
+\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
+\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
+\newif\ifpgf@circuit@bipole@current@below
+\ctikzset{bipole/current/y position/.is choice}
+\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
+\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
+\ctikzset{bipole/current/label/unit/.initial=}
+\ctikzset{bipole/current/label/name/.initial=}
+
+\ctikzset{bipole/flow/.is family}
+\newif\ifpgf@circuit@bipole@flow@backward
+\ctikzset{bipole/flow/direction/.is choice}
+\ctikzset{bipole/flow/direction/forward/.code={\pgf@circuit@bipole@flow@backwardfalse}}
+\ctikzset{bipole/flow/direction/backward/.code={\pgf@circuit@bipole@flow@backwardtrue}}
+\newif\ifpgf@circuit@bipole@flow@before
+\ctikzset{bipole/flow/x position/.is choice}
+\ctikzset{bipole/flow/x position/after/.code={\pgf@circuit@bipole@flow@beforefalse}}
+\ctikzset{bipole/flow/x position/before/.code={\pgf@circuit@bipole@flow@beforetrue}}
+\newif\ifpgf@circuit@bipole@flow@below
+\ctikzset{bipole/flow/y position/.is choice}
+\ctikzset{bipole/flow/y position/above/.code={\pgf@circuit@bipole@flow@belowfalse}}
+\ctikzset{bipole/flow/y position/below/.code={\pgf@circuit@bipole@flow@belowtrue}}
+\ctikzset{bipole/flow/label/unit/.initial=}
+\ctikzset{bipole/flow/label/name/.initial=}
+\ctikzset{flow/distance/.initial = .5}
+\ctikzset{flow/offset/.initial = .2}%distance between flow-arrow and conductor
+
+\ctikzset{bipole/label/.is family}
+\ctikzset{bipole/label/position/.initial=90}
+\ctikzset{bipole/label/unit/.initial=}
+\ctikzset{bipole/label/name/.initial=}
+\ctikzset{bipole/annotation/.is family}
+\ctikzset{bipole/annotation/position/.initial=-90}
+\ctikzset{bipole/annotation/unit/.initial=}
+\ctikzset{bipole/annotation/name/.initial=}
+
+\newif\ifpgf@circuit@europeanresistor
+\ctikzset{resistor/.is choice}
+\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
+\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
+
+\ctikzset{inductor/.is choice}
+\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
+\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
+\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
+
+\newif\ifpgf@circuit@strokediode
+\newif\ifpgf@circuit@fulldiode
+\pgf@circuit@strokediodefalse
+\pgf@circuit@fulldiodefalse
+
+\ctikzset{diode/.is choice}
+\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
+\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
+\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
+
+\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full }}
+\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty }}
+\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke }}
+
+\ctikzset{thickness/.initial=2}
+\ctikzset{color/.initial=black}
+\pgfkeys{/tikz/color/.add code={}{\ctikzset{color={#1}}}}
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circ@siunitx@res
+
+\ctikzset{straight/.is choice}
+\ctikzset{straightvoltage value/.initial=true}
+\ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}}
+\ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}}
+\ctikzset{straightvoltage/.style = {/tikz/circuitikz/straight=true}}
+\newif\ifpgf@circuit@bipole@voltage@straight
+\ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight}
+
+
+\ctikzset{voltage/.is family}
+\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
+\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
+\ctikzset{voltage/bump a/.initial=1.2}
+\ctikzset{voltage/bump b/.initial=1.5}
+\ctikzset{voltage/shift/.initial=0.0} % shift form the cable of voltage symbols
+\ctikzset{voltage shift/.style={voltage/shift=#1}}
+\tikzset{voltage shift/.style={\circuitikzbasekey/voltage/shift=#1}}
+\ctikzset{voltage/european label distance/.initial=1.4}
+\ctikzset{voltage/american label distance/.initial=1.1}
+% shaping the +/- sign, see pgfcircvoltage.tex
+\ctikzset{voltage/american font/.initial={}}
+\ctikzset{voltage/american plus/.initial={$+$}}
+\ctikzset{voltage/american minus/.initial={$-$}}
+
+% special cases
+\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
+\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
+\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
+\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
+\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
+%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
+%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
+
+\ctikzset{current/.is family}
+\ctikzset{current/distance/.initial = .5}
+
+
+\tikzset{american currents/.style = { \circuitikzbasekey/current = american } }
+\tikzset{european currents/.style = { \circuitikzbasekey/current = european } }
+\tikzset{american voltages/.style = { \circuitikzbasekey/voltage = american } }
+\tikzset{european voltages/.style = { \circuitikzbasekey/voltage = european } }
+\tikzset{american resistors/.style = { \circuitikzbasekey/resistor = american } }
+\tikzset{european resistors/.style = { \circuitikzbasekey/resistor = european } }
+
+\newif\ifpgf@circuit@europeangfsurgearrester
+\ctikzset{gas filled surge arrester choice/.is choice}
+\ctikzset{gas filled surge arrester choice/european/.code= {\pgf@circuit@europeangfsurgearrestertrue } }
+\ctikzset{gas filled surge arrester choice/american/.code= {\pgf@circuit@europeangfsurgearresterfalse } }
+
+\tikzset{american gas filled surge arrester set/.style = { \circuitikzbasekey/gas filled surge arrester choice=american } }
+\tikzset{european gas filled surge arrester set/.style = { \circuitikzbasekey/gas filled surge arrester choice=european } }
+\tikzset{american inductors/.style = { \circuitikzbasekey/inductor = american } }
+\tikzset{european inductors/.style = { \circuitikzbasekey/inductor = european } }
+\tikzset{cute inductors/.style = { \circuitikzbasekey/inductor = cute } }
+\tikzset{american ports/.style = { \circuitikzbasekey/logic ports = american } }
+\tikzset{european ports/.style = { \circuitikzbasekey/logic ports = european } }
+\tikzset{european/.style = { european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester set} }
+\tikzset{american/.style = { american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester set} }
+\tikzset{cute/.style = { european currents, european voltages, american resistors, cute inductors, american ports } }
+
+% I should try to make the tree clearer (this voltage conflicts with the options above)
+
+\newif\ifpgf@circuit@europeanvoltage
+\ctikzset{voltage/.is choice}
+\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse } }
+\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue } }
+
+\newif\ifpgf@circuit@europeancurrent
+\ctikzset{current/.is choice}
+\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse }
+\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue }
+
+% noise sources
+\ctikzset{bipoles/noise sources/fillcolor/.initial=gray!50}
+
+\ctikzset{label/align/.is choice}
+\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
+\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
+\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
+
+% seven segment displays by RGtti
+
+\newif\ifpgf@circ@sevenseg@dot
+\newif\ifpgf@circ@sevenseg@box
+\def\pgf@circ@sevenseg@dotstate{empty}
+\ctikzset{seven seg/.is family}
+\ctikzset{seven seg/dot/.is choice}
+% none means no dot, not space for it. Empty means no dot, but space
+\ctikzset{seven seg/dot/none/.code={\pgf@circ@sevenseg@dotfalse}}
+\ctikzset{seven seg/dot/empty/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{empty}}}
+\ctikzset{seven seg/dot/off/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{off}}}
+\ctikzset{seven seg/dot/on/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{on}}}
+%
+\ctikzset{seven seg/width/.initial=0.4}% relative to \pgf@circ@Rlen
+\ctikzset{seven seg/thickness/.initial=4pt}% segment thickness
+\ctikzset{seven seg/segment sep/.initial=0.2pt}% gap between segments
+\ctikzset{seven seg/box sep/.initial=1pt}% external box gap
+\ctikzset{seven seg/color on/.initial=red}% color for segment "on"
+\ctikzset{seven seg/color off/.initial=gray!20!white} % ...and "off"
+\ctikzset{seven seg/box/.is choice}
+\ctikzset{seven seg/box/off/.code={\pgf@circ@sevenseg@boxfalse}}
+\ctikzset{seven seg/box/on/.code={\pgf@circ@sevenseg@boxtrue}}
+
+\ctikzset{seven seg/bits/.initial=0000000}
+
+\ctikzset{seven seg/value/.code={
+ \edef\@@tmp{#1}
+ \edef\@@n{0} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111110}\fi
+ \edef\@@n{1} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110000}\fi
+ \edef\@@n{2} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1101101}\fi
+ \edef\@@n{3} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111001}\fi
+ \edef\@@n{4} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110011}\fi
+ \edef\@@n{5} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011011}\fi
+ \edef\@@n{6} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011111}\fi
+ \edef\@@n{7} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110000}\fi
+ \edef\@@n{8} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111111}\fi
+ \edef\@@n{9} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111011}\fi
+ \edef\@@n{10}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
+ \edef\@@n{11}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
+ \edef\@@n{12}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
+ \edef\@@n{13}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
+ \edef\@@n{14}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
+ \edef\@@n{15}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
+ \edef\@@n{A} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
+ \edef\@@n{B} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
+ \edef\@@n{C} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
+ \edef\@@n{D} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
+ \edef\@@n{E} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
+ \edef\@@n{F} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
+ \edef\@@n{a} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
+ \edef\@@n{b} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
+ \edef\@@n{c} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
+ \edef\@@n{d} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
+ \edef\@@n{e} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
+ \edef\@@n{f} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
+ \edef\@@n{-} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0000001}\fi
+}}
+
+\tikzset{%
+ seven segment val/.style args={#1dot#2box#3}{
+ shape=bare7seg,
+ /tikz/circuitikz/seven seg/value=#1,
+ /tikz/circuitikz/seven seg/dot=#2,
+ /tikz/circuitikz/seven seg/box=#3,
+ },
+ seven segment bits/.style args={#1dot#2box#3}{
+ shape=bare7seg,
+ /tikz/circuitikz/seven seg/bits=#1,
+ /tikz/circuitikz/seven seg/dot=#2,
+ /tikz/circuitikz/seven seg/box=#3,
+ },
+}
+
+
+%%%%%%%%%% new
+\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
+
+% Electronic tubes: diodetube, triode, tetrode and pentode
+\ctikzset{tubes/width/.initial=1} % relative width
+\ctikzset{tubes/height/.initial=1.4} % relative height
+\ctikzset{tubes/tube radius/.initial=0.40} % radius of tube circle
+\ctikzset{tubes/anode distance/.initial=0.40} % distance from center
+\ctikzset{tubes/anode width/.initial=0.40} % width of an anode/plate
+\ctikzset{tubes/grid protrusion/.initial=0.25} % distance from center
+\ctikzset{tubes/grid dashes/.initial=5} % number of grid dashes
+\ctikzset{tubes/grid separation/.initial=0.2} % separation between grids
+\ctikzset{tubes/grid shift/.initial=0.0} % y shift grids from center
+\ctikzset{tubes/cathode distance/.initial=0.40} % distance from grid
+\ctikzset{tubes/cathode width/.initial=0.40} % width of an cathode
+\ctikzset{tubes/cathode corners/.initial=0.06} % corners of the cathode wire
+\ctikzset{tubes/cathode right extend/.initial=0.075} % extension at the right side
+\ctikzset{tubes/filament distance/.initial=0.1} % distance from cathode
+\ctikzset{tubes/filament angle/.initial=15} % Angle from centerpoint
+
+\newif\ifpgf@circuit@tubes@filament\pgf@circuit@tubes@filamentfalse
+\pgfkeys{/tikz/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
+\ctikzset{tubes/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
+\newif\ifpgf@circuit@tubes@nocathode\pgf@circuit@tubes@nocathodefalse
+\pgfkeys{/tikz/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
+\ctikzset{tubes/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
+\newif\ifpgf@circuit@tubes@fullcathode\pgf@circuit@tubes@fullcathodefalse
+\pgfkeys{/tikz/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
+\ctikzset{tubes/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
+
+%%%---------- close: tex/pgfcirc.defines
+%%%%%%%%%%% Springe nach tex/pgfcircutils
+%%%---------- open: tex/pgfcircutils.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%\def\pgf@circ@handleSI#1{%
+ % \pgf@circ@siunitx@resfalse
+%
+ % \edef\len{\stringlength[e]{#1}}
+ %\testmatchingchar[e]{#1}{\len}{>}%
+ %\ifmatchingchar%
+ % \ifnum\findchars{#1}{<}=0
+ % \def\pgf@circ@handleSI@val{\substring{#1}{1}{\findchars{#1}{<}-1}}
+ %\def\pgf@circ@handleSI@unit{\substring{#1}{\findchars{#1}{<}-1}+1}{\stringlength{#1}}
+ %\pgf@circ@siunitx@restrue
+% \else
+% \fi
+ %\else
+ %\fi
+%}
+
+\def\pgf@circ@handleSI#1{
+ \noexpandarg
+ \def\pgf@temp{}
+ \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
+ \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
+
+ \ifnum\pgf@circ@handleSI@unit@len=0
+ \pgf@circ@siunitx@resfalse
+ \else
+ \IfEndWith{#1}{>}{
+ \pgf@circ@siunitx@restrue
+ \noexpandarg
+ \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
+ %\typeout{si |#1|}
+ }{
+ \pgf@circ@siunitx@resfalse
+ %\typeout{no si |#1|}
+ }
+\fi
+}
+
+\def\pgf@circ@ifkeyempty#1{
+ \pgfextra{
+ \ctikzset{#1/.get=\pgf@circ@temp}
+ \edef\pgf@temp{}
+ }
+ \ifx\pgf@circ@temp\pgf@temp
+ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Math routines
+
+\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
+
+%%%---------- close: tex/pgfcircutils
+
+%%%%%%%%%%% Springe nach tex/pgfcircshapes
+%%%---------- open: tex/pgfcircshapes.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Other shapes
+
+%% Nothing
+
+\pgfdeclareshape{emptyshape}{
+ \savedanchor{\northeast}{%
+ \pgf@x=.5\wd\pgfnodeparttextbox%
+ \pgf@y=.5\ht\pgfnodeparttextbox%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+}
+
+%% Full terminal
+
+\pgfdeclareshape{circ}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}}
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetfillopacity{1.0}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Empty terminal
+
+\pgfdeclareshape{ocirc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}}
+ }
+
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgfsetfillcolor{white}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{1.0}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Diamond terminal
+
+\pgfdeclareshape{diamondpole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
+ \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
+ \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
+ \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
+ % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
+ \pgfpointintersectionoflines
+ {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
+ % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgf@x=\@@switchx\pgf@x
+ \pgf@y=\@@switchy\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgftransformrotate{45}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetfillopacity{1.0}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% Diamond terminal, unfilled
+
+\pgfdeclareshape{odiamondpole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
+ \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
+ \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
+ \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
+ % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
+ \pgfpointintersectionoflines
+ {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
+ % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgf@x=\@@switchx\pgf@x
+ \pgf@y=\@@switchy\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgftransformrotate{45}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgfsetfillcolor{white}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{1.0}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% square terminal, filled
+
+\pgfdeclareshape{squarepole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpointborderrectangle
+ {\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetfillopacity{1.0}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+%% square terminal, unfilled
+
+\pgfdeclareshape{osquarepole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpointborderrectangle
+ {\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgfsetfillcolor{white}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{1.0}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+% BNC connector
+
+\pgfdeclareshape{bnc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ % BNC size is 2.5 times the size of the internal "ocirc"
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
+ \pgf@y=2.5\pgf@y
+ \pgf@x=-\pgf@y
+ }
+ % center is on the opening
+ \anchor{center}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{zero}{ \pgfpointorigin }
+ \anchor{hot}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{shield}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ % geo-anchors
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{right}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{left}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{2.5*\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}{2.5*\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}}
+ }
+ \behindforegroundpath{
+ \pgfextracty{\pgf@circ@res@other}{\northwest}
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgflinewidth}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ % external circle
+ \pgfscope
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{-2\pgf@circ@res@other}{-2\pgf@circ@res@other}}
+ {\pgfpoint{2\pgf@circ@res@other}{2\pgf@circ@res@other}}
+ % next the opening to the right
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ {\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@step}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@other}
+ \pgfusepath{draw}
+ \endpgfscope
+ % internal circle
+ \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@step}
+ \pgf@circ@draworfill
+ % and the contact line to the right
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+%% Fill for correct rectangular joins
+
+\pgfdeclareshape{rectjoinfill}{
+ \savedanchor{\northeast}{%
+ \pgf@x=.5\pgflinewidth%
+ \pgf@y=.5\pgflinewidth%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfpathrectanglecorners
+ {\pgfpoint{0}{.5\pgflinewidth}}
+ {\pgfpoint{0}{-.5\pgflinewidth}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+
+%% Current arrow
+
+\pgfdeclareshape{currarrow}{
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \pgfkeysvalueof{/tikz/circuitikz/current arrow scale}
+ \pgf@x=.5\pgf@circ@res@step
+ \pgf@y=\pgf@x%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \pgfpointorigin
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \pgfkeysvalueof{/tikz/circuitikz/current arrow scale}
+ \pgf@x =\pgf@circ@res@step
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \pgfkeysvalueof{/tikz/circuitikz/current arrow scale}
+
+ \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw,fill}
+
+ \endpgfscope
+ }
+}
+
+%% Flow arrow
+
+\pgfdeclareshape{flowarrow}{
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \pgfkeysvalueof{/tikz/circuitikz/current arrow scale}
+ \pgf@y=.5\pgf@circ@res@step
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 4
+ \pgf@x=\pgf@circ@res@step%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \pgfpointorigin
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \pgfkeysvalueof{/tikz/circuitikz/current arrow scale}
+ \pgf@x =\pgf@circ@res@step
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 4
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{draw}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfnode{currarrow}{tip}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+ }
+}
+
+%% Input arrow
+
+\pgfdeclareshape{inputarrow}{
+ \savedanchor{\northeast}{% this is really not northeast, really -northwest
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \pgfkeysvalueof{/tikz/circuitikz/current arrow scale}
+ \pgf@y=.5\pgf@circ@res@step
+ \pgf@x=1.7\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax\pgf@x=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast\pgf@x=0cm\relax}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@x=0cm\relax}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \savedanchor{\tip}{
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \tip
+ }
+ \anchor{tip}{
+ \tip
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 16
+
+ \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfusepath{fill}
+
+ \endpgfscope
+ }
+}
+
+
+%% box
+
+\pgfdeclareshape{box}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@circ@res@step = 0.5\pgf@circ@res@step
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+
+}
+
+
+% full nodes for wire crossing
+
+\pgfdeclareshape{jump crossing}
+{
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \behindbackgroundpath{
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ % horizontal jumper
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
+ \pgfsetbeveljoin
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % vertical, broken path
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+\pgfdeclareshape{plain crossing}
+{
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \behindbackgroundpath{
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ % horizontal jumper
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % vertical, broken path
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.1\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.1\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+
+%%%---------- close: tex/pgfcircshapes
+%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
+%%%---------- open: tex/pgfcircmonopoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Monopoles
+
+%% Ground symbol
+% #1 -> name
+% #2 -> width
+% #3 -> depth
+% #4 -> code
+\long\def\pgf@circ@declareground#1#2#3#4{
+ \pgfdeclareshape{#1}{
+ \savedanchor{\southeast}{
+ \pgf@x=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+ \pgf@x=#2\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+ \pgf@y=-#3\pgf@y
+ }
+ \anchor{north}{\pgfpointorigin}
+ \anchor{north east}{\southeast\pgf@y=0pt\relax}
+ \anchor{east}{\southeast\pgf@y=.5\pgf@y}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\southeast\pgf@y=.5\pgf@y\pgf@x=-\pgf@x}
+ \anchor{north west}{\southeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ \anchor{center}{\pgfpointorigin}
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ #4
+ \endpgfscope
+ }
+ }
+}
+
+
+\pgf@circ@declareground{ground}{0.6}{1.6}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+\pgf@circ@declareground{tlground}{0.6}{0.4}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+
+\pgf@circ@declareground{rground}{0.6}{1}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\ctikzvalof{monopoles/rground/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+\pgf@circ@declareground{tground}{0.6}{0}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+}
+
+\pgf@circ@declareground{sground}{0.6}{1.8}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+}
+
+% noiseless ground
+\pgf@circ@declareground{nground}{0.9}{1.6}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.9\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpatharc{0}{180}{0.9\pgf@circ@res@step}
+ \pgfusepath{draw}
+}
+
+% protective ground
+\pgf@circ@declareground{pground}{0.9}{1.8}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathcircle{\pgfpoint{0pt}{-0.9\pgf@circ@res@step}}{0.9\pgf@circ@res@step}
+ \pgfusepath{draw}
+}
+
+% chassis ground
+\pgf@circ@declareground{cground}{1}{2}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-1.00\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{ 0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{ 0.50\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.25\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+% Contributed by @fotesan https://github.com/fotesan
+
+\pgf@circ@declareground{eground}{1.1}{1.7}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.1\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+\pgf@circ@declareground{eground2}{1.1}{1.7}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.45\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+% Contributed by Leonardo Azzinnari
+\pgfdeclareshape{tlinestub}{
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
+ \pgf@x=1.625\pgf@circ@res@step
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
+ \pgf@y=.25\pgf@circ@res@step%
+ }
+ % the center is on the left side of the shape for facility of usage
+ \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0.5\pgf@x\relax}
+ \anchor{west}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=0cm\relax}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@x=0cm\pgf@y=-\pgf@y}
+ \anchor{center}{\pgfpointorigin}
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
+
+ \pgfscope\begin{pgftransparencygroup}
+ \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgf@circ@maybefill
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \end{pgftransparencygroup} \endpgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ }
+}
+
+%% New antennas without tails
+
+% main body
+\def\pgf@circ@antennabody{%
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@Rlen
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{2\pgf@circ@res@step}}
+ \pgfsetbeveljoin
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+% Waves for the antennas.
+\def\pgf@circ@antennawaves{%
+ \pgfscope
+ % define a triangle for clipping the waves
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfusepath{clip}
+ % ...and build the waves as clipped circles
+ \pgf@circ@count@a=8\pgf@circ@res@other=0.5\pgf@circ@res@step
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>2
+ \pgfpathcircle{\pgfpoint{0pt}{\pgf@circ@res@step}}{\the\pgf@circ@count@a*\pgf@circ@res@other}
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+% additional shape with the waves
+\pgfdeclareshape{waves}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0pt}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
+ \anchor{bottom}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{north east}{\northeast}
+ \anchor{east}{\northeast\pgf@y=0pt}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@Rlen
+ \pgf@circ@res@step=0.5\pgf@circ@res@step
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfscope
+ % define a triangle for clipping the waves
+ \pgfpathmoveto{\pgfpoint{-2\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfusepath{clip}
+ % ...and build the waves as clipped circles
+ \c@pgf@counta=8\pgf@circ@res@other=0.5\pgf@circ@res@step
+ \pgfmathloop%
+ \ifnum\c@pgf@counta>1
+ \pgfpathcircle{\pgfpoint{-2\pgf@circ@res@step}{0pt}}{\the\c@pgf@counta*\pgf@circ@res@other}
+ \advance\c@pgf@counta-1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% the three types of antennas: simple, TX, RX. Notice that you can flip them...
+
+\pgfdeclareshape{bareantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=2\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{bottom}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@antennabody
+ }
+}
+
+\pgfdeclareshape{bareTXantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=2\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
+ \pgf@x=\dimexpr-\pgf@x-\wd\pgfnodeparttextbox\relax
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{waves}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@Rlen
+ \pgf@x=4.2\pgf@circ@res@step
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{bottom}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@antennabody
+ \pgf@circ@antennawaves
+ }
+}
+
+\pgfdeclareshape{bareRXantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=2\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{waves}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@Rlen
+ \pgf@x=-4.2\pgf@circ@res@step
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{bottom}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@antennabody
+ \pgftransformxshift{-5.2\pgf@circ@res@step}
+ \pgf@circ@antennawaves
+ }
+}
+
+% Microstrip monopoles
+
+\pgfdeclareshape{mslstub}{
+ \savedanchor{\southeast}{
+ \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@Rlen
+ \pgf@y=-.5\pgf@y
+ }
+ \savedanchor{\northwest}{
+ \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@Rlen
+ \pgf@x=-.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{east}{\southeast\pgf@y=0pt\relax}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+ \anchor{north west}{\northwest}
+ %
+ \anchor{center}{\northwest\pgf@y=0pt\relax}
+ \anchor{left}{\northwest\pgf@y=0pt\relax}
+ \anchor{right}{\southeast\pgf@y=0pt\relax}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ \behindbackgroundpath{
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@right}{\southeast}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@down}{\southeast}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{msrstub}{
+ \savedanchor{\southeast}{
+ \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt\relax
+ }
+ \savedanchor{\northwest}{
+ \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@Rlen
+ \pgf@x=-.5\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/msrstub/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{east}{\southeast\pgf@y=0pt\relax}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+ \anchor{north west}{\northwest}
+ %
+ \anchor{center}{\pgfpointorigin}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ \behindbackgroundpath{
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@right}{\southeast}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@down}{\southeast}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointpolar{135}{\pgf@circ@res@step}}
+ \pgfpatharc{135}{45}{\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpointpolar{45}{\pgf@circ@res@up}}
+ \pgfpatharc{45}{135}{\pgf@circ@res@up}
+ \pgfclosepath
+ % \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{msport}{
+ \savedanchor{\southeast}{
+ \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@Rlen
+ \pgf@y=-.5\pgf@y
+ }
+ \savedanchor{\northwest}{
+ \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@Rlen
+ \pgf@x=-.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{east}{\southeast\pgf@y=0pt\relax}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+ \anchor{north west}{\northwest}
+ %
+ \anchor{center}{\northwest\pgf@y=0pt\relax}
+ \anchor{left}{\northwest\pgf@y=0pt\relax}
+ \anchor{right}{\southeast\pgf@y=0pt\relax}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr-.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ }
+ \behindbackgroundpath{
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@right}{\southeast}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@down}{\southeast}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.5*\pgf@circ@res@up}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+% Legacy antennas (with tails)
+
+\def\pgf@circ@shift@antenna@xy#1#2{%
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
+ \pgf@y=\dimexpr\pgf@y+#2\pgf@circ@res@step
+ \pgf@x=\dimexpr\pgf@x+#1\pgf@circ@res@step
+\relax}
+
+\pgfdeclareshape{antenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
+ \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=4\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{2}}
+ \anchor{east}{\northeast\pgf@y=0cm\pgf@circ@shift@antenna@xy{0}{3}\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{4}\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{3}}
+ \anchor{north east}{\northeast\pgf@circ@shift@antenna@xy{0}{2}}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{0}{4}}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{4}}
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
+
+ \pgftransformxshift{ -4\pgf@circ@res@step }
+
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+
+\pgfdeclareshape{txantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
+ \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=4\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
+ \anchor{east}{\northeast\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
+ \anchor{north east}{\northeast\pgf@circ@shift@antenna@xy{4}{2}}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
+ % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+
+\pgfdeclareshape{rxantenna}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
+ \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=4\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
+ \anchor{east}{\northeast\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
+ \anchor{north east}{\northeast\pgf@circ@shift@antenna@xy{4}{2}}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
+ % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+% Vcc
+\pgfdeclareshape{vcc}{
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@circ@res@step
+ \pgf@y=3\pgf@x%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{center}{\pgfpointorigin}
+ \anchor{text}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=2\pgf@circ@res@step
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgfscope
+ \edef\pgf@circ@temp{\ctikzvalof{monopoles/vcc/arrow}}\edef\pgf@temp{legacy}
+ \ifx\pgf@temp\pgf@circ@temp
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \else
+ \pgfsetarrowsend{\pgf@circ@temp}
+ \fi
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% Vee
+\pgfdeclareshape{vee}{
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@circ@res@step
+ \pgf@y=-3\pgf@x%
+ }
+ \anchor{south}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
+ \anchor{north}{\pgfpointorigin}
+ \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast}
+ \anchor{south west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast\pgf@y=0pt\relax}
+ \anchor{north west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{center}{\pgfpointorigin}
+ \anchor{text}{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=-2\pgf@circ@res@step
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
+ \pgfscope
+ \edef\pgf@circ@temp{\ctikzvalof{monopoles/vee/arrow}}\edef\pgf@temp{legacy}
+ \ifx\pgf@temp\pgf@circ@temp
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \else
+ \pgfsetarrowsend{\pgf@circ@temp}
+ \fi
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% match
+\pgfdeclareshape{match}{
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@Rlen
+ \pgf@x=2\pgf@circ@res@step
+ \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@Rlen
+ \pgf@y=.5\pgf@circ@res@step%
+ }
+ % the center is on the left side of the shape for facility of usage
+ \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=0pt\pgf@x=0.5\pgf@x\relax}
+ \anchor{west}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=0cm\relax}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\pgfpointorigin}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
+ \pgf@x=1.5\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \pgf@y=-1.5\ht\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
+ \pgfusepath{fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \endpgfscope
+ }
+}
+
+%%%---------- close: tex/pgfcircmonopoles
+%%%%%%%%%%% Springe nach tex/pgfcircbipoles
+%%%---------- open: tex/pgfcircbipoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%% Generic macro for defining a bipole shape
+% #1 - additional anchors
+% #2 - lower y-size of the bipole (from the center).
+% #3 - #shape is the name of the shape
+% #4 - upper y-size of the bipole (from the center)
+% #5 - width of the bipole
+% #6 - macros drawing the bipole
+
+
+\long\def\pgfcircdeclarebipole#1#2#3#4#5#6{
+ \pgfdeclareshape{#3shape}{
+
+ \savedanchor{\northeast}{
+ \pgf@y=#4\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\northeastborder}{
+ \pgf@y=#4\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwestborder}{
+ \pgf@y=-#2\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=-#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwest}{
+ \pgf@y=-#2\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-#5\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\centerpoint}{
+ \pgf@circ@res@down=-#2\pgf@circ@Rlen
+ \pgf@circ@res@up=#4\pgf@circ@Rlen
+ \pgfpointorigin
+ \pgf@y=\pgf@circ@res@up
+ \advance\pgf@y by\pgf@circ@res@down
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{n}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{north east}{
+ \northeast
+ }
+ \anchor{north west}{
+ \northeast
+ \pgf@x=-\pgf@x
+ }
+ \anchor{ne}{
+ \northeast
+ }
+ \anchor{nw}{
+ \northeast
+ \pgf@x=-\pgf@x
+ }
+ \anchor{e}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{s}{
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{south east}{
+ \southwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \southwest
+ }
+ \anchor{se}{
+ \southwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{sw}{
+ \southwest
+ }
+ \anchor{w}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{east}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{south}{
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{west}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{right}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{above}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{left}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{below}{
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{a}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{b}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \savedanchor{\textanchor}{%
+ \pgf@y=\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \anchor{text}{
+ \textanchor
+ }
+ \anchorborder{%
+ \ifpgf@circuit@bipole@inverted
+ \pgf@circ@res@left=-\pgf@x
+ \pgf@circ@res@right=-\pgf@y
+ \else
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@right=\pgf@y
+ \fi
+ \ifdim\pgf@circ@res@right>0cm
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
+ \else
+ \southwestborder
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
+ \fi
+ }
+
+ #1
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@zero = 0cm
+ \pgf@circ@res@left = -\pgf@x
+ \pgf@circ@res@right = \pgf@x
+ \southwest
+ \pgf@circ@res@down = \pgf@y
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ #6
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ }
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Standard bipole shapes declarations
+
+%% Resistor
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/resistor/height}}
+{resistor}
+{\ctikzvalof{bipoles/resistor/height}}
+{\ctikzvalof{bipoles/resistor/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \divide \pgf@circ@res@step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+}
+
+
+
+%% Variable resistor
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vresistor/height}}
+{vresistor}
+{\ctikzvalof{bipoles/vresistor/height}}
+{\ctikzvalof{bipoles/vresistor/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \divide \pgf@circ@res@step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+%% Capacitor
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/capacitor/height}}
+{capacitor}
+{\ctikzvalof{bipoles/capacitor/height}}
+{\ctikzvalof{bipoles/capacitor/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/capacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+}
+
+%% Capacitive sensor
+\pgfcircdeclarebipole
+{\anchor{label}{%
+ \southwest
+ \pgf@x=2.6\pgf@x
+ \pgf@y=1.4\pgf@y
+ }%
+}
+{\ctikzvalof{bipoles/capacitor/height}}
+{capacitivesens}
+{\ctikzvalof{bipoles/capacitor/height}}
+{\ctikzvalof{bipoles/capacitor/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/capacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{2.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-2.6\pgf@circ@res@right}{1.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-4.4\pgf@circ@res@right}{1.4\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Polar Capacitor
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/pcapacitor/height}}
+{polarcapacitor}
+{\ctikzvalof{bipoles/pcapacitor/height}}
+{\ctikzvalof{bipoles/pcapacitor/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/pcapacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgftransformrotate{-90}
+ \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+}
+
+%% Electrolytic Capacitor
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/ecapacitor/height}}
+{ecapacitor}
+{\ctikzvalof{bipoles/ecapacitor/height}}
+{\ctikzvalof{bipoles/ecapacitor/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/ecapacitor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+ \pgfsetrectcap
+ % % % Draw plus pole
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ % % Draw minus pole
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{black}
+ \pgfusepath{draw,fill}
+ \pgfsetfillcolor{black}
+ % % plus pole annotation
+ \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
+ {\pgfkeysvalueof{/tikz/circuitikz/bipoles/ecapacitor/font} $+$}
+}
+
+%% Battery
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/battery/height}}
+{battery}
+{\ctikzvalof{bipoles/battery/height}}
+{\ctikzvalof{bipoles/battery/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 6
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \ifpgf@circ@fixbatteries
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+}
+
+
+%% Battery 1 % poles with equl thickness
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/battery1/height}}
+{battery1}
+{\ctikzvalof{bipoles/battery1/height}}
+{\ctikzvalof{bipoles/battery1/width}}
+{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \ifpgf@circ@fixbatteries
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+}
+
+%% Battery 2 % negative pole thicker
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/battery2/height}}
+{battery2}
+{\ctikzvalof{bipoles/battery2/height}}
+{\ctikzvalof{bipoles/battery2/width}}
+{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \ifpgf@circ@fixbatteries
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{3\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{3\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+}
+
+
+%% cute inductor
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
+{cuteinductor}
+{\ctikzvalof{bipoles/cuteinductor/height}}
+{\ctikzvalof{bipoles/cuteinductor/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% cute inductive sensor
+
+\pgfcircdeclarebipole
+{%
+{% anchor for labelling the type of dependency
+ \anchor{label}{%
+ \southwest
+ \pgf@x=0.8\pgf@x
+ \pgf@y=2.6\pgf@y
+ }%
+}}
+{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
+{scuteinductor}
+{\ctikzvalof{bipoles/cuteinductor/height}}
+{\ctikzvalof{bipoles/cuteinductor/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% cute choke
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/cutechoke/lower coil height}}
+{cutechoke}
+{\ctikzvalof{bipoles/cutechoke/height}}
+{\ctikzvalof{bipoles/cutechoke/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cutechoke/coil aspect}*\ctikzvalof{bipoles/cutechoke/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/cutechoke/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cutechoke/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cutechoke/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cutechoke/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cutechoke/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}*\ctikzvalof{bipoles/cutechoke/cthick}\pgfstartlinewidth}
+ \pgfusepath{stroke}
+
+ \ifpgf@circuit@bipole@twolines
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}*\ctikzvalof{bipoles/cutechoke/cthick}\pgfstartlinewidth}
+ \pgfusepath{stroke}
+ \fi
+}
+
+%% variable cute inductor
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}
+{vcuteinductor}
+{\ctikzvalof{bipoles/vcuteinductor/height}}
+{\ctikzvalof{bipoles/vcuteinductor/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+%% american inductor
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/americaninductor/height 2}}
+{americaninductor}
+{\ctikzvalof{bipoles/americaninductor/height}}
+{\ctikzvalof{bipoles/americaninductor/width}}
+{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@Rlen
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+
+%% american inductive sensor
+
+\pgfcircdeclarebipole
+{%
+{% anchor for labelling the type of dependency
+ \anchor{label}{%
+ \southwest
+ \pgf@x=0.8\pgf@x
+ \pgf@y=2.6\pgf@y
+ }%
+}}
+{\ctikzvalof{bipoles/americaninductor/height 2}}
+{samericaninductor}
+{\ctikzvalof{bipoles/americaninductor/height}}
+{\ctikzvalof{bipoles/americaninductor/width}}
+{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@Rlen
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% variable american inductor
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vamericaninductor/height 2}}
+{vamericaninductor}
+{\ctikzvalof{bipoles/vamericaninductor/height}}
+{\ctikzvalof{bipoles/vamericaninductor/width}}
+{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@Rlen
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/vamericaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Independent voltage source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vsource/height}}
+{vsource}
+{\ctikzvalof{bipoles/vsource/height}}
+{\ctikzvalof{bipoles/vsource/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+%% Independent voltage source - American style
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vsourceam/height}}
+{vsourceAM}
+{\ctikzvalof{bipoles/vsourceam/height}}
+{\ctikzvalof{bipoles/vsourceam/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \ifpgf@circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$-$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$+$}
+ \fi
+}
+
+
+
+%% Independent sinusoidal voltage source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vsourcesin/height}}
+{vsourcesin}
+{\ctikzvalof{bipoles/vsourcesin/height}}
+{\ctikzvalof{bipoles/vsourcesin/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Square Voltage source - contributed by Alistair Kwan
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vsourcesquare/height}}
+{vsourcesquare}
+{\ctikzvalof{bipoles/vsourcesquare/height}}
+{\ctikzvalof{bipoles/vsourcesquare/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Triangle Voltage source - contributed by Ralf Farkas
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vsourcetri/height}}
+{vsourcetri}
+{\ctikzvalof{bipoles/vsourcetri/height}}
+{\ctikzvalof{bipoles/vsourcetri/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% PV Source
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/pvsource/height}}
+{pvsource}
+{\ctikzvalof{bipoles/pvsource/height}}
+{\ctikzvalof{bipoles/pvsource/width}}
+{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %Arrow Part
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty Source
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/esource/height}}
+{esource}
+{\ctikzvalof{bipoles/esource/height}}
+{\ctikzvalof{bipoles/esource/width}}
+{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+}
+
+%% DC Current Source with open shape
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/dcisource/height}}
+{dcisource}
+{\ctikzvalof{bipoles/dcisource/height}}
+{\ctikzvalof{bipoles/dcisource/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@maybefill
+ \edef\@@angle{\ctikzvalof{bipoles/dcisource/angle}}
+ \pgfpathmoveto{\pgfpointpolar{\@@angle}{\pgf@circ@res@up}}
+ \pgfpatharc{\@@angle}{-\@@angle}{\pgf@circ@res@up}
+ \pgfpathmoveto{\pgfpointpolar{180-\@@angle}{\pgf@circ@res@up}}
+ \pgfpatharc{180-\@@angle}{180+\@@angle}{\pgf@circ@res@up}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+%% DC-Voltage source
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/dcvsource/height}}
+{dcvsource}
+{\ctikzvalof{bipoles/dcvsource/height}}
+{\ctikzvalof{bipoles/dcvsource/width}}
+{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
+ \pgfusepath{draw}
+}
+
+
+%% Independent current source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isource}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+}
+
+%% Independent double oo source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/oosource/height}}
+{oosource}
+{\ctikzvalof{bipoles/oosource/height}}
+{\ctikzvalof{bipoles/oosource/width}}
+{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
+ \pgf@circ@maybefill
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
+ \pgf@circ@draworfill
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
+ \pgfusepath{draw}
+}
+
+
+%% Independent current source - American
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/isourceam/height}}
+{isourceAM}
+{\ctikzvalof{bipoles/isourceam/height}}
+{\ctikzvalof{bipoles/isourceam/width}}
+{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+
+%% Independent sinusoidal current source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isourcesin}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+
+%% Controlled voltage source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/cvsource/height}}
+{cvsource}
+{\ctikzvalof{bipoles/cvsource/height}}
+{\ctikzvalof{bipoles/cvsource/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Controlled voltage source - American
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/cvsourceam/height}}
+{cvsourceAM}
+{\ctikzvalof{bipoles/cvsourceam/height}}
+{\ctikzvalof{bipoles/cvsourceam/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \ifpgf@circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$-$}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$-$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$+$}
+ \fi
+}
+
+
+%% Controlled sinusoidal voltage source
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{cvsourcesin}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{\ctikzvalof{bipoles/cvsourcesin/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+%% Controlled sinusoidal current source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{cisourcesin}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{\ctikzvalof{bipoles/cvsourcesin/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Controlled current source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/cisource/height}}
+{cisource}
+{\ctikzvalof{bipoles/cisource/height}}
+{\ctikzvalof{bipoles/cisource/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+%% Controlled current source - American
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/cisourceam/height}}
+{cisourceAM}
+{\ctikzvalof{bipoles/cisourceam/height}}
+{\ctikzvalof{bipoles/cisourceam/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% Cute Independent voltage source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vsource/height}}
+{vsourceC}
+{\ctikzvalof{bipoles/vsource/height}}
+{\ctikzvalof{bipoles/vsource/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+%% Cute Independent current source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isourceC}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+%% Cute Controlled voltage source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/cvsource/height}}
+{cvsourceC}
+{\ctikzvalof{bipoles/cvsource/height}}
+{\ctikzvalof{bipoles/cvsource/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Cute Controlled current source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/cisource/height}}
+{cisourceC}
+{\ctikzvalof{bipoles/cisource/height}}
+{\ctikzvalof{bipoles/cisource/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@down}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Noise voltage source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vsource/height}}
+{vsourceN}
+{\ctikzvalof{bipoles/vsource/height}}
+{\ctikzvalof{bipoles/vsource/width}}
+{
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ %
+ \pgf@circ@res@step=0.125\pgf@circ@Rlen\relax
+ \edef\pgf@noise@temp{dashed}
+ \edef\pgf@noise@fill{\pgfkeysvalueof{/tikz/circuitikz/bipoles/noise sources/fillcolor}}
+ \ifx\pgf@noise@temp\pgf@noise@fill
+ % fillable in this case
+ \pgf@circ@draworfillandclip
+ \pgfmathsetmacro{\thinner}{.5*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
+ \pgfsetlinewidth{\thinner\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ %
+ \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \else
+ \pgfsetfillcolor{\pgf@noise@fill}
+ \pgfusepath{draw,fill}
+ \fi
+ \endpgfscope
+ \pgfmathsetmacro{\@@thicker}{3*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+%% Noise current source
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isourceN}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ %
+ \pgf@circ@res@step=0.125\pgf@circ@Rlen\relax
+ \edef\pgf@noise@temp{dashed}
+ \edef\pgf@noise@fill{\pgfkeysvalueof{/tikz/circuitikz/bipoles/noise sources/fillcolor}}
+ \ifx\pgf@noise@temp\pgf@noise@fill
+ % fillable in this case
+ \pgf@circ@draworfillandclip
+ \pgfmathsetmacro{\thinner}{.5*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
+ \pgfsetlinewidth{\thinner\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ %
+ \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \else
+ \pgfsetfillcolor{\pgf@noise@fill}
+ \pgfusepath{draw,fill}
+ \fi
+ \endpgfscope
+ \pgfmathsetmacro{\@@thicker}{3*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+%% Black generic diode
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fulldiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black Zener diode
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black alternative zigzag Zener diode
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullzzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black Schottky diode
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullsdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Black tunnel diode
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fulltdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black light emitting diode
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fulllediode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+}
+
+%% Black photodiode
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullpdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latexslim}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black varcap
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/varcap/height}}
+{fullvarcap}
+{\ctikzvalof{bipoles/varcap/height}}
+{\ctikzvalof{bipoles/varcap/width}}
+{
+ \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfusepath{draw,fill}
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Code for the diode triangle
+\def\pgf@circ@basicdiodeshape{
+ % \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfscope
+ % to allow filling, we need to draw explicitily the stroke here.
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \ifpgf@circuit@bipole@strokedsymbol
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+ % \endpgfscope
+}
+
+
+%% Empty generic diode
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptydiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty Zener diode
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptyzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty alternative zigzag Zener diode
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptyzzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%% Empty Schottky diode
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptysdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty tunnel diode
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptytdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty light emitting diode
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptylediode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty photodiode
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptypdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latexslim}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty varcap
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/varcap/height}}
+{emptyvarcap}
+{\ctikzvalof{bipoles/varcap/height}}
+{\ctikzvalof{bipoles/varcap/width}}
+{
+ \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ % \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfscope
+ % to allow filling, we need to draw explicitily the stroke here.
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \ifpgf@circuit@bipole@strokedsymbol
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty bidirectionaldiode
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bidirectionaldiode/height}}{emptybidirectionaldiode}{\ctikzvalof{bipoles/bidirectionaldiode/height}}{\ctikzvalof{bipoles/bidirectionaldiode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgf@circ@draworfill
+ % \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+
+%% Full bidirectionaldiode
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{fullbidirectionaldiode}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{\ctikzvalof{bipoles/bidirectionaldiode/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw, fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% (Closing) SPST
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/spst/depth}}
+{cspst}
+{\ctikzvalof{bipoles/spst/height}}
+{\ctikzvalof{bipoles/spst/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpointpolar{90}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{90}{-20}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Opening SPST
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/spst/depth}}
+{ospst}
+{\ctikzvalof{bipoles/spst/height}}
+{\ctikzvalof{bipoles/spst/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{-10}{90}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Normal open Switch
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/nos/depth}}
+{nos}
+{\ctikzvalof{bipoles/nos/height}}
+{\ctikzvalof{bipoles/nos/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+}
+
+%% Normal closed Switch
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/ncs/depth}}
+{ncs}
+{\ctikzvalof{bipoles/ncs/height}}
+{\ctikzvalof{bipoles/ncs/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Push Button
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/pushbutton/height 2}}
+{pushbutton}
+{\ctikzvalof{bipoles/pushbutton/height}}
+{\ctikzvalof{bipoles/pushbutton/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+
+%% Normally closed Push Button
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/pushbutton/height 2}}
+{ncpushbutton}
+{\ctikzvalof{bipoles/pushbutton/height}}
+{\ctikzvalof{bipoles/pushbutton/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp}}
+ \pgfpathmoveto{\pgfpoint{0}{-\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ %
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+% cute switch "to" shapes help function
+% #1 -> name
+% #2 -> barposition
+% #3 -> arrowcode
+\long\def\pgfcircdeclarecutesw#1#2#3{
+ \pgfcircdeclarebipole
+ {
+ \savedanchor\midlever{
+ % these values are calculated when we create the definition of the shape.
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/cuteswitch/height}\pgf@circ@Rlen
+ \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgf@circ@res@down = -.5\pgf@y
+ \pgf@circ@res@up = .5\pgf@y
+ \pgfextracty{\pgf@circ@res@other}{#2}
+ \pgf@x=0pt
+ \pgf@y=.5\pgf@circ@res@other
+ }
+ % radius of the connector
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % shape type
+ \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
+ % mid of the lever, to stack switches
+ \anchor{mid}{\midlever}
+ \anchor{cout}{\northeast \pgf@y=0cm}
+ \anchor{cin}{\southwest\pgf@y=0cm}
+ \anchor{out}{\northeast \pgf@y=0cm\advance\pgf@x by \radius}
+ \anchor{in}{\southwest\pgf@y=0cm\advance\pgf@x by -\radius}
+ }
+ {\ctikzvalof{bipoles/cuteswitch/height 2}}
+ {#1}
+ {\ctikzvalof{bipoles/cuteswitch/height}}
+ {\ctikzvalof{bipoles/cuteswitch/width}}{
+ \pgfscope
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgfsetlinewidth{2\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{#2}
+ \pgfsetroundcap\pgfusepath{draw}
+ \endpgfscope
+ \pgfscope % arrow
+ #3
+ \endpgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out}{\pgfusepath{draw}}
+ }
+}
+
+%% closed cute switch
+\pgfcircdeclarecutesw{cuteclosedswitch}
+ {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
+ {}
+
+%% open cute switch
+\pgfcircdeclarecutesw{cuteopenswitch}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ {}
+
+%% closing cute switch
+\pgfcircdeclarecutesw{cuteclosingswitch}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ {
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{70}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{70}{-10}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+ }
+
+%% opening cute switch
+\pgfcircdeclarecutesw{cuteopeningswitch}
+ {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
+ {
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{-10}{60}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+ }
+
+
+% % METERINGSHAPE
+ \long\def\drawmeteringcircle{
+ \def\pgf@circ@temp{right}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \def\pgf@circ@temp{below}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \pgf@circ@res@step=1.2\pgf@circ@res@up
+ \fi
+ \fi
+ %draw connections to circle
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ %draw circle
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgf@circ@draworfill
+ \endpgfscope
+ %draw arrow
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+%AMPEREMETER
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/ammeter/height}}
+{ammeter}
+{\ctikzvalof{bipoles/ammeter/height}}
+{\ctikzvalof{bipoles/ammeter/width}}
+{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\textbf{A}}{}{}
+}
+%OHMMETER
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/ohmmeter/height}}
+{ohmmeter}
+{\ctikzvalof{bipoles/ohmmeter/height}}
+{\ctikzvalof{bipoles/ohmmeter/width}}
+{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
+}
+%VOLTMETER
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/voltmeter/height}}
+{voltmeter}
+{\ctikzvalof{bipoles/voltmeter/height}}
+{\ctikzvalof{bipoles/voltmeter/width}}
+{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\textbf{V}}{}{}
+
+}
+
+% oscilloscope, suggested by @nobrl https://github.com/circuitikz/circuitikz/issues/176
+\pgfcircdeclarebipole
+{
+ \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
+ \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/oscope/height}}
+{oscope}
+{\ctikzvalof{bipoles/oscope/height}}
+{\ctikzvalof{bipoles/oscope/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\southwest}
+ \pgfextracty{\pgf@circ@res@down}{\southwest}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfscope
+ \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ % this would create a round (analog?) scope...
+ % \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ % get the rotation
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ % and unrotate the scope
+ \pgfscope
+ \pgftransformrotate{\rot}
+ % grid
+ \pgfscope
+ \pgfsetlinewidth{0.5\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfpathgrid[stepx=\pgf@circ@res@step, stepy=\pgf@circ@res@step]%
+ {\pgfpoint{0.75\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ {\pgfpoint{0.75\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfsetstrokeopacity{0.5}
+ \pgfusepath{draw}
+ \endpgfscope
+ % function displayed, thanks to
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%% Short circuit
+
+%%% NOTICE that the short is really NOT drawn; we trust the fact that its
+%%% natural length is zero.
+\pgfcircdeclarebipole
+{}
+{0}
+{short}
+{0}
+{0}
+{ }
+
+%% Open circuit
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/open/height}}
+{open}
+{\ctikzvalof{bipoles/open/height}}
+{\ctikzvalof{bipoles/open/width}}
+{ }
+
+%% Generic bipole - used as resistor by some (bleah)
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/generic/height}}
+{generic}
+{\ctikzvalof{bipoles/generic/height}}
+{\ctikzvalof{bipoles/generic/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+
+%% fuse
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/fuse/height}}
+{fuse}
+{\ctikzvalof{bipoles/fuse/height}}
+{\ctikzvalof{bipoles/fuse/width}}
+{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@draworfill
+}
+
+
+
+%% Generic bipole, filled - used as inductor by some
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{fullgeneric}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{\ctikzvalof{bipoles/fullgeneric/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfusepath{draw,fill}
+}
+
+%% Generic sensor, filled - used as inductive sensor by some
+
+\pgfcircdeclarebipole
+{{% anchor for labelling the type of dependency
+ \anchor{label}{%
+ \southwest
+ \pgf@x=0.4\pgf@x
+ \pgf@y=2\pgf@y
+ }%
+}}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{sfullgeneric}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{\ctikzvalof{bipoles/fullgeneric/width}}
+{
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw,fill}
+ %\pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ %\endpgfscope
+}
+
+
+%% Generic asymmetric bipole
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/ageneric/height}}
+{ageneric}
+{\ctikzvalof{bipoles/ageneric/height}}
+{\ctikzvalof{bipoles/ageneric/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+%% asymmetric fuse
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/afuse/height}}
+{afuse}
+{\ctikzvalof{bipoles/afuse/height}}
+{\ctikzvalof{bipoles/afuse/width}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+
+
+%% Memristor
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/memristor/height}}
+{memristor}
+{\ctikzvalof{bipoles/memristor/height}}
+{\ctikzvalof{bipoles/memristor/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+
+
+
+%% Generic empty tunable
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/tgeneric/height}}
+{tgeneric}
+{\ctikzvalof{bipoles/tgeneric/height}}
+{\ctikzvalof{bipoles/tgeneric/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Photoresistor
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/photoresistor/height 2}}
+{photoresistor}
+{\ctikzvalof{bipoles/photoresistor/height}}
+{\ctikzvalof{bipoles/photoresistor/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+%% Thermistor
+\pgfcircdeclarebipole
+{{% anchor for labelling the type of dependency
+ \anchor{label}{%
+ \southwest
+ \pgf@x=0.4\pgf@x
+ \pgf@y=1.2\pgf@y
+ }%
+}}
+{\ctikzvalof{bipoles/thermistor/height}}
+{thermistor}
+{\ctikzvalof{bipoles/thermistor/height}}
+{\ctikzvalof{bipoles/thermistor/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ %\pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ %\endpgfscope
+}
+
+
+%% Thermistor PTC
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/thermistorptc/height 2}}
+{thermistorptc}
+{\ctikzvalof{bipoles/thermistorptc/height}}
+{\ctikzvalof{bipoles/thermistorptc/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Thermistor NTC
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/thermistorntc/height 2}}
+{thermistorntc}
+{\ctikzvalof{bipoles/thermistorntc/height}}
+{\ctikzvalof{bipoles/thermistorntc/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% thermocouple
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/thermocouple/height 2}}
+{thermocouple}
+{\ctikzvalof{bipoles/thermocouple/height}}
+{\ctikzvalof{bipoles/thermocouple/width}}
+{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+}
+
+%% Varistor
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/varistor/height}}
+{varistor}
+{\ctikzvalof{bipoles/varistor/height}}
+{\ctikzvalof{bipoles/varistor/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\tiny\textsf{U}}}
+}
+
+
+
+%% Generic full tunable
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/tfullgeneric/height}}
+{tfullgeneric}
+{\ctikzvalof{bipoles/tfullgeneric/height}}
+{\ctikzvalof{bipoles/tfullgeneric/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw,fill}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+
+
+
+%% Variable Capacitor
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vcapacitor/height}}
+{vcapacitor}
+{\ctikzvalof{bipoles/vcapacitor/height}}
+{\ctikzvalof{bipoles/vcapacitor/width}}
+{
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/width}\pgf@circ@Rlen
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfusepath{draw}
+}
+
+
+%% Piezoelectric Element
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/piezoelectric/height}}
+{piezoelectric}
+{\ctikzvalof{bipoles/piezoelectric/height}}
+{\ctikzvalof{bipoles/piezoelectric/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 5
+
+ %% Outer markings
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %% Inner Box
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left+4}{\pgf@circ@res@up-1}}{\pgfpoint{\pgf@circ@res@right-4}{\pgf@circ@res@down+1}}
+ \pgf@circ@draworfill
+ \endpgfscope
+}
+
+
+
+
+
+
+%% Lamp
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/lamp/height}}
+{lamp}
+{\ctikzvalof{bipoles/lamp/height}}
+{\ctikzvalof{bipoles/lamp/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% bulb
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/bulb/height}}
+{bulb}
+{\ctikzvalof{bipoles/bulb/height}}
+{\ctikzvalof{bipoles/bulb/width}}
+{%
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{0.8\pgf@circ@res@up}}{\pgfpoint{0.8\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
+ \pgfsetbeveljoin
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+% transmission line
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/tline/height}}
+{tline}
+{\ctikzvalof{bipoles/tline/height}}
+{\ctikzvalof{bipoles/tline/width}}
+{
+ \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
+ \begin{pgftransparencygroup}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{-\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ \end{pgftransparencygroup}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{stroke}
+}
+
+% microstrip transmission line
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/mstline/height}}
+{mstline}
+{\ctikzvalof{bipoles/mstline/height}}
+{\ctikzvalof{bipoles/mstline/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+%% SQUID added by Cor Molenaar 5 March 2010
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/squid/height}}
+{squid}
+{\ctikzvalof{bipoles/squid/height}}
+{\ctikzvalof{bipoles/squid/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+
+
+% Generic barrier added by Cor Molenaar 5 March 2010
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/barrier/height}}
+{barrier}
+{\ctikzvalof{bipoles/barrier/height}}
+{\ctikzvalof{bipoles/barrier/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
+
+ \pgfusepath{draw}
+}
+
+
+% Contributed by Danilo Piazzalunga
+
+\pgfdeclareshape{buffer}
+{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ }
+}
+
+
+
+
+
+\pgfdeclareshape{plain amp}
+{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+
+
+
+
+ }
+}
+
+
+%% Draw the two-port fillable box
+\def\pgf@circ@twoportbox{
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \endpgfscope
+}
+
+%% Generic two port box
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/twoport/height}}
+{twoport}
+{\ctikzvalof{bipoles/twoport/height}}
+{\ctikzvalof{bipoles/twoport/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw outer box
+ \pgf@circ@twoportbox
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+}
+
+%% voltage controled oscillator
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vco/width}}
+{vco}
+{\ctikzvalof{bipoles/twoport/width}}
+{\ctikzvalof{bipoles/vco/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw circle
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+}
+
+%% bandpass filter
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/bandpass/width}}
+{bandpass}
+{\ctikzvalof{bipoles/bandpass/width}}
+{\ctikzvalof{bipoles/bandpass/width}}
+{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% bandstop filter
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/bandstop/width}}
+{bandstop}
+{\ctikzvalof{bipoles/bandstop/width}}
+{\ctikzvalof{bipoles/bandstop/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bandstop/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225% 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt}% always draw solid line for inner symbol
+ \pgfsetarrows{-}%never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% highpass filter
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/highpass/width}}
+{highpass}
+{\ctikzvalof{bipoles/highpass/width}}
+{\ctikzvalof{bipoles/highpass/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% lowpass filter
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/lowpass/width}}
+{lowpass}
+{\ctikzvalof{bipoles/lowpass/width}}
+{\ctikzvalof{bipoles/lowpass/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% ADC
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/adc/width}}
+{adc}
+{\ctikzvalof{bipoles/adc/width}}
+{\ctikzvalof{bipoles/adc/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{A}
+ \def\textii{D}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{A}
+ \def\textii{D}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DAC
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/dac/width}}
+{dac}
+{\ctikzvalof{bipoles/dac/width}}
+{\ctikzvalof{bipoles/dac/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{D}
+ \def\textii{A}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{D}
+ \def\textii{A}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DSP
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/dsp/width}}
+{dsp}
+{\ctikzvalof{bipoles/dsp/width}}
+{\ctikzvalof{bipoles/dsp/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{DSP}}
+}
+
+%% FFT
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/fft/width}}
+{fft}
+{\ctikzvalof{bipoles/fft/width}}
+{\ctikzvalof{bipoles/fft/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{FFT}}
+}
+
+%% Amplifier
+\pgfcircdeclarebipole
+{}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{amp}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \pgf@circ@draworfill
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+}
+
+
+%% variable amplifier
+\pgfcircdeclarebipole
+{}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{vamp}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+ % draw arrow
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% pi attenuator
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/piattenuator/width}}
+{piattenuator}
+{\ctikzvalof{bipoles/piattenuator/width}}
+{\ctikzvalof{bipoles/piattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable pi attenuator
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vpiattenuator/width}}
+{vpiattenuator}
+{\ctikzvalof{bipoles/vpiattenuator/width}}
+{\ctikzvalof{bipoles/vpiattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% T attenuator
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/tattenuator/width}}
+{tattenuator}
+{\ctikzvalof{bipoles/tattenuator/width}}
+{\ctikzvalof{bipoles/tattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable T attenuator
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/vtattenuator/width}}
+{vtattenuator}
+{\ctikzvalof{bipoles/vtattenuator/width}}
+{\ctikzvalof{bipoles/vtattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% phase shifter
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{phaseshifter}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+}
+
+%% variable phase shifter
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{vphaseshifter}
+{\ctikzvalof{bipoles/vphaseshifter/width}}
+{\ctikzvalof{bipoles/vphaseshifter/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% detector
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/detector/width}}
+{detector}
+{\ctikzvalof{bipoles/detector/width}}
+{\ctikzvalof{bipoles/detector/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{0.8\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@fulldiode
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
+ \fi
+
+}
+
+
+
+
+%% european gas filled surge arrester
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
+{european gas filled surge arrester}
+{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
+{\ctikzvalof{bipoles/european gas filled surge arrester/width}}
+{
+
+ %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ %\divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@draworfill
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+}
+
+
+
+
+%% american gas filled surge arrester
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
+{american gas filled surge arrester}
+{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
+{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope{}
+
+ \pgfcircle{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
+ \pgfusepath{fill}
+}
+
+% % MECHANICAL SYMBOLS
+
+%% mechanical capacitance - stiffness/spring
+
+\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spring/height}}{spring}{\ctikzvalof{bipoles/spring/height}}{\ctikzvalof{bipoles/spring/width}}{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical inductance - mass
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/mass/box height}}
+{mass}
+{\ctikzvalof{bipoles/mass/height}}
+{\ctikzvalof{bipoles/mass/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical resistor - damper
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/damper/height}}
+{damper}
+{\ctikzvalof{bipoles/damper/height}}
+{\ctikzvalof{bipoles/damper/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@maybefill
+
+ % line into the damper
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {\pgf@circ@res@zero}}
+ \pgfusepath{stroke}
+
+ % damper box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+
+ % damper vertical element
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{stroke}
+
+}
+%% mechanical viscoelastic element, suggested by @alex
+%% in https://tex.stackexchange.com/questions/484268/combined-spring-damper-in-circuitikz
+\pgfcircdeclarebipole
+{} % extra anchors
+{\ctikzvalof{bipoles/damper/height}} % depth (under the path line)
+{viscoe} % name
+{\ctikzvalof{bipoles/damper/height}} % height (above the path line)
+{\ctikzvalof{bipoles/damper/width}} % width
+{ % draw the bipole
+ \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@maybefill
+
+ % spring into the damper
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfsetcornersarced{\pgfpoint{.25\pgf@circ@res@up}{.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.75\pgf@circ@res@left}{.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@left}{-.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{.75\pgf@circ@res@up}}
+ \pgfusepath{stroke}
+ \endpgfscope
+ % damper box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+
+ % damper vertical element
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{stroke}
+
+}
+
+
+\pgfcircdeclarebipole
+{% anchor for labelling the type of dependency
+ \anchor{label}{%
+ \southwest
+ \pgf@x=0.4\pgf@x
+ }%
+}
+{\ctikzvalof{bipoles/resistivesens/height}}
+{resistivesens}
+{\ctikzvalof{bipoles/resistivesens/height}}
+{\ctikzvalof{bipoles/resistivesens/width}}
+{%
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \divide \pgf@circ@res@step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-.9\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% crossing bipole (but see also nodes)
+\pgfcircdeclarebipole
+ {}
+ {\ctikzvalof{bipoles/crossing/size}}
+ {crossing}
+ {\ctikzvalof{bipoles/crossing/size}}
+ {\ctikzvalof{bipoles/crossing/size}}{
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
+ \pgfsetbeveljoin
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+
+%% loudspeaker and microphone
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/loudspeaker/depth}}
+{loudspeaker}
+{\ctikzvalof{bipoles/loudspeaker/height}}
+{\ctikzvalof{bipoles/loudspeaker/width}}{
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{.4\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/mic/depth}}
+{mic}
+{\ctikzvalof{bipoles/mic/height}}
+{\ctikzvalof{bipoles/mic/width}}{
+
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0pt}{.6\pgf@circ@res@up}}{.4\pgf@circ@res@up}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{0pt}}
+ % 0.25358 is 0.6-0.4*cos(30)
+ \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% generic round meter with always horizontal text, no arrow
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/esource/height}}
+{rmeter}
+{\ctikzvalof{bipoles/esource/height}}
+{\ctikzvalof{bipoles/esource/width}}
+{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ % draw the text label
+ % get the rotation
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ % and unrotate the scope
+ \pgfscope
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgftransformrotate{\rot}
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+ \endpgfscope
+}
+
+% generic round meter with always horizontal text, with arrow
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/esource/height}}
+{rmeterwa}
+{\ctikzvalof{bipoles/esource/height}}
+{\ctikzvalof{bipoles/esource/width}}
+{
+ \pgfpointorigin
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ % draw the text label
+ % get the rotation
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ % and unrotate the scope
+ \pgfscope
+ \pgftransformrotate{\rot}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ % arrow: create a center hole to have better visual
+ \pgfscope
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ % next open a circle into it
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{.6\pgf@circ@res@up}}{\pgfpoint{.6\pgf@circ@res@left}{0}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfsetarrowsend{latexslim}
+ % the arrow is better if it has a bit of breath and it's not 45ยบ
+ \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@right}{1.2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgftext[center]{\ctikzvalof{bipoles/twoport/text}}
+ \endpgfscope
+}
+
+% generic square meter with always horizontal text
+\pgfcircdeclarebipole
+{
+ \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
+ \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/smeter/height}}
+{smeter}
+{\ctikzvalof{bipoles/smeter/height}}
+{\ctikzvalof{bipoles/smeter/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\southwest}
+ \pgfextracty{\pgf@circ@res@down}{\southwest}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfscope
+ \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ % get the rotation
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ % and unrotate the scope
+ \pgfscope
+ \pgftransformrotate{\rot}
+ % the metering window
+ \pgfscope
+ \def\@starta{105}\def\@stopa{75}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftransformshift{\pgfpoint{0pt}{-1.8\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{\@starta}{2\pgf@circ@res@up}}
+ \pgfpatharc{\@starta}{\@stopa}{2\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
+ \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
+ \pgfclosepath
+ \pgfpathmoveto{\pgfpointpolar{80}{2\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{80}{2.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgftext[center, y=0.5\pgf@circ@res@down]{\ctikzvalof{bipoles/twoport/text}}
+ \endpgfscope
+}
+
+% probles qucs style:
+% #1 : name
+% #2 : extra code
+\long\def\pgfcirc@qucsprobe#1#2{
+ \pgfcircdeclarebipole
+ {
+ \anchor{v+}{\southwest\pgf@x=0.6\pgf@x}
+ \anchor{v-}{\southwest\pgf@x=-0.6\pgf@x}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ }
+ {\ctikzvalof{bipoles/qmeter/depth}}
+ {#1}
+ {\ctikzvalof{bipoles/qmeter/height}}
+ {\ctikzvalof{bipoles/qmeter/width}}
+ {
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\southwest}
+ \pgfextracty{\pgf@circ@res@down}{\southwest}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfscope
+ \pgfscope
+ \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \def\@starta{103}\def\@stopa{77}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{0pt}{-1.7\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{\@starta}{2.1\pgf@circ@res@up}}
+ \pgfpatharc{\@starta}{\@stopa}{2.1\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
+ \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
+ \pgfclosepath
+ \pgfpathmoveto{\pgfpointpolar{83}{2.1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{83}{2.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgf@circ@draworfill
+ \endpgfscope
+ #2
+ \endpgfscope
+ }
+}
+
+\pgfcirc@qucsprobe{qiprobe}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \pgfnode{currarrow}{center}{}{}{}
+}
+
+\pgfcirc@qucsprobe{qvprobe}{
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{0pt}}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
+ \pgfusepath{draw}
+ \pgfscope
+ % "+" and "-", drawn so that they scale correctly
+ \pgfsetlinewidth{2\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-1.5\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-3.5\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+\pgfcirc@qucsprobe{qpprobe}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \pgfnode{currarrow}{center}{}{}{}
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{-4\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{-4\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfscope
+ % "+" and "-", drawn so that they scale correctly
+ \pgfsetlinewidth{2\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-2\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-4\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right-4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+% current loop for oscope and similar: stylized
+
+\pgfcircdeclarebipole
+{
+ \anchor{i}{\northeast\pgf@x=0pt\relax}
+ \anchor{text}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/iloop/height}}
+{iloop}
+{\ctikzvalof{bipoles/iloop/height}}
+{\ctikzvalof{bipoles/iloop/width}}
+{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@down=-\pgf@circ@res@up
+ \pgf@circ@res@left=-\pgf@circ@res@right
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ % external ellipse
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgflinewidth}
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ % next the opening to the left
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
+ {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathellipse{\pgfpointorigin}{
+ \pgfpoint{0pt}{0.8\pgf@circ@res@up}}{
+ \pgfpoint{0.4\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ % internal wire
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % and the contact line up
+ \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+% current loop for oscope and similar: real (double connection)
+
+\pgfcircdeclarebipole
+{
+ \anchor{i+}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@step=0.4\pgf@circ@res@right
+ \pgf@circ@res@other=0.8\pgf@circ@res@up
+ \pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgf@y=\pgf@circ@res@up
+ }
+ \anchor{i-}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@step=0.4\pgf@circ@res@right
+ \pgf@circ@res@other=0.8\pgf@circ@res@up
+ \pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgf@y=\pgf@circ@res@up
+ }
+ \anchor{text}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/iloop/height}}
+{iloop2}
+{\ctikzvalof{bipoles/iloop/height}}
+{\ctikzvalof{bipoles/iloop/width}}
+{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@down=-\pgf@circ@res@up
+ \pgf@circ@res@left=-\pgf@circ@res@right
+ % must be the same than internal i+ and i- anchors definition
+ \pgf@circ@res@step=0.4\pgf@circ@res@right
+ \pgf@circ@res@other=0.8\pgf@circ@res@up
+ \def\@plus{\pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}}
+ \def\@minus{\pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}}
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ % external ellipse
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgflinewidth}
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ % next the opening to the left
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
+ {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathmoveto{\@plus}
+ \pgfpatharc{105}{435}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfusepath{draw}
+ \endpgfscope
+ % internal wire
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % and the contact line up
+ % I use ...left and ---right as temporal lengths here to avoid defining more
+ \pgfextractx{\pgf@circ@res@left}{\@plus}
+ \pgfextractx{\pgf@circ@res@right}{\@minus}
+ \pgfpathmoveto{\@plus}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\@minus}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+% end of pgfcircbipoles.tex
+%%%---------- close: tex/pgfcircbipoles
+%%%%%%%%%%% Springe nach tex/pgfcirctripoles
+%%%---------- open: tex/pgfcirctripoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Tripoles
+
+\pgfdeclareshape{spdt}{
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out 1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{out 2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/margin}\pgf@circ@res@left
+
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
+ {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
+ }
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+
+% cute switch "node" shapes, matching with cute "to" shapes
+% #1 -> name
+% #2 -> barposition
+% #3 -> arrowcode
+\long\def\pgfcircdeclarecutespdt#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/cuteswitch/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/width}\pgf@circ@Rlen
+ \pgf@x=.25\pgf@x
+ }
+ \savedanchor\midlever{
+ % these values are calculated when we create the definition of the shape.
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/cuteswitch/height}\pgf@circ@Rlen
+ \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgf@circ@res@down = -.5\pgf@y
+ \pgf@circ@res@up = .5\pgf@y
+ \pgfextracty{\pgf@circ@res@other}{#2}
+ \pgf@x=0pt
+ \pgf@y=.5\pgf@circ@res@other
+ }
+ % radius of the connector
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % shape type
+ \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
+ % mid of the lever, to stack switches
+ \anchor{mid}{\midlever}
+ % center anchors
+ \anchor{cin}{ \northwest \pgf@y=0pt}
+ \anchor{cout 1}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{cout 2}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ % horizontal angles
+ \anchor{in}{ \northwest \pgf@y=0pt\advance\pgf@x by -\radius}
+ \anchor{out 1}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius}
+ \anchor{out 2}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius \pgf@y=-\pgf@y }
+
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \pgf@circ@res@temp=\radius\relax
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgfsetlinewidth{2\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{#2}
+ \pgfsetroundcap\pgfusepath{draw}
+ \endpgfscope
+ \pgfscope % arrow
+ #3
+ \endpgfscope
+ % terminals
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out 1}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out 2}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ }
+ }
+}
+
+\pgfcircdeclarecutespdt{cute spdt up}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
+{}
+
+\pgfcircdeclarecutespdt{cute spdt mid}
+{\pgfpoint{\pgf@circ@res@right}{0pt}}
+{}
+
+\pgfcircdeclarecutespdt{cute spdt down}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
+{}
+
+\pgfcircdeclarecutespdt{cute spdt up arrow}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{70}{1.5\pgf@circ@res@right}}
+ \pgfpatharc{70}{-50}{1.5\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclarecutespdt{cute spdt mid arrow}
+{\pgfpoint{\pgf@circ@res@right}{0pt}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfsetarrowsstart{latexslim}
+ \pgfpathmoveto{\pgfpointpolar{-60}{1.5\pgf@circ@res@right}}
+ \pgfpatharc{-60}{60}{1.5\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclarecutespdt{cute spdt down arrow}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{-50}{1.5\pgf@circ@res@right}}
+ \pgfpatharc{-50}{70}{1.5\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Logic ports
+%%
+%% Code from John Kormylo at tex.stackexchange.com
+%% See https://tex.stackexchange.com/questions/372993/is-it-possible-to-implement-multiple-input-logic-ports-with-circuitikz
+%% Integration and fixes from Romano Giannetti and TheTeXnician <38565529+TheTeXnician@users.noreply.github.com>
+%%
+
+\newcount\pgf@circ@res@count% reserve global register
+
+\def\pgf@circ@logicport@input#1% #1 = \pgfmathcounter
+{%
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+}%
+
+% #1 = \pgfmathcounter #2=type #3 specificic port
+% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor, 4 for european.
+\def\pgf@circ@logicport@baseinput#1#2#3%
+{%
+ % and and nand
+ \ifnum #2=1\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/port width}\pgf@circ@res@left
+ \fi
+ % or and nor
+ \ifnum #2=2\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/angle}}%
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\pgf@y
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgf@x=\pgf@circ@res@other
+ \fi
+ % xor and xnor
+ \ifnum #2=3\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american #3 port/angle}{\pgf@circ@math@angle}%
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/distance}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
+ % this compensates for the effect of the line width on the gap between the arcs
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
+
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@circ@res@temp=\pgf@y
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \advance\pgf@circ@res@other by -\pgf@circ@math@distance
+ \pgf@x=\pgf@circ@res@other
+ \fi
+ % european
+ \ifnum #2=4\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@other}{\left}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@x=\pgf@circ@res@other
+ \fi
+}%
+
+%%% american
+\long\def\pgfcircdeclarelogicport#1#2#3{%
+ \pgfdeclareshape{american #1 port}%
+ {%
+ \savedmacro\resize{% automatic
+ \pgf@circ@res@up = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@circ@Rlen
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgf@circ@res@down = -\pgf@circ@res@up
+ \pgf@circ@res@right = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@circ@Rlen
+ \pgf@circ@res@right = .5\pgf@circ@res@right
+ \pgf@circ@res@left = -\pgf@circ@res@right
+ }%
+ \savedmacro\inputs{% get number of inputs
+ \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
+ \ifnum\pgf@circ@res@count=0
+ \pgf@circ@res@count=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/inputs}\relax%
+ \fi
+ \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
+ \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
+ \def\inputs{\the\pgf@circ@res@count}%
+ }%
+ \savedanchor\step{% 1/2 gap at edges
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@circ@Rlen
+ \divide\pgf@circ@res@step by \pgf@circ@res@count
+ \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
+ }%
+ \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \savedanchor\left{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/port width}\pgf@circ@res@left}{0pt}}
+ \savedanchor\right{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/port width}\pgf@circ@res@right}{0pt}}
+ \savedanchor\origin{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/origin}\pgf@circ@res@right}{0pt}}
+
+ \anchor{center}{\origin}% for backwards compatibility
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ % create input anchors
+ \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@american #1 port\endcsname{%
+ \pgfmathloop%
+ \ifnum\pgfmathcounter>\pgf@circ@res@count%
+ \else%
+ %\pgfutil@ifundefined{pgf@anchor@american #1 port@in \pgfmathcounter}{%
+ \expandafter\xdef\csname pgf@anchor@american #1 port@in \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
+ }%
+ \expandafter\xdef\csname pgf@anchor@american #1 port@bin \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{#2}{#1}% defined above
+ }%
+ %}{}%
+ \repeatpgfmathloop%
+ }
+
+ \anchor{out}{\northeast\pgf@y=0pt}
+ \anchor{bout}{\right\pgf@y=0pt}
+
+
+ \anchor{left}{\left}% edges of component mius leads
+ \anchor{right}{\right}
+
+ \anchor{north east}{\northeast}% see \Compass macro
+ \anchor{south west}{\southwest}
+ \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfpoint{0cm}{\pgf@circ@res@up}}
+ \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{0cm}}
+ \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfpoint{0cm}{\pgf@circ@res@down}}
+ \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{0cm}}
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ #3
+ }
+}
+}
+%%% american and %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{and}{1}{
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@temp}}
+ \advance\pgf@circ@res@count by -1
+ \repeat
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
+ {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpatharc{-90}{90}{-2\pgf@circ@res@other and \pgf@circ@res@up}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ }
+%%% american nand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \pgfcircdeclarelogicport{nand}{1}{
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@temp}}
+ \advance\pgf@circ@res@count by -1
+ \repeat
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right} {0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right
+ \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpatharc{-90}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}
+ \pgfpathclose
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgf@circ@draworfill
+}
+%%% american nor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{nor}{2}{
+ \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/angle}}%
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/angle}}%
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
+ \advance\pgf@circ@res@other by -\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpathclose
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgf@circ@draworfill
+}
+%%% american or %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{or}{2}{
+ \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/angle}}%
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/angle}}%
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpathclose
+
+ \pgf@circ@draworfill
+}
+%%% american xor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{xor}{3}{
+ \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xor port/angle}{\pgf@circ@math@angle}%
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/distance}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
+ % this compensates for the effect of the line width on the gap between the arcs
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \advance\pgf@circ@res@other by -\pgf@circ@math@distance
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/angle}}%
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
+
+ \pgfusepath{draw}
+}
+%%% american xnor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{xnor}{3}{
+ \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xnor port/angle}{\pgf@circ@math@angle}%
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/distance}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
+ % this compensates for the effect of the line width on the gap between the arcs
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \advance\pgf@circ@res@other by -\pgf@circ@math@distance
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/angle}}%
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
+ \advance\pgf@circ@res@other by -\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpathclose
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@left
+ \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
+
+ \pgfusepath{draw}
+}
+
+%%% Original one-input ports
+
+\pgfdeclareshape{american not port}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgf@circ@draworfill
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ }
+}
+
+\pgfdeclareshape{invschmitt}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ %draw inner shape
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ }
+}
+
+\pgfdeclareshape{schmitt}{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.8\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ %draw inner shape
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ }
+}
+
+
+%%% start european logic ports, from John Kormylo
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+
+% #1 - name
+% #2 - text inside
+% #3 - number of inputs
+% #4 = is it a not?
+
+\long\def\pgfcircdeclareeurologicport#1#2#3#4{
+ \pgfdeclareshape{european #1 port}
+ {
+ \savedmacro\resize{% automatic
+ \pgf@circ@res@up = \pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@circ@Rlen
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgf@circ@res@down = -\pgf@circ@res@up
+ \pgf@circ@res@right = \pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@circ@Rlen
+ \pgf@circ@res@right = .5\pgf@circ@res@right
+ \pgf@circ@res@left = -\pgf@circ@res@right
+ }%
+ \savedmacro\inputs{% get number of inputs
+ \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
+ \ifnum\pgf@circ@res@count=0
+ \pgf@circ@res@count=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/inputs}\relax%
+ \fi
+ \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
+ \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
+ \def\inputs{\the\pgf@circ@res@count}%
+ }%
+ \savedanchor\step{% 1/2 gap at edges
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@circ@Rlen
+ \divide\pgf@circ@res@step by #3
+ \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
+ }%
+ \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}%
+ \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}%
+ \savedanchor\left{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
+ \savedanchor\right{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}%
+ \savedanchor\origin{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/origin}\pgf@circ@res@right}{0pt}}%
+
+ \anchor{center}{\origin}% for backwards compatibility
+ % the text anchor overlaps the logic symbol
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}%
+ % create input anchors
+ \ifnum#3=1\relax
+ \anchor{in}{\pgfpoint{\pgf@circ@res@left}{0pt}}% or \step
+ \else
+ \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@european #1 port\endcsname{%
+ \pgfmathloop%
+ \ifnum\pgfmathcounter>#3%
+ \else%
+ %\pgfutil@ifundefined{pgf@anchor@european #1 port@in \pgfmathcounter}{% redundant
+ \expandafter\xdef\csname pgf@anchor@european #1 port@in \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
+ }%
+ \expandafter\xdef\csname pgf@anchor@european #1 port@bin \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{4}{#1}% defined above
+ }%
+ %}{}%
+ \repeatpgfmathloop%
+ }
+ \fi
+ \anchor{out}{\northeast\pgf@y=0pt}
+ \anchor{bout}{\right\pgf@y=0pt}
+
+ \anchor{left}{\left}% edges of component minus leads
+ \anchor{right}{\right}
+
+ \anchor{north east}{\northeast}% see \Compass macro
+ \anchor{south west}{\southwest}
+ \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfpoint{0cm}{\pgf@circ@res@up}}
+ \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{0cm}}
+ \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfpoint{0cm}{\pgf@circ@res@down}}
+ \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{0cm}}
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \ifnum#3=1\relax
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}%
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
+ \else
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ %\pgf@circ@res@count = #3\relax% redundant
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
+ {\pgf@circ@res@temp}}
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{%
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
+ %
+ \edef\pgf@temp{not}
+ \edef\pgf@circ@temp{#4}
+ \ifx\pgf@temp\pgf@circ@temp % is a not
+ \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not height}\pgf@circ@res@up}}
+ \fi
+ %
+ \pgfusepath{draw}
+ %
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgftext{#2}
+ %
+ %
+ %
+ }
+ }
+}
+\pgfcircdeclareeurologicport{and}{\&}{\pgf@circ@res@count}{}
+\pgfcircdeclareeurologicport{or}{$\ge 1$}{\pgf@circ@res@count}{}
+\pgfcircdeclareeurologicport{xor}{$=1$}{\pgf@circ@res@count}{}
+\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
+\pgfcircdeclareeurologicport{nand}{\&}{\pgf@circ@res@count}{not}
+\pgfcircdeclareeurologicport{nor}{$\ge 1$}{\pgf@circ@res@count}{not}
+\pgfcircdeclareeurologicport{xnor}{$=1$}{\pgf@circ@res@count}{not}
+
+%% end european logic ports
+
+\long\def\pgfcircdeclaretransistor#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northeast{% upper right
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%center left
+ \pgf@y=0pt
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/width}\pgf@circ@Rlen
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@y=.7\pgf@y
+ \pgf@x= \pgf@circ@Rlen
+ \pgf@x=0.1\pgf@x
+ }
+ \anchor{pathstart}{ % south
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{pathend}{
+ \northeast
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \northeast
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ }
+ \anchor{north east}{
+ \northeast
+ }
+ \anchor{north west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{south east}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{base}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{G}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{gate}{
+ \northeast
+ \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{nobase}{
+ \left
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@x
+ }
+ \anchor{nogate}{
+ \left
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@x
+ }
+ \anchor{E}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{emitter}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{C}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{collector}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{D}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{drain}{
+ \northeast
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
+ }
+ #2
+ \backgroundpath{
+ \pgftransformationadjustments
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ %
+ \ifnum \pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction} > 0
+ \pgf@circuit@trans@ntypetrue
+ \else
+ \pgf@circuit@trans@ntypefalse
+ \fi
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \left
+ \pgf@circ@res@left = \pgf@x
+ %
+ #3
+ % BODY DIODE
+ \ifpgf@circuit@fet@bodydiode
+ \drawbodydiode{#1}
+ \fi
+ %
+ }
+}
+}
+
+\long\def\drawbodydiode#1{
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgftransformrotate{90}
+ \pgftransformscale{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode scale}}
+ \ifpgf@circuit@fulldiode
+ \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \else
+ \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \fi
+ \endpgfscope
+ % Draw stroke line
+ \ifpgf@circuit@strokediode
+ \pgfpathmoveto{\pgfpointanchor{pgf@bodydiode}{west}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
+ \pgfusepath{stroke}
+ \fi
+ %Draw upper connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope{}
+ %Draw lower connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+}
+
+\long\def\declarebpt#1{
+ \pgfcircdeclaretransistor{#1}{}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transistor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@ntype
+ \pgftransformlineattime{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/arrow pos}}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/arrow pos}}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \ifpgf@circuit@bpt@drawphoto
+ \pgfscope
+ \pgfsetarrowsstart{latexslim}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \else
+ \ifpgf@circuit@bpt@drawbase
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+ \fi
+ }
+}
+
+\declarebpt{npn}
+\declarebpt{pnp}
+
+\long\def\declareigbt#1{
+ \pgfcircdeclaretransistor{#1}{}
+ {
+ %draw upper connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ %draw thicker gate lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %draw lower connection
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transiytor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@ntype
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{.5}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ %draw gate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
+ \fi
+ \pgfusepath{draw}
+ }
+}
+
+\declareigbt{pigbt}
+\declareigbt{nigbt}
+\declareigbt{Lnigbt}
+\declareigbt{Lpigbt}
+
+
+\pgfcircdeclaretransistor{nmos}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/arrow pos}}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+}
+
+
+\pgfcircdeclaretransistor{pmos}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/arrow pos}}{%
+ \pgfpoint%
+ {\pgf@circ@res@right}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+
+
+ \pgfusepath{draw}
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+ \ifpgf@circuit@pmos@nocircle\else
+ \pgfpathcircle{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left - \pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
+ \ifpgf@circuit@pmos@emptycircle
+ \pgfsetfillcolor{white}
+ \fi
+ \pgfusepath{draw,fill}
+ \fi
+}
+
+%% HEMT FET Transistor
+\pgfcircdeclaretransistor{hemt}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{2\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+\long\def\drawfetcore#1{
+ \pgftransformationadjustments
+ %top connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
+ \ifpgf@circuit@trans@depletiontype
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \else
+
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.45}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.25}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down*0.25}}
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
+ \fi
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %Bulk connection line
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ %bottom connection
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ %draw thick gate line
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \ifpgf@circuit@trans@ntype
+ \else
+ \pgftransformrotate{180}
+ \fi
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+\endpgfscope
+
+% GATE CONNECTION
+\ifpgf@circuit@bpt@drawgate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
+ {-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+\fi
+
+}
+
+\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
+{\pgfcircdeclaretransistor{#1}{
+ \anchor{bulk}{\left\pgf@x=0pt}
+ \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
+ #2
+ }
+ {#3}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nfet}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pfet}
+}
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfete}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+\fi
+}
+
+
+
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
+\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfetebulk}
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+
+
+% N-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{nigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfete}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
+\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfetebulk}
+}
+
+
+% P-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{pigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+\pgfcircdeclaretransistor{njfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+\pgfcircdeclaretransistor{pjfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.4}{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfdeclaretransistorwrapperaddbulk{isfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ % DRAIN CONNECTION
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ % DRAIN
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % GATE, DEPLETION TYPE
+ \pgfscope %% added
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth} %% added
+ \pgfusepath{draw} %% added
+ \endpgfscope %% added
+
+ % BULK
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ % SOURCE
+ \pgfpathmoveto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+ % ARROW
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{.6}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfusepath{draw}
+
+ % Wavy lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+
+%% Black thyristor
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf@y=0cm
+ }
+}
+{\ctikzvalof{tripoles/thyristor/height 2}}
+{fullthyristor}{\ctikzvalof{tripoles/thyristor/height}}
+{\ctikzvalof{tripoles/thyristor/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty thyristor
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf@y=0cm
+ }
+}
+{\ctikzvalof{tripoles/thyristor/height 2}}
+{emptythyristor}{\ctikzvalof{tripoles/thyristor/height}}
+{\ctikzvalof{tripoles/thyristor/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfscope
+ % to allow filling, we need to draw explicitily the stroke here.
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \ifpgf@circuit@bipole@strokedsymbol
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty triac
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf@y=0cm
+ }
+}
+{\ctikzvalof{tripoles/triac/height}}
+{emptytriac}
+{\ctikzvalof{tripoles/triac/height}}
+{\ctikzvalof{tripoles/triac/width}}
+{
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgf@circ@draworfill
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Full triac
+
+\pgfcircdeclarebipole{
+ \anchor{gate}{
+ \northeast
+ }
+ \anchor{G}{
+ \northeast
+ }
+ \anchor{anode}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{cathode}{
+ \northeast
+ \pgf@y=0cm
+ }
+}
+{\ctikzvalof{tripoles/triac/height}}
+{fulltriac}
+{\ctikzvalof{tripoles/triac/height}}
+{\ctikzvalof{tripoles/triac/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+\pgfcircdeclarebipole{
+ \anchor{out 1}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{out 2}{
+ \northeast
+ \pgf@y=.8\pgf@y
+ }
+}
+{\ctikzvalof{tripoles/toggleswitch/height 2}}
+{toggleswitch}
+{\ctikzvalof{tripoles/toggleswitch/height}}
+{\ctikzvalof{tripoles/toggleswitch/width}}
+{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetdash{}{0cm}
+}
+
+%% operational and instrumentation amplifiers
+
+\pgfdeclareshape{op amp}
+{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+
+ }
+}
+
+%op amp shape as in european standard en 60617
+\pgfdeclareshape{en amp}
+{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {
+ \left
+ \pgf@x = \ctikzvalof{tripoles/en amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{up}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{down}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{tripoles/thickness}\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+
+ \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\hbox{\ctikzvalof{tripoles/en amp/font2}\ctikzvalof{tripoles/en amp/text}}}
+ % \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font2}$\mathstrut{\triangleright}\,\mathrm{A}$}
+ }
+}
+
+%%Transkonduktanzverstรคrker
+\pgfdeclareshape{gm amp}
+{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{\northwest
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
+ \pgfpoint{-.5\wd\pgfnodeparttextbox+.25\pgf@x}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ %Umrandung:
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}} %geรคndert startpunkt neu am ausgangsstrich
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}%vom Ausgang nach oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}%ecke links unten nach rechts unten
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{0pt}} %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+ }
+}
+
+%% instrumentation amplifier
+
+\pgfdeclareshape{inst amp}
+{
+ % when tikz calls the anchor it wants the relative position in the lengths
+ % \pgf@x \pgf@y
+ % \pgfpoint* functions set that variables
+ % anchors are visible outside and run on use
+ \anchor{center}{\pgfpointorigin}
+ % savedanchors are internals and run on node creation (not use)
+ % bounding-box top left
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{nw}{
+ \northwest
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{.6\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ % reference voltage input anchors.
+ \savedanchor\refv{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/refv pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{.6\pgf@circ@res@up}}
+ }
+ % we need both because they are normally drawn under the amp, and if you
+ % mirror it vertically you need them
+ \anchor{refv up}{
+ \refv
+ }
+ \anchor{refv down}{
+ \refv
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ % let's start drawing the component
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ %
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ % main component, normally in thicker lines
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ %first point (near output)
+ \pgfpathmoveto{\pgfpoint{1.4\pgf@circ@res@right}{0}}
+ %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
+ \pgfpathlineto{\pgfpoint{1.4\pgf@circ@res@right}{.6\pgf@circ@res@up}}
+ % and then to the input "front up", "down", to the output short side "down"
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{1.4\pgf@circ@res@right}{.6\pgf@circ@res@down}}
+ % ...and close
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ % input terminal -
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
+
+ % input terminal +
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@circ@res@down}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
+ % output lead
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}} %
+ %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+% instrumentation amplifier, with terminals for gain resistance between inputs
+\pgfdeclareshape{inst amp ra}
+{
+ \anchor{center}{\pgfpointorigin}
+ % bounding-box top left
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{nw}{
+ \northwest
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y\pgf@x=0pt\relax
+ }
+ \anchor{north}{
+ \northwest\pgf@x=0pt\relax
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
+ }
+ % inputs (+-)
+ \savedanchor\inOneFixed{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ % R ampli anchors. They are by default at 20% more than R-length distance
+ % you can change that with the `ra pos` key (use 0.5 for one-R).
+ \savedanchor\raOneFixed{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{ra up}{
+ \inOneFixed
+ }
+ \anchor{ra down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\raOne{%
+ \pgf@y=\pgf@circ@Rlen
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/ra pos}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{ra-}{
+ \raOne
+ }
+ \anchor{ra+}{
+ \raOne
+ \pgf@y=-\pgf@y
+ }
+ % power supplies
+ \savedanchor\up{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{.4\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ % reference voltage input anchors.
+ \savedanchor\refv{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/height}\pgf@circ@Rlen
+ \pgf@y=0.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/width}\pgf@circ@Rlen
+ \pgf@x=0.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/refv pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{.4\pgf@circ@res@up}}
+ }
+ % we need both because they are normally drawn under the amp, and if you
+ % mirror it vertically you need them
+ \anchor{refv up}{
+ \refv
+ }
+ \anchor{refv down}{
+ \refv
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ % drawing of the component
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ % main component, normally in thicker lines
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ %primer punto: la linea de salida (lado componente)
+ \pgfpathmoveto{\pgfpoint{1.4\pgf@circ@res@right}{0}}
+ %from the exit to the top (short side)... (note that the .4 must be copied in \up anchor
+ \pgfpathlineto{\pgfpoint{1.4\pgf@circ@res@right}{.4\pgf@circ@res@up}}
+ % and then to the input "front up", "down", to the output short side "down"
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{1.4\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ % ...and close
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ % ra terminal -
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+ % ra terminal +
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+ % input terminal -
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@circ@res@up}}
+ %
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
+
+ % input terminal +
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@circ@res@down}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
+ % output lead
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}} %
+ %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+%% Potentiometer
+\pgfcircdeclarebipole{
+ \anchor{wiper}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+ \anchor{W}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+}
+{\ctikzvalof{bipoles/potentiometer/height 2}}
+{potentiometer}{\ctikzvalof{bipoles/potentiometer/height}}
+{\ctikzvalof{bipoles/potentiometer/width}}
+{
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \divide \pgf@circ@res@step by 12
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+
+
+
+%% Generic tunable
+
+\pgfcircdeclarebipole{
+ \anchor{wiper}{
+ \northeast
+ \pgfpoint{0pt}{\pgf@y}
+ }
+}
+{\ctikzvalof{bipoles/generic potentiometer/height 2}}
+{genericpotentiometer}
+{\ctikzvalof{bipoles/generic potentiometer/height}}
+{\ctikzvalof{bipoles/generic potentiometer/width}}
+{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+\pgfdeclareshape{mixer}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{adder}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{oscillator}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \else
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@circ@Rlen
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y}
+ \anchor{north east}{ \northwest \pgf@x=0pt\relax}
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{text}{
+ \pgf@x=-2\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@Rlen{}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
+
+ % draw outer box
+ \ifpgf@circuit@boxed{}
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{circulator}
+{
+ \savedanchor\northwest{
+ \ifpgf@circuit@boxed
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed{}
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % inner arrow
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
+ \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+
+% Wilkinson divider
+\pgfdeclareshape{wilkinson}{
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{out2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ % draw inner resisitor - european or american style is recognised
+ {
+ \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgftransformrotate{90}
+
+ % calculate size of resistor
+ \ifpgf@circuit@europeanresistor
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{genericshape}{center}{}{pgf@generic}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{resistorshape}{center}{}{pgf@resistor}{\pgfusepath{fill}}
+ \fi
+ }
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+
+% electromechanical device (motor/generator)
+\pgfdeclareshape{elmech}
+{
+ \savedanchor\northwest{
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@Rlen
+ \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfscope % clip the bar: whole size minus the circle
+ \pgfpathrectanglecorners{\pgfpoint{-.5\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{black}
+ \pgfusepath{fill, draw}
+ \endpgfscope
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgfsetfillcolor{white}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfusepath{draw, fill}
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{magnetron}
+{
+ \savedanchor\northwest{
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{anode}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{cathode1}{
+ \northwest
+ \pgf@circ@res@step=\pgf@y
+ \pgfmathparse{cos(105)}
+ \pgf@x=\pgfmathresult\pgf@circ@res@step
+ \pgfmathparse{sin(105)}
+ \pgf@y=\pgfmathresult\pgf@circ@res@step
+ %\pgfpointorigin
+ %\pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
+ }
+ \anchor{cathode2}{
+ \northwest
+ \pgf@circ@res@step=\pgf@y
+ \pgfmathparse{cos(75)}
+ \pgf@x=\pgfmathresult\pgf@circ@res@step
+ \pgfmathparse{sin(75)}
+ \pgf@y=\pgfmathresult\pgf@circ@res@step
+ %\pgfpointorigin
+ %\pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgf@circ@res@step=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@Rlen
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfmathsetlength{\pgf@circ@res@other}{sin(15)*\pgf@circ@res@up}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ %create outer circle
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@right}
+ \pgf@circ@draworfill
+ %create chambers
+ \foreach \angle in {45,135,225,315}{
+ \pgfpathmoveto{ \pgfpointpolar{\angle}{0.6\pgf@circ@res@right}}
+ \pgfpathlineto{ \pgfpointpolar{\angle}{\pgf@circ@res@right}}
+ }
+ \pgfsetroundcap
+ \pgfusepath{draw}
+ \pgfscope
+ %draw connection from outside
+ %anode
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ %cathodes
+ \pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ %create cathode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.15\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ %create anode
+ \pgfpathmoveto{\pgfpoint{0.3\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% Electronic tubes, submitted by J. op den Brouw
+
+% Draw tube outline
+\def\pgf@circ@tubes@drawtube{%
+ \ifdim\ctikzvalof{tubes/width}pt>\ctikzvalof{tubes/height}pt\relax
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfutil@tempdima=\pgf@circ@res@right
+ \advance\pgfutil@tempdima by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgfutil@tempdima}{\pgf@circ@res@up}}
+ \pgfpatharc{90}{-90}{\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{-\pgfutil@tempdima}{-\pgf@circ@res@up}}
+ \pgfpatharc{270}{90}{\pgf@circ@res@up}
+ \else
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{0pt}}
+ \pgfutil@tempdima=\pgf@circ@res@up
+ \advance\pgfutil@tempdima by -\pgf@circ@res@right
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
+ \pgfpatharc{180}{0}{\pgf@circ@res@right}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfutil@tempdima}}
+ \pgfpatharc{180}{0}{-\pgf@circ@res@right}
+ \fi
+ \pgfpathclose
+}
+
+%% The diode (tube), triode, tetrode and pentode only differ in the
+%% number of grids. So we construct a generic declare function in
+%% which we can put code for the grid anchors and grid drawing code
+%% \pgfcircdeclaretube{tube name}{grid anchors}{grid drawing code}
+\long\def\pgfcircdeclaretube#1#2#3{%
+ \pgfdeclareshape{#1}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@Rlen
+ \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@Rlen
+ % x and y should be half the Rlen
+ \pgf@y=\pgf@circ@res@up
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgf@circ@res@right
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{north} {%
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{east}{%
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{south}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{west}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{north west}{%
+ \northwest
+ }
+ \anchor{north east}{%
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{anode} {%
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{cathode}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
+ }
+ \anchor{cathode 1}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
+ }
+ \anchor{cathode 2}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=-\ctikzvalof{tubes/cathode width}\pgf@x
+ }
+ \anchor{filament 1}{%
+ \northwest
+ \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgf@x=\pgfmathresult\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{filament 2}{%
+ \northwest
+ \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgf@x=-\pgfmathresult\pgf@x
+ \pgf@y=-\pgf@y
+ }
+
+ % Extra anchors
+ #2
+
+ \backgroundpath{
+ \pgfscope
+ % Line width for tripoles
+ \pgfsetlinewidth{\ctikzvalof{tripoles/thickness}\pgflinewidth}
+
+ % Setup to draw tube
+ \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@Rlen
+ \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@Rlen
+ \pgf@circ@res@up=\ctikzvalof{tubes/tube radius}\pgf@circ@res@up
+ \pgf@circ@res@right=\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+
+ % Tube fill color (if any)
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \else
+ \pgfscope
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgf@circ@tubes@drawtube
+ \pgfusepath{fill}
+ \endpgfscope
+ \fi
+
+ % Tube outline
+ \pgf@circ@tubes@drawtube
+
+ % Setup to draw grid, filament, anode and cathode
+ \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@Rlen
+ \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@Rlen
+ \pgf@circ@res@up=0.5\pgf@circ@res@up
+ \pgf@circ@res@right=0.5\pgf@circ@res@right
+
+ % Grid drawing
+ #3
+
+ % Filament (is not drawn by default)
+ \ifpgf@circuit@tubes@filament
+ \pgf@circ@res@temp=-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up
+ \advance\pgf@circ@res@temp by -\ctikzvalof{tubes/filament distance}\pgf@circ@res@up
+ \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgf@xa=\pgfmathresult\pgf@circ@res@right
+ \pgfmathparse{\ctikzvalof{tubes/tube radius}+\ctikzvalof{tubes/tube radius}*cos(\ctikzvalof{tubes/filament angle}}
+ \pgf@ya=\pgfmathresult\pgf@circ@res@up
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@ya}}
+ \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@ya}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@circ@res@up}}
+ \pgf@circuit@tubes@filamentfalse
+ \fi
+
+ % Anode (or plate)
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}} % north
+ \pgfpathlineto{\pgfpoint{0pt}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
+
+ % Cathode
+ \ifpgf@circuit@tubes@nocathode
+ \pgf@circuit@tubes@nocathodefalse
+ \else
+ \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
+ \ifpgf@circuit@tubes@fullcathode
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
+ \pgf@circuit@tubes@fullcathodefalse
+ \else
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-\ctikzvalof{tubes/cathode right extend}\pgf@circ@res@up}}
+ \fi
+ \fi
+
+ % Draw the background
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+ }
+}
+
+\pgfcircdeclaretube{diodetube}{}{} % shape diode already exists
+
+\pgfcircdeclaretube{triode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+ \anchor{control} {%
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+}
+{
+ % Grid protrusion
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+}
+
+\pgfcircdeclaretube{tetrode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{screen} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+}
+{
+ % Grid x/y points
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
+ \pgfutil@tempdimb=-\pgfutil@tempdima
+ \pgfutil@tempdima=0.5\pgfutil@tempdima
+ \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \pgfutil@tempdimb=0.5\pgfutil@tempdimb
+ \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ % Grid protrusion
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+}
+
+\pgfcircdeclaretube{pentode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{screen} {%
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+ \anchor{suppressor} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+}
+{
+ % Grid x/y points
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
+ \pgfutil@tempdimb=-\pgfutil@tempdima
+ \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ % Grid protrusion
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+}
+
+\pgfcircdeclaretube{pentode suppressor to cathode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{screen} {%
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+}
+{
+ % Grid x/y points
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
+ \pgfutil@tempdimb=-\pgfutil@tempdima
+ \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ % Grid protrusion
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \ifnum\pgf@circ@count@a>1\relax
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
+ \fi
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+ % Grid: connection from suppressor to cathode
+ \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima-2*\ctikzvalof{tubes/grid separation}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
+
+}
+
+%%%---------- close: tex/pgfcirctripoles
+%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
+%%%---------- open: tex/pgfcircquadpoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Quadripoles
+
+\long\def\pgfcircdeclarequadpole#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedmacro{\stretto}{\def\stretto{\ctikzvalof{quadpoles/#1/inner}}}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=.5\pgf@circ@Rlen
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
+ }
+ \anchor{A2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{A1}{
+ \northwest
+ }
+ \anchor{B2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ %% notice for the dot anchors: I use the cute inductors as reference
+ %% size; if you change one you have to change all of them.
+ \anchor{inner dot A1}{
+ \northwest
+ \pgfmathsetlength\pgf@x{\stretto*\pgf@x +
+ \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
+ \pgfmathsetlength\pgf@y{0.5*\pgf@circ@Rlen}
+ }
+ \anchor{outer dot A1}{
+ \northwest
+ \pgfmathsetlength\pgf@x{\stretto*\pgf@x -
+ \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
+ \pgfmathsetlength\pgf@y{0.5*\pgf@circ@Rlen}
+ }
+ \anchor{inner dot A2}{
+ \northwest
+ \pgfmathsetlength\pgf@x{\stretto*\pgf@x +
+ \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
+ \pgfmathsetlength\pgf@y{-0.5*\pgf@circ@Rlen}
+ }
+ \anchor{outer dot A2}{
+ \northwest
+ \pgfmathsetlength\pgf@x{\stretto*\pgf@x -
+ \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
+ \pgfmathsetlength\pgf@y{-0.5*\pgf@circ@Rlen}
+ }
+ \anchor{inner dot B1}{
+ \northwest
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@x -
+ \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
+ \pgfmathsetlength\pgf@y{0.5*\pgf@circ@Rlen}
+ }
+ \anchor{outer dot B1}{
+ \northwest
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@x +
+ \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
+ \pgfmathsetlength\pgf@y{0.5*\pgf@circ@Rlen}
+ }
+ \anchor{inner dot B2}{
+ \northwest
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@x -
+ \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
+ \pgfmathsetlength\pgf@y{-0.5*\pgf@circ@Rlen}
+ }
+ \anchor{outer dot B2}{
+ \northwest
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@x +
+ \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
+ \pgfmathsetlength\pgf@y{-0.5*\pgf@circ@Rlen}
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{base}{
+ \northwest
+ \pgf@x=0pt
+ }
+ #3
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ #2
+ }
+ }
+}
+
+
+\def\pgf@circ@drawtransformerbasicanchor{
+ \pgfkeysvalueof{/tikz/circuitikz/quadpoles/trans/height}
+ \anchor{AA2}{
+ \northwest
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{AA1}{
+ \northwest
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
+ }
+}
+
+\def\pgf@circ@drawtransformerbasicbody{
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@down}%
+ }
+
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+
+ \endpgfscope
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@up}%
+ }
+
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@inductor1}{b}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf@inductor1}{a}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@inductor2}{a}}
+
+ \pgfpathmoveto{\pgfpointanchor{pgf@inductor2}{b}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+}
+
+
+\pgfcircdeclarequadpole{transformer}{
+ \pgf@circ@drawtransformerbasicbody
+}{\pgf@circ@drawtransformerbasicanchor}
+
+\pgfcircdeclarequadpole{transformer core}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgfmoveto{\pgfpoint%
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint
+ {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
+ \pgfusepath{draw}
+}{\pgf@circ@drawtransformerbasicanchor}
+
+
+\pgfcircdeclarequadpole{gyrator}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/quadpoles/thickness}\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{.7*\stretto\pgf@circ@res@down}}
+ \pgfpatharc{90}{270}{.7*\stretto\pgf@circ@res@down}
+
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{.7*\stretto\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{.7*\stretto\pgf@circ@res@down}
+ \pgfusepath{draw}
+
+}{}
+
+%% four-port
+% defines a general outer box for four-ports
+% TikZ usage:
+% \draw (0,0) node[coupler](coup){\SI{-3}{dB}}
+% (coup.port1) to[short,-o] ++(-1,0)
+%
+
+\long\def\pgfcircdeclarefourport#1#2{
+ \pgfdeclareshape{#1}{
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=.5\pgf@circ@Rlen
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{port1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{port4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % draw inner stuff
+ #2
+
+ % draw inner text
+ \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+ }
+ }
+}
+
+% four-port
+\pgfcircdeclarefourport{fourport}{}
+
+
+% straight coupler
+\pgfcircdeclarefourport{coupler}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+}
+
+% "bended" coupler
+\pgfcircdeclarefourport{coupler2}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% contrib Kristofer M. Monisit
+
+\pgfdeclareshape{fd op amp}
+{
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\outline{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y\pgf@x=0pt\relax
+ }
+ \anchor{north}{
+ \northwest\pgf@x=0pt\relax
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOneFixed{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out up}{
+ \northwest
+ \pgf@y=.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{out down}{
+ \northwest
+ \pgf@y=-.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{out +}{
+ \outline
+ \pgf@y=.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{out -}{
+ \outline
+ \pgf@y=-.5\pgf@y
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-.7\pgf@x
+ }
+
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-.7\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-.7\pgf@x \pgf@y=-\pgf@y }
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ % Triangle
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/quadpoles/thickness}\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
+
+ % Negative output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@oplusup$-$\else$+$\fi}
+
+ % Positive output terminal
+ \pgfpathmoveto{\pgfpoint
+ {0.7\pgf@circ@res@right}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@oplusup$+$\else$-$\fi}
+
+ \pgfsetrectcap
+ % Draw them all!
+ \pgfusepath{draw}
+
+ }
+}
+
+
+%% instrumentation amplifier diff output
+
+\pgfdeclareshape{fd inst amp}
+{
+ % when tikz calls the anchor it wants the relative position in the lengths
+ % \pgf@x \pgf@y
+ % \pgfpoint* functions set that variables
+ % anchors are visible outside and run on use
+ \anchor{center}{\pgfpointorigin}
+ % savedanchors are internals and run on node creation (not use)
+ % bounding-box top left
+ \savedanchor\northwest{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{nw}{
+ \northwest
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y\pgf@x=0pt\relax
+ }
+ \anchor{north}{
+ \northwest\pgf@x=0pt\relax
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/up pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{.6\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ % reference voltage input anchors.
+ \savedanchor\refv{%
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/width}\pgf@circ@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/refv pos}}{
+ \pgfpoint{
+ \pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{.7\pgf@circ@res@right}{.6\pgf@circ@res@up}}
+ }
+ % we need both because they are normally drawn under the amp, and if you
+ % mirror it vertically you need them
+ \anchor{refv up}{
+ \refv
+ }
+ \anchor{refv down}{
+ \refv
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\outport{
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/width}\pgf@circ@Rlen
+ \pgf@x=-.5\pgf@x
+ \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
+ }
+ \anchor{out}{
+ \outport
+ \pgf@y=0pt
+ }
+ \anchor{out +}{
+ \outport
+ }
+ \anchor{out -}{
+ \outport
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\outportfixed{
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/height}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/width}\pgf@circ@Rlen
+ \pgf@x=-.5\pgf@x
+ }
+ \anchor{out up}{
+ \outportfixed
+ }
+ \anchor{out down}{
+ \outportfixed
+ \pgf@y=-\pgf@y
+ }
+ %
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ % let's start drawing the component
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ %
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ % main component, normally in thicker lines
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ %first point (near output)
+ \pgfpathmoveto{\pgfpoint{1.4\pgf@circ@res@right}{0}}
+ %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
+ \pgfpathlineto{\pgfpoint{1.4\pgf@circ@res@right}{.6\pgf@circ@res@up}}
+ % and then to the input "front up", "down", to the output short side "down"
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{1.4\pgf@circ@res@right}{.6\pgf@circ@res@down}}
+ % ...and close
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ % input terminal up
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
+
+ % input terminal down
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@down}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
+ % output leads down and up
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@down}} %
+ \pgftext[right, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$-\;$\else$+\;$\fi}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@up}} %
+ \pgftext[right, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$+\;$\else$-\;$\fi}
+ %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+%%%---------- close: tex/pgfcircquadpoles
+%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
+%%%---------- open: tex/pgfcircmultipoles.tex
+% Copyright 2007-2009 by Massimo Redaelli
+% Copyright 2019 by Romano Giannetti
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Multipoles
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% counters for pin accounting...
+\def\pgf@circ@dip@pin@shift{0.5}
+\def\pgf@circ@qfp@pin@shift{0.25}
+
+% derived from https://tex.stackexchange.com/a/146753/38080
+% original author Mark Wibrow
+% Thanks also to John Kormylo https://tex.stackexchange.com/a/372996/38080
+% a lot of thanks to @marmot for the un-rotation hint
+% https://tex.stackexchange.com/a/473571/38080
+
+% DIP (dual in line package) chips
+
+\pgfdeclareshape{dipchip}{
+ \savedmacro\numpins{%
+ \pgf@circ@count@a=\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/num pins}%
+ \def\numpins{\the\pgf@circ@count@a}
+ }
+ \savedanchor\centerpoint{%
+ \pgf@x=-.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \savedanchor\origin{\pgfpoint{0pt}{0pt}}
+ \anchor{center}{\origin}
+ \anchor{text}{\centerpoint}% to adjust text
+ \saveddimen\height{%
+ \pgfmathsetlength\pgf@x{((\numpins)
+ *\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/pin spacing})*\pgf@circ@Rlen/2}%
+ }%
+ \saveddimen{\chipspacing}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/pin spacing}}}
+ \saveddimen{\width}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/width}}}
+ \saveddimen{\extshift}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins width}}}
+ % standard anchors
+ \savedanchor\northwest{%
+ \pgfmathsetlength\pgf@y{0.5*((\numpins)
+ *\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/pin spacing})*\pgf@circ@Rlen/2}%
+ \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@Rlen*\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/width}}
+ }
+ \anchor{dot}{\northwest
+ \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
+ \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ % start drawing
+ \backgroundpath{%
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/pin spacing}\pgf@circ@Rlen
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins width}\pgf@circ@Rlen
+ \pgfscope% (for the line width)
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/multipoles/thickness}\pgflinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
+ \pgf@circ@draworfill
+ %% upside mark
+ \ifpgf@circuit@chip@topmark
+ \pgfpathmoveto{\pgfpoint{0.2*\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpatharc{0}{180}{0.2*\pgf@circ@res@left}
+ \fi
+ \pgfusepath{stroke}%
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ % Adding the pin number
+ \ifpgf@circuit@chip@shownumbers
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
+ \ifpgf@circuit@chip@straightnumbers
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
+ \else
+ \pgfmathsetmacro{\rot}{0}
+ \pgfmathsetmacro{\quadrant}{0}
+ \fi
+ \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
+ \def\mytext{\pgfkeysvalueof{/tikz/circuitikz/multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \ifcase\quadrant % rotation 0
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \fi
+ \endpgfscope
+ \ifdim\pgf@circ@res@other>0pt
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \edef\padfrac{\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pad fraction}}
+ \ifnum\padfrac>0
+ \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
+ % left side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % right side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \else
+ % left side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % right side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{stroke}
+ \endpgfscope
+ \fi
+ }%
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@dipchip{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\numpins\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@dipchip@pin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@dipchip@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+ }
+
+% QFP (quad flat package) chips
+
+\pgfdeclareshape{qfpchip}{
+ \savedmacro\numpins{%
+ \pgf@circ@count@a=\pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/num pins}%
+ \def\numpins{\the\pgf@circ@count@a}
+ }
+ \savedanchor\centerpoint{%
+ \pgf@x=-.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \savedanchor\origin{\pgfpoint{0pt}{0pt}}
+ \anchor{center}{\origin}
+ \anchor{text}{\centerpoint}% to adjust text
+ \saveddimen\height{%
+ \pgfmathsetlength\pgf@x{((\numpins+2)
+ *\pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/pin spacing})*\pgf@circ@Rlen/4}%
+ }%
+ \saveddimen\width{%
+ \pgfmathsetlength\pgf@x{((\numpins+2)
+ *\pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/pin spacing})*\pgf@circ@Rlen/4}%
+ }%
+ \saveddimen{\chipspacing}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/pin spacing}}}
+ \saveddimen{\extshift}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins width}}}
+ % standard anchors
+ \savedanchor\northwest{%
+ \pgfmathsetlength\pgf@y{0.5*((\numpins+2)
+ *\pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/pin spacing})*\pgf@circ@Rlen/4}%
+ \pgf@x=-\pgf@y
+ }
+ \anchor{dot}{\northwest
+ \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
+ \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ % start drawing
+ \backgroundpath{%
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/pin spacing}\pgf@circ@Rlen
+ \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins width}\pgf@circ@Rlen
+ \pgfscope% (for the line width)
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/multipoles/thickness}\pgflinewidth}
+ %% upside mark
+ \ifpgf@circuit@chip@topmark
+ \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2-\pgf@circ@res@step/2}}
+ \pgfpathlineto{\pgfpoint{-\width/2+\pgf@circ@res@step/2}{\height/2}}
+ \else
+ \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2}}
+ \fi
+ %% rest of the shape
+ \pgfpathlineto{\pgfpoint{\width/2}{\height/2}}
+ \pgfpathlineto{\pgfpoint{\width/2}{-\height/2}}
+ \pgfpathlineto{\pgfpoint{-\width/2}{-\height/2}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ % Adding the pin number
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \ifpgf@circuit@chip@shownumbers
+ \pgf@circ@count@a=\numpins%
+ \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
+ % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
+ \ifpgf@circuit@chip@straightnumbers
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
+ \else
+ \pgfmathsetmacro{\rot}{0}
+ \pgfmathsetmacro{\quadrant}{0}
+ \fi
+ \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
+ \def\mytext{\pgfkeysvalueof{/tikz/circuitikz/multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \ifcase\quadrant % rotation 0
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \fi
+ \endpgfscope
+ \ifdim\pgf@circ@res@other>0pt
+ \pgfscope
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins%
+ \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \edef\padfrac{\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pad fraction}}
+ \ifnum\padfrac>0
+ \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
+ % left side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % bottom side pads
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
+ % right side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % top side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \else
+ % left side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % bottom side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ % right side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % top side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{stroke}
+ \endpgfscope
+ \fi
+ }%
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@qfpchip{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\numpins%
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \expandafter\xdef\csname pgf@anchor@qfpchip@pin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@qfpchip@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop%
+ }%
+ }
+
+%% anchors for DIP
+\def\pgf@circ@dippinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \c@pgf@countc=\numpins\relax
+ \divide\c@pgf@countc by 2
+ \ifnum #1 > \the\c@pgf@countc
+ % right side
+ \pgfpoint{\width/2+#2*\extshift}{-\height/2+(\pgf@circ@dip@pin@shift-\c@pgf@countc+#1-1)*\chipspacing}
+ \else
+ \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@dip@pin@shift-#1)*\chipspacing}
+\fi
+}
+
+%% anchors for QFP
+\def\pgf@circ@qfppinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \c@pgf@countc=\numpins\relax
+ \divide\c@pgf@countc by 4
+ \ifnum #1 > \the\c@pgf@countc
+ \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 2
+ \ifnum #1 > \the\c@pgf@countb
+ \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 3
+ \ifnum #1 > \the\c@pgf@countb
+ % 3*npins/4 < pin, top side
+ \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift+\c@pgf@countb-#1)*\chipspacing}{\height/2+#2*\extshift}%
+ \else
+ % 2*npins/4 < pin <= 3*npins/4, right side
+ \pgfpoint{\width/2+#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}%
+ \fi
+ \else
+ % npins/4 < pin <= 2*npins/4, bottom side
+ \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}{-\height/2-#2*\extshift}%
+ \fi
+ \else
+ % <= npins/4, left side
+ \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-#1)*\chipspacing}%
+ \fi
+}
+
+
+%% Rotary Switch
+
+\pgfdeclareshape{rotaryswitch}
+{
+ \savedanchor\northeast{%
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ % the magic number is 0.25/cos(35)
+ % try to recalculate it for the actual switch
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@Rlen
+ \pgf@circ@res@temp=.3052\pgf@circ@res@temp
+ \edef\a{\ctikzvalof{multipoles/rotary/angle}}
+ \edef\r{\ctikzvalof{nodes width}}
+ \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@x}{\r*\pgf@circ@Rlen + \pgf@circ@res@temp}
+ }
+ \savedanchor\northwest{%
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ % the magic number is 0.25/cos(35)
+ % try to recalculate it for the actual switch
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@Rlen
+ \pgf@circ@res@temp=.3052\pgf@circ@res@temp
+ \edef\a{\ctikzvalof{multipoles/rotary/angle}}
+ \edef\r{\ctikzvalof{nodes width}}
+ \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@x}{-\r*\pgf@circ@Rlen - (\a<90 ? 1 : 1-2*cos(\a))*\pgf@circ@res@temp}
+ }
+ \savedanchor\central{%
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ % the magic number is 0.25/cos(35)
+ % try to recalculate it for the actual switch
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@Rlen
+ \pgf@circ@res@temp=.3052\pgf@circ@res@temp
+ \edef\a{\ctikzvalof{multipoles/rotary/angle}}
+ \edef\r{\ctikzvalof{nodes width}}
+ \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@x}{(\a<90 ? 0 : cos(\a))*\pgf@circ@res@temp}
+ }
+ % external square limits
+ \savedanchor\extnorthwest{%
+ \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@Rlen
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ \pgf@x=.3052\pgf@x % the magic number is 0.25/cos(35)
+ \pgf@x=2.5\pgf@x % external square size
+ \pgf@y=-\pgf@x %square thing when angle=180?
+ }
+ \saveddimen{\width}{\pgfmathsetlength\pgf@x{0.3052*\pgf@circ@Rlen*\ctikzvalof{tripoles/spdt/width}}}
+ % radius of the connector
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % shape type
+ \savedmacro{\cshape}{\def\cshape{\ctikzvalof{multipoles/rotary/shape}}}
+ \savedmacro{\channels}{\def\channels{\ctikzvalof{multipoles/rotary/channels}}}
+ \savedmacro{\angle}{\def\angle{\ctikzvalof{multipoles/rotary/angle}}}
+ \savedmacro{\wiper}{\def\wiper{\ctikzvalof{multipoles/rotary/wiper}}}
+ \savedmacro{\stepa}{\pgfmathsetmacro{\stepa}{2*\ctikzvalof{multipoles/rotary/angle}/(\ctikzvalof{multipoles/rotary/channels}-1)}}
+ % mid of the lever, to stack switches
+ %\anchor{mid}{\midlever}
+ \anchor{mid}{\northwest
+ \pgf@circ@res@temp=-\pgf@x
+ \pgfmathsetlength{\pgf@x}{\pgf@circ@res@temp*(-1+cos(\wiper))}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp*sin(\wiper)}
+ }
+ % center anchors
+ \anchor{cin}{ \northwest \pgf@y=0pt\advance\pgf@x by \radius}
+ % horizontal angles
+ \anchor{in}{ \northwest \pgf@y=0pt}
+ \anchor{ain}{ \northwest \pgf@y=0pt}
+
+ \anchor{center}{ \central \pgf@y=0pt }
+ \anchor{east}{ \northeast \pgf@y=0pt }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \central \pgf@y=-\pgf@y }
+ \anchor{north}{ \central }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northeast }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northeast \pgf@y=-\pgf@y }
+
+ \anchor{ext center}{ \pgf@y=0pt \pgf@x=0pt \advance\pgf@x by -\width}
+ \anchor{ext east}{ \extnorthwest \pgf@y=0pt \pgf@x=-\pgf@x \advance\pgf@x by -\width}
+ \anchor{ext west}{ \extnorthwest \pgf@y=0pt \advance\pgf@x by -\width}
+ \anchor{ext south}{ \extnorthwest \pgf@x=0pt \pgf@y=-\pgf@y \advance\pgf@x by -\width}
+ \anchor{ext north}{ \extnorthwest \pgf@x=0pt \advance\pgf@x by -\width}
+ \anchor{ext south west}{ \extnorthwest \pgf@y=-\pgf@y \advance\pgf@x by -\width}
+ \anchor{ext north east}{ \extnorthwest \pgf@x=-\pgf@x \advance\pgf@x by -\width}
+ \anchor{ext north west}{ \extnorthwest \advance\pgf@x by -\width}
+ \anchor{ext south east}{ \extnorthwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y \advance\pgf@x by -\width}
+
+ \backgroundpath{
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgf@circ@res@right = \width
+ \pgf@circ@res@left = -\width
+
+ \pgfscope %wiper
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \pgf@circ@res@temp=\radius\relax
+ \pgf@circ@res@temp=\ctikzvalof{multipoles/rotary/thickness}\pgf@circ@res@temp
+ \pgfsetlinewidth{2\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\wiper}{2\pgf@circ@res@right}}}
+ \pgfsetroundcap\pgfusepath{draw}
+ \endpgfscope
+
+ \ifpgf@circ@rotaryarrow
+ \pgfscope % arrow
+ \ifpgf@circ@rotaryarrow@ccw\pgfsetarrowsstart{latexslim}\fi
+ \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % center of cin node
+ \pgftransformrotate{\wiper}
+ \pgfpathmoveto{\pgfpointpolar{50}{1.0\pgf@circ@res@right}}
+ \pgfpatharc{50}{-50}{1.0\pgf@circ@res@right}
+ \ifpgf@circ@rotaryarrow@cw\pgfsetarrowsend{latexslim}\fi
+ \pgfusepath{draw}
+ \endpgfscope
+ \fi
+
+ % \typeout{CHANNELS\space\channels\space ANGLE\space\angle STEPA\space\stepa}
+ \pgf@circ@count@a=\channels\relax
+ \pgfmathsetmacro{\currenta}{-\angle}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % \typeout{LOOPIN\space\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
+ \pgfscope
+ \pgftransformshift{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\currenta}{2\pgf@circ@res@right}}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out \the\pgf@circ@count@a}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfmathsetmacro{\currenta}{\currenta+\stepa}
+ % \typeout{LOOPOUT\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+
+ \pgfscope % input
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
+ \endpgfscope
+ }
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@rotaryswitch{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\channels\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@out\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{1}{0}%
+ }
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@cout\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{0}%
+ }
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@aout\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@sqout\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotarysqanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+}
+
+\def\pgf@circ@rotaryanchor#1#2#3{% #1: numero del pin; #2: 1 - x pos, 0 - center; #3 0: inner, 1 outer
+ \pgf@circ@res@temp=\width
+ \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
+ \pgfmathsetlength{\pgf@x}{2*(\pgf@circ@res@temp+#3*\radius/2)*cos(\myangle))+#2*\radius}
+ \pgfmathsetlength{\pgf@y}{2*(\pgf@circ@res@temp+#3*\radius/2)*sin(\myangle)}
+ \advance\pgf@x by -\pgf@circ@res@temp
+}
+
+\def\pgf@circ@rotarysqanchor#1{% external square anchors
+ \pgf@circ@res@temp=\width
+ \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
+ \pgfpointborderrectangle{\pgfpointpolar{\myangle}{1pt}}{\pgfpoint{2.5\pgf@circ@res@temp}{2.5\pgf@circ@res@temp}}
+ \advance\pgf@x by -\pgf@circ@res@temp
+}
+
+% Seven segments displays
+
+\pgfdeclareshape{bare7seg}{
+ \savedmacro{\dotstatus}{\edef\dotstatus{\pgf@circ@sevenseg@dotstate}}
+ \saveddimen{\dotspace}{% the dot is on the right, and occupy the same as the thickness
+ \ifpgf@circ@sevenseg@dot
+ \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/thickness}}
+ \else
+ \pgf@x=0pt
+ \fi
+ }
+ % The object extension is more or less (-width/2,-width) to (width/2,width)
+ % and adjusted for line thickness (both sides) and eventually the dot
+ \saveddimen{\width}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/width}*\pgf@circ@Rlen}}
+ \saveddimen{\gap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/segment sep}}}
+ \saveddimen{\boxgap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/box sep}}}
+ \savedanchor{\southwest}{% both negative
+ \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{seven seg/width}*\pgf@circ@Rlen
+ -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
+ \pgfmathsetlength{\pgf@y}{-\ctikzvalof{seven seg/width}*\pgf@circ@Rlen
+ -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
+ }
+ \savedanchor{\northeast}{% both positive
+ \ifpgf@circ@sevenseg@dot
+ \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{seven seg/thickness}}
+ \else
+ \pgf@circ@res@other=0pt
+ \fi
+ \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@Rlen
+ +0.5*\ctikzvalof{seven seg/thickness}+\pgf@circ@res@other+\ctikzvalof{seven seg/box sep}}
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@Rlen
+ +0.5*\ctikzvalof{seven seg/thickness}+\ctikzvalof{seven seg/box sep}}
+ }
+ \savedanchor{\topright}{% anchor without the box sep and the thickness
+ \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@Rlen}
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{north west}{\southwest\pgf@y=-\pgf@y}
+ \anchor{north east}{\northeast}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\southwest}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0pt}
+ \anchor{south}{\southwest\pgf@x=0pt}
+ \anchor{west}{\southwest\pgf@y=0pt}
+ \anchor{a}{\topright\pgf@x=0pt}
+ \anchor{b}{\topright\pgf@y=0.5\pgf@y}
+ \anchor{c}{\topright\pgf@y=-0.5\pgf@y}
+ \anchor{d}{\topright\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{e}{\topright\pgf@x=-\pgf@x\pgf@y=-0.5\pgf@y}
+ \anchor{f}{\topright\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{g}{\pgfpointorigin}
+ \anchor{dot}{\topright\pgf@y=-\pgf@y\advance\pgf@x by \dotspace}
+ \behindbackgroundpath{%
+ \southwest % I do not want the dot here, it will stick out
+ \pgf@circ@res@up = -\pgf@y
+ \pgf@circ@res@down = \pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \pgf@circ@res@left = -\pgf@x
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{multipoles/thickness}\pgflinewidth}
+ \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
+ \pgfpathrectanglecorners%
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@left+\dotspace}{\pgf@circ@res@up}}
+ \ifpgf@circ@sevenseg@box
+ \pgf@circ@draworfill
+ \else
+ \pgf@circ@maybefill
+ \fi
+ \endpgfscope
+ \edef\bits{\ctikzvalof{seven seg/bits}}
+ \pgfscope
+ \pfg@circ@sseg@drawbits{\bits}
+ \endpgfscope
+ \pgfscope
+ \ifpgf@circ@sevenseg@dot
+ \pgf@circ@sseg@drawdots
+ \fi
+ \endpgfscope
+ }
+}
+
+\def\pgf@circ@sseg@splitbits#1#2#3#4#5#6#7\relax{%split the seven bits
+ \edef\@@a{#1}\edef\@@b{#2}\edef\@@c{#3}\edef\@@d{#4}\edef\@@e{#5}\edef\@@f{#6}\edef\@@g{#7}%
+}
+\def\pgf@circ@sseg@drawone#1#2#3#4#5{% #1 on off the x1, y1, x2 , y2
+ \ifnum #1 > 0\relax
+ \pgfsetcolor{\ctikzvalof{seven seg/color on}}
+ \else
+ \pgfsetcolor{\ctikzvalof{seven seg/color off}}
+ \fi
+ \pgfpathmoveto{\pgfpoint{#2}{#3}}
+ \pgfpathlineto{\pgfpoint{#4}{#5}}
+ \pgfusepath{draw}
+}
+\def\pfg@circ@sseg@drawbits#1{% #1 must be 7 bits
+ \expandafter\pgf@circ@sseg@splitbits#1\relax% a bit of magic...
+ \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
+ \pgfsetlinewidth{\ctikzvalof{seven seg/thickness}}
+ % \pgfsetroundcap
+ \pgfsetarrowsstart{Triangle Cap[]}
+ \pgfsetarrowsend{Triangle Cap[]}
+ % segments
+ \pgf@circ@sseg@drawone{\@@a}{-\width/2+\gap}{\width}{\width/2-\gap}{\width}
+ \pgf@circ@sseg@drawone{\@@b}{\width/2}{\width-\gap}{\width/2}{0pt+\gap}
+ \pgf@circ@sseg@drawone{\@@c}{\width/2}{0pt-\gap}{\width/2}{-\width+\gap}
+ \pgf@circ@sseg@drawone{\@@d}{\width/2-\gap}{-\width}{-\width/2+\gap}{-\width}
+ \pgf@circ@sseg@drawone{\@@e}{-\width/2}{-\width+\gap}{-\width/2}{0pt-\gap}
+ \pgf@circ@sseg@drawone{\@@f}{-\width/2}{0pt+\gap}{-\width/2}{\width-\gap}
+ \pgf@circ@sseg@drawone{\@@g}{-\width/2+\gap}{0pt}{\width/2-\gap}{0pt}
+}
+\def\pgf@circ@sseg@drawdots{% dots
+ \edef\what{empty}
+ \ifx\what\pgf@circ@sevenseg@dotstate
+ % do nothing
+ \else
+ \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
+ \edef\what{off}
+ \ifx\what\pgf@circ@sevenseg@dotstate
+ % dot off
+ \pgfsetfillcolor{\ctikzvalof{seven seg/color off}}
+ \pgfsetcolor{\ctikzvalof{seven seg/color off}}
+ \else
+ % dot on
+ \pgfsetfillcolor{\ctikzvalof{seven seg/color on}}
+ \pgfsetcolor{\ctikzvalof{seven seg/color on}}
+ \fi
+ \pgfpathcircle{\pgfpoint{\width/2+2*\pgf@circ@res@other}{-\width}}{\pgf@circ@res@other}
+ \pgfusepath{draw,fill}
+ \fi
+}
+%%%---------- close: tex/pgfcircmultipoles
+
+%%%%%%%%%%% Springe nach tex/pgfcirclabel
+%%%---------- open: tex/pgfcirclabel.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Bipole label positioning
+
+%% Options
+\ctikzset{label/.style = { l=#1 } }
+\ctikzset{l/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
+ \ctikzsetvalof{bipole/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+
+\ctikzset{label above/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{l^/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{label below/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+\ctikzset{l_/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+\ctikzset{annotation/.style = { a=#1 } }
+\ctikzset{a/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/annotation/name=#1}
+ \ctikzsetvalof{bipole/annotation/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+
+\ctikzset{annotation above/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+
+\ctikzset{a^/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+
+\ctikzset{annotation below/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+\ctikzset{a_/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+
+% This is to adjust spacing for the labels so that they are not cramped on components
+\def\pgf@circ@ls{.75ex} % labelspace to have just one point to change
+
+\def\pgf@circ@drawlabels#1{
+ \pgfextra{
+ % This function will be called with argument #1 equal
+ % to "label" or "annotation" form pgfcircpath.tex.
+ % pgf@circ@direction is the direction of the path,
+ % its value is set in pgfcircpath.tex
+ \pgfmathsubtract{\pgf@circ@direction}{90}
+ \pgfmathround{\pgfmathresult} % avoid precision loss errors
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/position}}
+ \ifnum \pgf@circ@temp < 0
+ \pgfmathadd{\pgf@circ@labanc}{180}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ % \typeout{INI: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
+ %
+ % normalize the angle values
+ %
+ \pgfmathmod{\pgf@circ@labanc}{360}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ %
+ \ifpgf@circuit@bipole@inverted
+ \pgfmathadd{\pgf@circ@temp}{180} %If shape is inverted, use opposite anchor
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ %
+ \ifnum \ctikzvalof{mirror value} = -1
+ \pgfmathadd{\pgf@circ@temp}{180} %If shape is mirrored, use opposite anchor
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ % \typeout{FIN: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
+ }
+ %Firstly, place a coordinate directly at the edge of the shape
+ (\ctikzvalof{bipole/name}.\pgf@circ@temp) coordinate (labelcoor)
+ %now decide, which labels should be drawn
+ \pgfextra{
+ \edef\pgf@temp{\ctikzvalof{label/align}}
+ \def\pgf@circ@temp{straight}
+ }
+ \ifx\pgf@temp\pgf@circ@temp %straight
+ \pgf@circ@drawreglabels{#1}
+ \else
+ \pgfextra{\def\pgf@circ@temp{rotate}}
+ \ifx\pgf@temp\pgf@circ@temp %rotate
+ \pgf@circ@drawrotlabels{#1}
+ \else% smart
+ \pgf@circ@drawsmartlabels{#1}
+ \fi
+ \fi
+}
+
+
+\def\pgf@circ@drawsmartlabels#1{
+ \pgfextra{
+ \pgfmathmod{\pgf@circ@direction}{90}
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ \ifnum \pgfcircmathresult > 20
+ \ifnum \pgfcircmathresult < 70
+ \pgf@circ@drawrotlabels{#1}
+ \else
+ \pgf@circ@drawreglabels{#1}
+ \fi
+ \else
+ \pgf@circ@drawreglabels{#1}
+ \fi
+ }
+
+
+\def\pgf@circ@drawrotlabels#1{
+ \pgfextra{
+ % scale the distances in function of zoom, so that they are not
+ % dependent on it but on font size. Thanks to @marmot
+ % https://tex.stackexchange.com/a/476018/38080
+ % the coeffcient is adjusted so that the distance is more or less
+ % the same for rotated labels and straight ones (although it will
+ % depend on the font, so it's not exact).
+ \pgfgettransformentries{\tmp}{\tmp}{\tmp}{\myscale}{\tmp}{\tmp}
+ \pgfmathsetlength\pgf@circ@res@temp{1.5*\pgf@circ@ls/\myscale}
+ \ifnum \ctikzvalof{bipole/#1/position}>0
+ %we need some more space for placement below, due to mid-anchor
+ \else % we do not have <= in \ifnum...
+ \pgf@circ@res@temp=1.5\pgf@circ@res@temp
+ \fi
+ %Calculate rotation of the label from direction and strip decimals
+ \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ % rotate the label at second or third quadrant:
+ \ifnum \pgfcirclabrot > 90 \ifnum \pgfcirclabrot < 270
+ \pgfmathsubtract{\pgf@circ@direction}{180}
+ \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ %invert the space relationships due to rotated strings
+ \ifnum \ctikzvalof{bipole/#1/position}>0
+ \pgf@circ@res@temp=1.5\pgf@circ@res@temp
+ \fi
+ \fi\fi
+ \pgfmathparse{\ctikzvalof{bipole/#1/position}>0?\pgf@circ@direction+90:\pgf@circ@direction-90}
+ \edef\pgf@circ@labposangle{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ % reset cm is not working correctly here
+ (labelcoor)++(\pgf@circ@labposangle:\the\pgf@circ@res@temp) coordinate(labelcoor)
+ node[anchor=mid, rotate=\pgfcirclabrot](\ctikzvalof{bipole/name}#1){\pgf@circ@finallabels{#1}}
+}
+
+\def\pgf@circ@drawreglabels#1{
+ %Now calculate all shape positions
+ %Use mid-anchor at x-axis and base-anchor at y-axis, respectively.
+ %All points between will be addressed by angled-anchors:
+ \pgfextra{
+ % scale ex-distance to make it independent on scale
+ % thanks @marmot see https://tex.stackexchange.com/a/476018/38080
+ \pgfgettransformentries{\tmp}{\tmp}{\tmp}{\myscale}{\tmp}{\tmp}
+ \pgfmathsetlength\pgf@circ@res@temp{\pgf@circ@ls/\myscale}
+ \pgfmathadd{\pgf@circ@labanc}{90}
+ \pgfmathround{\pgfmathresult}
+ \def\pgf@circ@labanctext{\pgf@circ@labanc}
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \pgfmathparse{mod(\pgf@circ@temp,180)>135?mod(\pgf@circ@temp,180)-180:mod(\pgf@circ@temp,180)}
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ %Values around 90 are at both y-axis
+ \ifnum \pgfcircmathresult > 84 \ifnum \pgfcircmathresult< 96
+ \pgfextra{\edef\pgf@circ@labpos{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}}
+ \ifnum \pgf@circ@labpos > 180
+ \ifnum \ctikzvalof{bipole/#1/position} > 0
+ \pgfextra{\def\pgf@circ@labanctext{mid west}}
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{mid east}}
+ \fi
+ \else
+ \ifnum \ctikzvalof{bipole/#1/position} > 0
+ \pgfextra{\def\pgf@circ@labanctext{mid east}}
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{mid west}}
+ \fi
+ \fi
+ \fi\fi
+ %Values between -5 and 5 are at pos /neg x-axis
+ \pgfextra{\def\uffa{}\newdimen\realshift\realshift=\dimexpr1pt\relax}
+ \ifnum \pgfcircmathresult <6 \ifnum \pgfcircmathresult > -6
+ \ifnum \ctikzvalof{bipole/#1/position} < 0
+ \ifnum \pgf@circ@labanc > 90
+ % using base coordinate instead of south to naturally align
+ % symbols with descendants; but this invalidate the effect of
+ % the inner sep, so recover it by shifting the anchor
+ % reset cm is not working sometime, use @marmot solution
+ % see https://tex.stackexchange.com/a/476018/38080
+ (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
+ \pgfextra{\def\pgf@circ@labanctext{base}}%base
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{north}}%north
+ \fi
+ \else
+ \ifnum \pgf@circ@labanc < 90
+ % shift, as above
+ (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
+ \pgfextra{\def\pgf@circ@labanctext{base}}%base
+ \else
+ \ifnum \pgf@circ@labanc > 180
+ % this shouldn't happen, but somehow it does (270 degree anchors)
+ % shift, as above
+ (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
+ \pgfextra{\def\pgf@circ@labanctext{base}}%base
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{north}}%north
+ \fi
+ \fi
+ \fi
+ \fi\fi
+ (labelcoor) node[anchor=\pgf@circ@labanctext,
+ inner sep=0.5\pgf@circ@res@temp, outer sep=0pt,
+ ](\ctikzvalof{bipole/name}#1){\strut\pgf@circ@finallabels{#1}%
+ }
+}
+
+\def\pgf@circ@finallabels#1{%
+ \edef\pgf@temp{}%
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/unit}}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \ctikzvalof{bipole/#1/name}%
+ \else%
+ $\SI{\ctikzvalof{bipole/#1/name}}{\ctikzvalof{bipole/#1/unit}}$%
+ \fi%
+}
+
+\ctikzset{text/.style = { t=#1 } }
+\ctikzset{t/.code = {
+ \ctikzsetvalof{bipoles/twoport/text}{#1}
+}}
+
+%%%% Stacked labels
+%
+% stacked labels by Romano Giannetti romano@rgtti.com
+% heavily based on Claudo Fiandrinos's https://tex.stackexchange.com/a/65792/38080
+% \expandafter trick inspired by Matthew Leingang's https://tex.stackexchange.com/a/12272/38080
+%
+% labels are in a tabular, globally aligned:
+% vertically with key l2 valign (default c)
+% c: center t: top b: bottom
+% horizontally with key l2 align (default l)
+% l: left c: centered r: right
+% you can switch sides using l2_=... and l2^=...
+% syntax is l2_ = line1 and line2 (same for l2^)
+%
+\ctikzset{%
+ l2 valign/.store in=\ltwo@valign, l2 valign=c,
+ l2 halign/.store in=\ltwo@halign, l2 halign=l,
+}
+\ctikzset{l2base/.code n args={2}{
+ \pgfkeys{/tikz/circuitikz/bipole/label/name=%
+ \bgroup
+ \setlength{\tabcolsep}{2pt}%
+ \def\ltwo@tabu{\tabular[\ltwo@valign]}%
+ \expandafter\ltwo@tabu\expandafter{\ltwo@halign}%
+ #1\\ #2%
+ \endtabular
+ \egroup
+ }%
+ \ctikzsetvalof{bipole/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#2}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+\ctikzset{l2/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l2 above/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l2^/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l2 below/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+\ctikzset{l2_/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+%%%---------- close: tex/pgfcirclabel
+%%%%%%%%%%% Springe nach tex/pgfcircvoltage
+%%%---------- open: tex/pgfcircvoltage.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Voltage management
+
+
+\ctikzset{v^>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v^</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v_>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
+\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
+\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
+\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
+
+% Default position varies whether the component is a voltage source
+% or not
+\ctikzset{v/.code = {
+ \ifpgf@circuit@bipole@isvoltage
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \fi
+ \fi
+ \ifpgf@circ@oldvoltagedirection
+ \ifpgf@circuit@bipole@iscurrent\ifpgf@circ@fixbatteries
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \fi\fi
+ \else
+ \ifpgf@circuit@bipole@iscurrent
+ \ifpgf@circuit@bipole@current@backward
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \fi\fi\fi
+ \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
+ \ctikzsetvalof{bipole/voltage/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ }
+}
+
+% american voltage font selection and symbol definition
+% the default font command is {} --- nothing
+\def\pgf@circ@avfont{\ctikzvalof{voltage/american font}}
+%
+% plus and minus symbols (default is $+$ and $-$, see pgfcirc.defines.tex)
+% notice that the double braces are needed to be able
+% to use \boldmath in the font (although it is semi-deprecated...)
+%
+\def\pgf@circ@avplus{\ctikzvalof{voltage/american plus}}
+\def\pgf@circ@avminus{\ctikzvalof{voltage/american minus}}
+
+%% Output routine for generic bipoles
+
+\def\pgf@circ@drawvoltagegeneric{
+ \pgfextra{
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/straight label distance}
+ \pgfkeysifdefined{\pgf@temp}
+ {
+ \edef\partheight{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/straight label distance}}
+ \edef\tmpdistfromline{(\partheight\pgf@circ@Rlen)}
+ }
+ {
+ \pgfkeysifdefined{/tikz/circuitikz/bipoles/voltage/straight label distance}
+ {
+ \edef\partheight{\ctikzvalof{bipoles/voltage/straight label distance}}
+ \edef\tmpdistfromline{(\partheight\pgf@circ@Rlen)}
+ }
+ {%calculate default value from part height
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/height}
+ \pgfkeysifdefined{\pgf@temp}
+ {
+ \edef\partheight{0.5*\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/height}}
+ \edef\tmpdistfromline{(\partheight\pgf@circ@Rlen+0.2\pgf@circ@Rlen)}
+ }
+ {
+ \edef\tmpdistfromline{(.5\pgf@circ@Rlen)} %fallback to fixed value
+ }
+ }
+ }
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{\tmpdistfromline}
+ \else
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{-\tmpdistfromline}
+ \else
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
+ \fi
+ \fi
+ \else
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{-\tmpdistfromline}
+ \else
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{\tmpdistfromline}
+ \else
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
+ \fi
+ \fi
+ \fi
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@voltage@angle{90}
+ \else
+ \def\pgf@circ@voltage@angle{-90}
+ \fi
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\distacefromnode{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}} }
+ { \edef\distacefromnode{\ctikzvalof{voltage/distance from node}} }
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\bumpb{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}} }
+ { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
+ \edef\shiftv{\ctikzvalof{voltage/shift}}
+ \pgfmathsetmacro{\bumpb}{\bumpb + \shiftv} %% adjust the bump is shift
+ \ifpgf@circuit@bipole@inverted
+ \pgfmathsetmacro{\shiftv}{-\shiftv}
+ \fi
+ \ifnum \ctikzvalof{mirror value} = -1
+ \pgfmathsetmacro{\shiftv}{-\shiftv}
+ \fi
+ }
+ % %\pgf@circ@Rlen/\pgfkeysvalueof{/tikz/circuitikz/current arrow scale} is equal to the length of the currarrow
+ coordinate (pgfcirc@midtmp) at ($(\tikztostart) ! \pgf@circ@Rlen/\pgfkeysvalueof{/tikz/circuitikz/current arrow scale} ! (anchorstartnode)$) %absolute move, minimum space is length of arrowhead
+ coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distacefromnode ! (anchorstartnode)$)
+
+ coordinate (pgfcirc@Vfrom) at ($(pgfcirc@midtmp) ! -\distfromline ! \pgf@circ@voltage@angle:(anchorstartnode)$)
+ coordinate (pgfcirc@midtmp) at ($(\tikztotarget) ! \pgf@circ@Rlen/\pgfkeysvalueof{/tikz/circuitikz/current arrow scale} ! (anchorendnode)$)%absolute move, minimum space is length of arrowhead
+ coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distacefromnode ! (anchorendnode)$)
+
+ coordinate (pgfcirc@Vto) at ($(pgfcirc@midtmp) ! \distfromline ! \pgf@circ@voltage@angle : (anchorendnode)$)
+
+ \ifpgf@circuit@bipole@voltage@below
+ coordinate (pgfcirc@Vto) at ($(pgfcirc@Vto) ! \shiftv!90 : (anchorendnode)$)
+ coordinate (pgfcirc@Vfrom) at ($(pgfcirc@Vfrom) ! \shiftv!-90 : (anchorstartnode)$)
+ coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
+ coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
+ \else
+ coordinate (pgfcirc@Vto) at ($(pgfcirc@Vto) ! -\shiftv!90 : (anchorendnode)$)
+ coordinate (pgfcirc@Vfrom) at ($(pgfcirc@Vfrom) ! -\shiftv!-90 : (anchorstartnode)$)
+ coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
+ coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
+ \fi
+
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@straight
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) --(pgfcirc@Vfrom) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
+ \else
+ (pgfcirc@Vfrom) --(pgfcirc@Vto) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
+ node[currarrow, sloped, allow upside down, pos=1] {}
+ (pgfcirc@Vfrom)
+ \else
+ (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
+ node[currarrow, sloped, allow upside down, pos=1] {}
+ (pgfcirc@Vto)
+ \fi
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ \else
+ (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ \fi
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ \else
+ (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ \fi
+ \fi
+ \fi
+}
+
+%% Output routine for voltage sources
+\def\pgf@circ@drawvoltagegenerator{
+ % the following is affected indirectly by voltage/shift, you can move the arrow with voltage/bump a.
+ % it's not perfect, but I can't find the way to do it correctly...
+ \pgfextra{
+ \edef\shiftv{\ctikzvalof{voltage/shift}}
+ \edef\bumpa{\ctikzvalof{voltage/bump a}}
+ \pgfmathsetmacro{\bumpaplus}{\bumpa + \shiftv}
+ }
+ \ifpgf@circuit@bipole@voltage@below
+ coordinate (pgfcirc@Vfrom) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-120)$)
+ coordinate (pgfcirc@Vto) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-60)$)
+ \else
+ coordinate (pgfcirc@Vfrom) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.120)$)
+ coordinate (pgfcirc@Vto) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.60)$)
+ \fi
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vfrom)
+ \else
+ (pgfcirc@Vfrom) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vto)
+ \fi
+ \else% american voltage
+ \ifpgf@circuit@bipole@voltageoutsideofsymbol
+ % if it is a battery, must put + and -
+
+ \ifpgf@circ@fixbatteries
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ \else
+ (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ \else
+ (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ \fi
+ \fi
+ \fi
+ \fi
+}
+
+%% Output routine
+\def\pgf@circ@drawvoltage{% node name
+ \pgfextra{ %WARNING: indentation is probably wrong
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \else
+ \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \else
+ \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@voltage@below
+ \pgf@circuit@bipole@voltage@belowfalse
+ \else
+ \pgf@circuit@bipole@voltage@belowtrue
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@below
+ \pgf@circuit@bipole@voltage@belowfalse
+ \else
+
+ \pgf@circuit@bipole@voltage@belowtrue
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@voltage@label@where{90}
+ \fi
+
+
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\eudist{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}} }
+ { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
+ \edef\shiftv{\ctikzvalof{voltage/shift}}
+ % adjust the label distance to the shift.
+ \pgfmathsetmacro{\eudistplus}{\eudist+\shiftv}
+
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ }%end pgfextra
+
+ \ifpgf@circuit@bipole@isvoltage
+ \pgf@circ@drawvoltagegenerator
+ \else
+ \pgf@circ@drawvoltagegeneric
+ \fi
+
+ % (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where) %Zeile sinnlos!?
+ \ifpgf@circuit@bipole@voltage@straight
+ coordinate (Vlab) at ($(pgfcirc@Vto)!0.5!(pgfcirc@Vfrom) $)
+ node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt]
+ at (Vlab) { \pgf@circ@finallabels{voltage/label} }
+ \else
+ coordinate (Vlab) at ($(\ctikzvalof{bipole/name}.center) !
+ \ifpgf@circuit@europeanvoltage
+ \eudistplus
+ \else
+ \ctikzvalof{voltage/american label distance}
+ \fi !
+ (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)$)
+ node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt] at (Vlab) { \pgf@circ@finallabels{voltage/label} }
+ \fi
+}%end drawvoltages
+%%%---------- close: tex/pgfcircvoltage
+%%%%%%%%%%% Springe nach tex/pgfcirccurrent
+%%%---------- open: tex/pgfcirccurrent.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Current handling
+
+%% Options
+\ctikzset{i^>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i>^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i>_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i^</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i<^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i<_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i/.code = {
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
+ \ctikzsetvalof{bipole/current/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ %reverse current direction for voltage sources
+ \ifpgf@circ@oldvoltagedirection\else
+ \ifpgf@circuit@bipole@isvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below }
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \fi\fi\fi
+ }
+}
+
+\ifpgf@circ@oldvoltagedirection
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
+\else
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
+\fi
+\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
+\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
+\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
+
+%% Output routine
+\def\pgf@circ@drawcurrent{
+ \pgfextra{
+ \edef\pgf@circ@ffffff{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@bipole@current@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@current@label@where{+90}
+ \fi
+ }
+
+ \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
+ \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line
+ (\tikztostart)--(\tikztotarget)
+ \else% normal bipole or source
+ \ifpgf@circuit@bipole@current@before
+ (\tikztostart)--(anchorstartnode)
+ \else
+ (anchorendnode)--(\tikztotarget)
+ \fi
+ \fi
+ \ifpgf@circuit@bipole@current@backward
+ \pgfextra{
+ \pgfmathsubtract{\pgf@circ@ffffff}{180}
+ \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ \fi
+ coordinate[currarrow,pos=\ctikzvalof{current/distance},rotate=\pgf@circ@ffffff](Iarrow)
+ (Iarrow.\pgf@circ@bipole@current@label@where) node[anchor=\pgf@circ@dir]{\pgf@circ@finallabels{current/label}}
+}
+
+%%%---------- close: tex/pgfcirccurrent
+%%%%%%%%%%% Springe nach tex/pgfcircflow
+%%%---------- open: tex/pgfcircflow.tex
+% Copyright 2007-2009 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% flow handling
+
+%% Options
+\ctikzset{f^>/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/curflowrent/y position = above
+ }
+}
+
+\ctikzset{f_>/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f>^/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f>_/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f^</.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f_</.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f<^/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f<_/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f</.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = backward} }
+\ctikzset{f_/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = below } }
+\ctikzset{f>/.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = forward } }
+\ctikzset{f^/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = above } }
+
+\ctikzset{f/.code = {
+ \pgfkeys{\circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/flow/label/name=#1}
+ \ctikzsetvalof{bipole/flow/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}
+}
+
+%% Output routine
+\def\pgf@circ@drawflow{
+ \pgfextra{
+ \edef\pgf@circ@ffffff{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@bipole@flow@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@flow@label@where{+90}
+ \fi
+ }
+
+ \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
+ \ifx\pgf@circ@temp\pgf@temp%draw flow at a short at middle of the line
+ (\tikztostart)--(\tikztotarget)
+ \else% normal bipole or source
+ \ifpgf@circuit@bipole@flow@before
+ (\tikztostart)--(anchorstartnode)
+ \else
+ (anchorendnode)--(\tikztotarget)
+ \fi
+ \fi
+ \pgfextra{
+ \ifpgf@circuit@bipole@flow@backward
+ \ifpgf@circuit@bipole@flow@below
+ \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \else
+ \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \fi
+ \pgfmathsubtract{\pgf@circ@ffffff}{180}
+ \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \else
+ \ifpgf@circuit@bipole@flow@below
+ \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \else
+ \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \fi
+ \fi
+ }
+ coordinate[flowarrow,pos=\ctikzvalof{flow/distance},rotate=\pgf@circ@ffffff,yshift=\flow@offset](Farrowpos)
+ (Farrowpos.\pgf@circ@bipole@flow@label@where) node[anchor=\pgf@circ@dir]{ \pgf@circ@finallabels{flow/label}}
+}
+
+%%%---------- close: tex/pgfcircflow
+
+% notice that the default is nooldvoltagedirection; it's not explicitly set to allow for the warning
+\ExecuteOptions{nofetbodydiode, nofetsolderdot, europeancurrents, europeanvoltages,americanports, americanresistors, cuteinductors ,europeangfsurgearrester, nosiunitx, noarrowmos, smartlabels}
+
+\ProcessOptions\relax
+
+%%%%%%%%%%% Springe nach tex/pgfcircpath
+%%%---------- open: tex/pgfcircpath.tex
+
+\def\pgf@circ@direction{0.0}
+
+% Names
+\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
+\ctikzset{n/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/name=#1}
+}}
+
+% Reflect the node along
+\ctikzset{mirrored/.is choice}
+\ctikzset{mirror value/.initial=1}
+\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
+\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
+\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
+
+% Invert node along path
+\ctikzset{inverted/.is choice}
+\ctikzset{invert value/.initial=1}
+\ctikzset{inverted/true/.code = {\ctikzsetvalof{invert value}{-1}\pgf@circuit@bipole@invertedtrue}}
+\ctikzset{inverted/false/.code = {\ctikzsetvalof{invert value}{1}\pgf@circuit@bipole@invertedfalse}}
+\ctikzset{invert/.style = {/tikz/circuitikz/inverted=true}}
+\newif\ifpgf@circuit@bipole@inverted
+\ctikzset{bipole/inverted/.is if=pgf@circuit@bipole@inverted}
+
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+
+% Initialize paths
+\def\pgfcircresetpath{
+ \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90, ,bipole/annotation/name=, bipole/annotation/position=-90,
+ bipole/inverted=false, bipole/kind=,
+ bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
+ bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
+ bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
+ bipole/current/y position=above, bipole/current/direction=forward,
+ mirrored=false
+ }
+}
+
+%% Helper function for path-function to ensure using anchors between nodes
+\def\set@explicit@center@anchor#1{
+ \pgfutil@ifundefined{pgf@sh@ns@#1}
+ {
+ %This coordinate is no node(but a relative position or a coordinate), no further handling needed
+ }{
+ \pgfutil@in@.{#1}
+ \ifpgfutil@in@
+ % Anchor is used, do nothing!
+ \else%
+ \let\tikz@moveto@waiting=\relax
+ \pgfpathmoveto{\tikz@last@position}%force movement, because tikz@moveto@waiting
+ \edef#1{#1.center}%ensure using center anchor
+ \fi
+}
+}
+
+
+%% Generic bipole path
+\def\pgf@circ@bipole@path#1#2{
+
+ \pgfextra{
+ \set@explicit@center@anchor{\tikztostart}
+ \set@explicit@center@anchor{\tikztotarget}
+ \pgfsyssoftpath@getcurrentpath{\myp@th}%% save current path to extend after calculation of correct start/end coordinates
+ \ctikzset{bipole/kind = #1}
+ \edef\pgf@temp{\ctikzvalof{bipole/name}}
+ \def\pgf@circ@temp{}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = #2\pgf@circ@rand} % create it
+ \fi
+ }
+
+ (\tikztostart) coordinate (\ctikzvalof{bipole/name}start)%necessary to get correct coordinates in the case of relative start/end or constructions like ((node1)-|(node2))
+ (\tikztotarget) coordinate (\ctikzvalof{bipole/name}end)
+ \pgfextra{
+ \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \pgfmathround{\pgfmathresult}
+ \edef\pgf@circ@direction{\pgfmathresult}%Calculate direction(angle) of path
+ \pgfsyssoftpath@setcurrentpath{\myp@th}
+ }
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ \else
+ --($(\ctikzvalof{bipole/name}start) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}end)$) %ugly workaround to get correct linejoins(node breaks path?)
+ \fi
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)%%positio of middle node
+ node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}, xscale=\ctikzvalof{invert value}]
+ (\ctikzvalof{bipole/name}) {}
+ \ifpgf@circuit@bipole@inverted
+ \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathend)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathstart)
+ \else
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.right)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.left)
+ \fi
+ \else
+ \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathstart)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathend)
+ \else
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.left)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.right)
+ \fi
+ \fi
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ \else
+ (\ctikzvalof{bipole/name}start.center) -- (anchorstartnode)
+ (anchorendnode) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+
+ \drawpoles
+ \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabels{label}\fi
+ \pgf@circ@ifkeyempty{bipole/annotation/name}\else\pgf@circ@drawlabels{annotation}\fi
+ \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
+ \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
+ \pgf@circ@ifkeyempty{bipole/flow/label/name}\else\pgf@circ@drawflow\fi
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ (\ctikzvalof{bipole/name}end)%Move to end of path
+ \else
+ ($(\ctikzvalof{bipole/name}end) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}start)$) -- (\ctikzvalof{bipole/name}end)%ugly workaround to get correct linejoins(node breaks path?)
+ %tikztostart and tikztotarget could not be used, because it would break if target coordinate is something like (node1-|node2)
+
+ \fi
+ % reset
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ \tikztonodes%draw pending nodes an path
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Handling of terminals
+
+\ctikzset{bipole/nodes/.is family}
+\ctikzset{bipole/nodes/left/.initial=none}
+\ctikzset{bipole/nodes/right/.initial=none}
+\tikzset{bipole nodes/.style n args={2}{%
+ \circuitikzbasekey/bipole/nodes/left=#1,
+ \circuitikzbasekey/bipole/nodes/right=#2
+ }
+}
+
+%% Easily usable styles
+
+\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+
+% rectjoinfill workarounds
+
+\ctikzset{.-/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{.-*/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{.-o/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{.-d/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{-./.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{o-./.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{*-./.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{d-./.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{.-./.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+
+\tikzset{reversed/.style = {\circuitikzbasekey/bipole/inverted=true}}
+
+\def\drawpoles{
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{none}}
+ \ifx\pgf@temp\pgf@circ@temp\else(\tikztostart) node[\pgf@circ@temp] {}\fi
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} }
+ \ifx\pgf@temp\pgf@circ@temp\else(\tikztotarget) node[\pgf@circ@temp] {}\fi
+}
+
+%% Path definitions
+\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
+\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
+\def\pgf@circ@sresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{thermistor}{#1}\else\pgf@circ@bipole@path{resistivesens}{#1}\fi}
+\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
+\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
+\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
+\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
+\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
+\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
+\def\pgf@circ@capacitivesens@path#1{\pgf@circ@bipole@path{capacitivesens}{#1}}
+\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
+\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
+\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
+\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
+\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
+\def\pgf@circ@batteryone@path#1{\pgf@circ@bipole@path{battery1}{#1}}
+\def\pgf@circ@batterytwo@path#1{\pgf@circ@bipole@path{battery2}{#1}}
+\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
+\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
+\def\pgf@circ@cutechoke@path#1{\pgf@circ@bipole@path{cutechoke}{#1}}
+\def\pgf@circ@inductor@path#1{%
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@europeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@cuteinductor@path{#1}%
+ \else%
+ \pgf@circ@americaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@vinductor@path#1{
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@veuropeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@vcuteinductor@path{#1}%
+ \else%
+ \pgf@circ@vamericaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@inductivesens@path#1{%
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@europeaninductivesens@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@cuteinductivesens@path{#1}%
+ \else%
+ \pgf@circ@americaninductivesens@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
+\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
+\def\pgf@circ@europeaninductivesens@path#1{\pgf@circ@bipole@path{sfullgeneric}{#1}}
+\def\pgf@circ@americaninductivesens@path#1{\pgf@circ@bipole@path{samericaninductor}{#1}}
+\def\pgf@circ@cuteinductivesens@path#1{\pgf@circ@bipole@path{scuteinductor}{#1}}
+\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
+\def\pgf@circ@bulb@path#1{\pgf@circ@bipole@path{bulb}{#1}}
+\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
+\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
+\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
+\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
+\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
+\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
+\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
+\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
+\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
+\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
+\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
+\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
+\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
+\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
+\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
+\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
+\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
+\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
+\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
+\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
+\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
+\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
+\def\pgf@circ@nos@path#1{\pgf@circ@bipole@path{nos}{#1}}
+\def\pgf@circ@ncs@path#1{\pgf@circ@bipole@path{ncs}{#1}}
+\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
+\def\pgf@circ@ncpushbutton@path#1{\pgf@circ@bipole@path{ncpushbutton}{#1}}
+\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
+\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
+\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
+\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
+\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
+\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
+\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
+\def\pgf@circ@oscope@path#1{\pgf@circ@bipole@path{oscope}{#1}}
+\def\pgf@circ@empty@path#1{}
+\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
+\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
+\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
+\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
+\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
+\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
+\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
+\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
+\def\pgf@circ@mstline@path#1{\pgf@circ@bipole@path{mstline}{#1}}
+\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
+\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
+\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
+\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
+\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
+
+\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
+\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
+\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
+
+\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
+\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
+\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
+\def\pgf@circ@bandstop@path#1{\pgf@circ@bipole@path{bandstop}{#1}}
+\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
+\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
+\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
+\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
+\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
+\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
+\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
+\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
+\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
+\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
+\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
+\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
+\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
+\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
+\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
+
+%%Mechanical
+\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
+\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
+\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
+\def\pgf@circ@viscoe@path#1{\pgf@circ@bipole@path{viscoe}{#1}}
+
+%% Styles
+
+\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
+\def\compattikzset#1{\tikzset{\comnpatname#1}}
+
+%\def\ctikzsetbipole#1#2{%
+% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
+%}
+
+\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
+\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
+\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
+\compattikzset{viscoe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@viscoe@path, l=#1}}
+\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
+\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
+\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
+\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
+\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
+\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
+\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
+\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
+\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
+\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
+\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
+\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
+\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
+\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
+\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
+\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
+\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
+\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
+\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batteryone@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{battery2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batterytwo@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
+\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
+\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
+\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
+\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
+\compattikzset{cute choke/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cutechoke@path, l=#1}}
+\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
+\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
+\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
+\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
+\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
+\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
+\compattikzset{transmission line/.style = {tline = #1}}
+\compattikzset{TL/.style = {tline = #1}}
+\compattikzset{mstline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mstline@path, l=#1}}
+\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+
+\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source = #1, \circuitikzbasekey/bipole/is current=true}}
+\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source = #1, \circuitikzbasekey/bipole/is current=true}}
+
+
+\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
+\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
+\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
+\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
+\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
+\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
+\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
+
+\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
+\compattikzset{bulb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bulb@path, l=#1}}
+
+\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
+\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
+\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
+\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
+\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
+
+\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
+\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
+\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
+\compattikzset{bandstop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandstop@path}}
+\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
+\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
+\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
+\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
+\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
+\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
+\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
+\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
+\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
+\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
+\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
+\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
+\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
+\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
+\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
+
+% % % % % %
+% % Begin of Diodes
+% % % % % %
+
+\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
+\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
+\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
+\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
+\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
+\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
+\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
+\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
+\def\pgf@circ@fullbidirectionaldiode@path#1{\pgf@circ@bipole@path{fullbidirectionaldiode}{#1}}
+\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
+\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
+\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
+\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
+\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
+\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
+\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
+\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
+\def\pgf@circ@emptybidirectionaldiode@path#1{\pgf@circ@bipole@path{emptybidirectionaldiode}{#1}}
+
+\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
+\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
+\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
+\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
+\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
+\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
+\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
+\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
+\compattikzset{full bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullbidirectionaldiode@path}}
+\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
+\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
+
+\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{empty bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptybidirectionaldiode@path}}
+\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
+\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
+%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
+
+\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
+\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
+\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
+\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
+\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
+\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
+\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
+\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
+\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
+\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
+\compattikzset{bidirectionaldiode/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
+
+%% Define Shortcuts
+\compattikzset{Do/.style = {\comnpatname empty diode}}
+\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
+\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
+\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
+\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
+\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
+\compattikzset{leDo/.style = {\comnpatname empty led}}
+\compattikzset{VCo/.style = {\comnpatname empty varcap}}
+\compattikzset{biDo/.style = {\comnpatname empty bidirectionaldiode}}
+\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
+\compattikzset{Tro/.style = {\comnpatname empty triac}}
+
+\compattikzset{D*/.style = {\comnpatname full diode}}
+\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
+\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
+\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
+\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
+\compattikzset{pD*/.style = {\comnpatname full photodiode}}
+\compattikzset{leD*/.style = {\comnpatname full led}}
+\compattikzset{VC*/.style = {\comnpatname full varcap}}
+\compattikzset{biD*/.style = {\comnpatname full bidirectionaldiode}}
+\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
+\compattikzset{Tr*/.style = {\comnpatname full triac}}
+
+\compattikzset{D/.style = {\comnpatname diode}}
+\compattikzset{tD/.style = {\comnpatname tunnel diode}}
+\compattikzset{zD/.style = {\comnpatname Zener diode}}
+\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
+\compattikzset{sD/.style = {\comnpatname Schottky diode}}
+\compattikzset{pD/.style = {\comnpatname photodiode}}
+\compattikzset{leD/.style = {\comnpatname led}}
+\compattikzset{VC/.style = {\comnpatname varcap}}
+\compattikzset{biD/.style = {\comnpatname bidirectionaldiode}}
+\compattikzset{Ty/.style = {\comnpatname thyristor}}
+\compattikzset{Tr/.style = {\comnpatname triac}}
+
+\compattikzset{D-/.style = {\comnpatname stroke diode}}
+\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
+\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
+\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
+\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
+\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
+\compattikzset{leD-/.style = {\comnpatname stroke led}}
+\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
+\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
+\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
+\compattikzset{biD-/.style = {\comnpatname empty bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
+
+% % % % % %
+% % End of Diodes
+% % % % % %
+
+
+\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
+\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
+\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
+\compattikzset{ncs/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
+\compattikzset{nos/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
+\compattikzset{normal closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
+\compattikzset{normal open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
+\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
+\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{nopb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{normally open push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{ncpb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
+\compattikzset{normally closed push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
+\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
+
+\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
+\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
+\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
+\tikzset{oscope/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@oscope@path, l=#1}}
+
+% cute switches
+%% closed cute switch
+\def\pgf@circ@cuteclosedswitch@path#1{\pgf@circ@bipole@path{cuteclosedswitch}{#1}}
+\compattikzset{cute closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosedswitch@path, l=#1}}
+\compattikzset{ccsw/.style= {\comnpatname cute closed switch= #1}}
+
+%% open cute switch
+\def\pgf@circ@cuteopenswitch@path#1{\pgf@circ@bipole@path{cuteopenswitch}{#1}}
+\compattikzset{cute open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopenswitch@path, l=#1}}
+\compattikzset{cosw/.style= {\comnpatname cute open switch= #1}}
+
+%% closing cute switch
+\def\pgf@circ@cuteclosingswitch@path#1{\pgf@circ@bipole@path{cuteclosingswitch}{#1}}
+\compattikzset{cute closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosingswitch@path, l=#1}}
+\compattikzset{ccgsw/.style= {\comnpatname cute closing switch= #1}}
+
+%% opening cute switch
+\def\pgf@circ@cuteopeningswitch@path#1{\pgf@circ@bipole@path{cuteopeningswitch}{#1}}
+\compattikzset{cute opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopeningswitch@path, l=#1}}
+\compattikzset{cogsw/.style= {\comnpatname cute opening switch= #1}}
+
+
+% short forms
+\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, l=#1}}
+
+\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path, i=#1}}
+\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosource@path, v=#1}}
+
+\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
+\compattikzset{isource/.style = {\comnpatname current source = #1}}
+\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
+\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+
+\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+
+\compattikzset{R/.style= {\comnpatname resistor = #1}}
+\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
+\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
+\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
+\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
+\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
+\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
+\compattikzset{C/.style = {\comnpatname capacitor = #1}}
+\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
+\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
+\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
+\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
+\compattikzset{L/.style = {\comnpatname inductor = #1}}
+\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
+\compattikzset{V/.style = {\comnpatname voltage source = #1}}
+\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
+\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
+ \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
+ \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
+ \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+
+%current sources
+\compattikzset{I/.style = {\comnpatname current source = #1}}
+\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
+ \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
+ \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
+ \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+
+% cute sources
+\def\pgf@circ@vsourceC@path#1{\pgf@circ@bipole@path{vsourceC}{#1}}
+\compattikzset{cute european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{vsourceC/.style= {\comnpatname cute european voltage source= #1}}
+\compattikzset{ceV/.style= {\comnpatname cute european voltage source= #1}}
+
+\def\pgf@circ@isourceC@path#1{\pgf@circ@bipole@path{isourceC}{#1}}
+\compattikzset{cute european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{isourceC/.style= {\comnpatname cute european current source= #1}}
+\compattikzset{ceI/.style= {\comnpatname cute european current source= #1}}
+
+\def\pgf@circ@cvsourceC@path#1{\pgf@circ@bipole@path{cvsourceC}{#1}}
+\compattikzset{cute european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{cvsourceC/.style= {\comnpatname cute european controlled voltage source= #1}}
+\compattikzset{cceV/.style= {\comnpatname cute european controlled voltage source= #1}}
+
+\def\pgf@circ@cisourceC@path#1{\pgf@circ@bipole@path{cisourceC}{#1}}
+\compattikzset{cute european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{cisourceC/.style= {\comnpatname cute european controlled current source= #1}}
+\compattikzset{cceI/.style= {\comnpatname cute european controlled current source= #1}}
+
+% noise sources
+\def\pgf@circ@vsourceN@path#1{\pgf@circ@bipole@path{vsourceN}{#1}}
+\compattikzset{noise voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceN@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{vsourceN/.style= {\comnpatname noise voltage source= #1}}
+\compattikzset{nV/.style= {\comnpatname noise voltage source= #1}}
+
+\def\pgf@circ@isourceN@path#1{\pgf@circ@bipole@path{isourceN}{#1}}
+\compattikzset{noise current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceN@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{isourceN/.style= {\comnpatname noise current source= #1}}
+\compattikzset{nI/.style= {\comnpatname noise current source= #1}}
+
+% resistive sensor american style
+\def\pgf@circ@resistivesens@path#1{\pgf@circ@bipole@path{resistivesens}{#1}}
+\compattikzset{american resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistivesens@path, l=#1}}
+\compattikzset{european resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
+\compattikzset{resistive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@sresistor@path, l=#1}}
+\compattikzset{sR/.style= {\comnpatname resistive sensor= #1}}
+
+\compattikzset{capacitive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitivesens@path, l=#1}}
+\compattikzset{sC/.style= {\comnpatname capacitive sensor= #1}}
+
+\compattikzset{cute inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductivesens@path, l=#1}}
+\compattikzset{european inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductivesens@path, l=#1}}
+\compattikzset{american inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductivesens@path, l=#1}}
+\compattikzset{inductive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductivesens@path, l=#1}}
+\compattikzset{sL/.style= {\comnpatname inductive sensor= #1}}
+
+\compattikzset{Mr/.style = {\comnpatname memristor}}
+
+\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
+\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
+\compattikzset{spst/.style = {\comnpatname switch = #1}}
+
+\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
+
+\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
+\compattikzset{vss/.style = {\comnpatname vee = #1}}
+
+% activate the to-style crossing
+\def\pgf@circ@crossing@path#1{\pgf@circ@bipole@path{crossing}{#1}}
+\compattikzset{crossing/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@crossing@path, l=#1}}
+\compattikzset{xing/.style= {\comnpatname crossing= #1}}
+
+%% loudspeaker and microphone
+
+\def\pgf@circ@loudspeaker@path#1{\pgf@circ@bipole@path{loudspeaker}{#1}}
+\compattikzset{loudspeaker/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@loudspeaker@path, l=#1}}
+
+\def\pgf@circ@mic@path#1{\pgf@circ@bipole@path{mic}{#1}}
+\compattikzset{mic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mic@path, l=#1}}
+
+% more instrument
+\def\pgf@circ@rmeter@path#1{\pgf@circ@bipole@path{rmeter}{#1}}
+\compattikzset{rmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeter@path, l=#1}}
+\def\pgf@circ@rmeterwa@path#1{\pgf@circ@bipole@path{rmeterwa}{#1}}
+\compattikzset{rmeterwa/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeterwa@path, l=#1}}
+\def\pgf@circ@smeter@path#1{\pgf@circ@bipole@path{smeter}{#1}}
+\compattikzset{smeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@smeter@path, l=#1}}
+% current loop probes
+\def\pgf@circ@iloop@path#1{\pgf@circ@bipole@path{iloop}{#1}}
+\compattikzset{iloop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop@path, l=#1}}
+\def\pgf@circ@iloop2@path#1{\pgf@circ@bipole@path{iloop2}{#1}}
+\compattikzset{iloop2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop2@path, l=#1}}
+% qucs-style probes
+\def\pgf@circ@qiprobe@path#1{\pgf@circ@bipole@path{qiprobe}{#1}}
+\compattikzset{qiprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qiprobe@path, l=#1}}
+\def\pgf@circ@qvprobe@path#1{\pgf@circ@bipole@path{qvprobe}{#1}}
+\compattikzset{qvprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qvprobe@path, l=#1}}
+\def\pgf@circ@qpprobe@path#1{\pgf@circ@bipole@path{qpprobe}{#1}}
+\compattikzset{qpprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qpprobe@path, l=#1}}
+
+
+% Transistor like bipoles
+
+\def\pgf@circ@trans@path#1#2{
+ \pgfextra{
+ \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
+ \def\pgf@circ@temp{#2}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
+ \fi
+ }
+ \ifpgf@circuit@bipole@inverted
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ \else
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ \fi
+ \pgfextra{
+ \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \pgfmathadd{\pgfmathresult}{-90}
+ \pgfmathround{\pgfmathresult}
+ \edef\pgf@circ@direction{\pgfmathresult}
+ }
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)
+ node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
+ (\ctikzvalof{bipole/name}) {} node {\ctikzvalof{bipole/label/name}}
+ \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
+ (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
+ \else
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
+ (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ (\tikztotarget) \tikztonodes % e si continua
+}
+
+
+\def\pgf@circ@definetranspath#1{
+ \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
+}
+
+\pgf@circ@definetranspath{elmech}
+\pgf@circ@definetranspath{nmos}
+\pgf@circ@definetranspath{pmos}
+\pgf@circ@definetranspath{hemt}
+\pgf@circ@definetranspath{npn}
+\pgf@circ@definetranspath{pnp}
+\pgf@circ@definetranspath{nfet}
+\pgf@circ@definetranspath{nigfete}
+\pgf@circ@definetranspath{nigfetd}
+\pgf@circ@definetranspath{nigfetebulk}
+\pgf@circ@definetranspath{pfet}
+\pgf@circ@definetranspath{pigfete}
+\pgf@circ@definetranspath{pigfetd}
+\pgf@circ@definetranspath{pigfetebulk}
+\pgf@circ@definetranspath{njfet}
+\pgf@circ@definetranspath{pjfet}
+\pgf@circ@definetranspath{pigbt}
+\pgf@circ@definetranspath{nigbt}
+\pgf@circ@definetranspath{Lpigbt}
+\pgf@circ@definetranspath{Lnigbt}
+%%%---------- close: tex/pgfcircpath
+
+\ifpgf@circ@siunitx
+ \RequirePackage{xstring}[2009/03/13]
+ %\expandafter\let\csname angstrom\endcsname\relax
+ \RequirePackage{siunitx}
+\fi
+
+\ifpgf@circ@explicitvdir\else
+ \PackageWarningNoLine{circuitikz}{%
+ You did not specify one of the voltage directions:\MessageBreak
+ \space\space oldvoltagedirection, nooldvoltagedirection, \MessageBreak
+ \space\space RPvoltages or EFvoltages \MessageBreak
+ Default directions may have changed, \MessageBreak
+ please check the manual%
+ }
+\fi
+
+\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
+%override (unused) circuitikz environment for compability to externalization)
+\let\circuitikz\tikzpicture
+\let\endcircuitikz\endtikzpicture
+
+\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.3.sty b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.3.sty
index bf8e23a122..28fd994e91 100644
--- a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.3.sty
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.3.sty
@@ -1,4 +1,7 @@
-% Copyright 2007-2019 by Massimo Redaelli
+% Copyright 2018-2021 by Romano Giannetti
+% Copyright 2015-2021 by Stefan Lindner
+% Copyright 2013-2021 by Stefan Erhardt
+% Copyright 2007-2021 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -15,16729 +18,5 @@
\ProvidesPackage{circuitikz-0.9.3}
[\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]
-%% Version 3.0 of pgf/TikZ is required
-\RequirePackage{tikz}
-\usetikzlibrary{calc}
-%
-% "arrows" library is deprecated, and behave badly with
-% arrows on short paths. Change to the new arrows.meta
-% In pfgcirc.define, we will add the old definition of
-% latex' which we have lost in the transition
-%
-\usetikzlibrary{arrows.meta, bending}
-
-% The options are listed in the manual in this order
-
-\DeclareOption{europeanvoltage}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{straightvoltages}{
- \pgf@circuit@bipole@voltage@straighttrue
-}
-
-\DeclareOption{americanvoltage}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrent}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrent}{
- \ctikzset{current = american}
-}
-
-
-
-\DeclareOption{americanresistor}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistor}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductor}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductor}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductor}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanport}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanport}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{european}{
- \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
- \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester choice = european}
-}
-
-\DeclareOption{american}{
- \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester choice = american}
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{fulldiodes}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiodes}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{europeanvoltages}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{americanvoltages}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrents}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrents}{
- \ctikzset{current = american}
-}
-
-\DeclareOption{americanresistors}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistors}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductors}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductors}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductors}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanports}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanports}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{americangfsurgearrester}{
- \ctikzset{gas filled surge arrester choice = american}
-}
-
-\DeclareOption{europeangfsurgearrester}{
- \ctikzset{gas filled surge arrester choice = european}
-}
-
-\DeclareOption{siunitx}{
- \pgf@circ@siunitxtrue
-}
-
-\DeclareOption{nosiunitx}{
- \pgf@circ@siunitxfalse
-}
-
-\DeclareOption{fulldiode}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiode}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{strokediode}{
- \ctikzset{diode = stroke}
-}
-
-\DeclareOption{arrowmos}{
- \pgf@circuit@mos@arrowstrue
-}
-
-\DeclareOption{noarrowmos}{
- \pgf@circuit@mos@arrowsfalse
-}
-
-\DeclareOption{fetbodydiode}{
- \pgf@circuit@fet@bodydiodetrue
-}
-
-\DeclareOption{nofetbodydiode}{
- \pgf@circuit@fet@bodydiodefalse
-}
-
-\DeclareOption{fetsolderdot}{
- \pgf@circuit@fet@solderdottrue
-}
-
-\DeclareOption{nofetsolderdot}{
- \pgf@circuit@fet@solderdotfalse
-}
-
-\DeclareOption{emptypmoscircle}{
- \pgf@circuit@pmos@emptycircletrue
-}
-
-
-\DeclareOption{lazymos}{
- \ctikzset{tripoles/nmos/width=.5}
- \ctikzset{tripoles/nmos/gate height=.35}
- \ctikzset{tripoles/nmos/base height=.35}
- \ctikzset{tripoles/nmos/height/.initial=1.2}
- \ctikzset{tripoles/nmos/base width=.5}
- \ctikzset{tripoles/nmos/gate width=.65}
-
- \ctikzset{tripoles/pmos/width=.5}
- \ctikzset{tripoles/pmos/gate height=.35}
- \ctikzset{tripoles/pmos/base height=.35}
- \ctikzset{tripoles/pmos/height/.initial=1.2}
- \ctikzset{tripoles/pmos/base width=.5}
- \ctikzset{tripoles/pmos/gate width=.65}
-
- \pgf@circuit@pmos@emptycircletrue
-}
-
-\DeclareOption{straightlabels}{
- \ctikzset{label/align = straight}
-}
-
-\DeclareOption{rotatelabels}{
- \ctikzset{label/align = rotate}
-}
-
-\DeclareOption{smartlabels}{
- \ctikzset{label/align = smart}
-}
-
-\DeclareOption{compatibility}{
- \pgf@circuit@compattrue
-}
-
-\DeclareOption{oldvoltagedirection}{
- \pgf@circ@oldvoltagedirectiontrue
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriesfalse
-}
-\DeclareOption{nooldvoltagedirection}{
- \pgf@circ@oldvoltagedirectionfalse
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriesfalse
-}
-
-\DeclareOption{RPvoltages}{
- \pgf@circ@oldvoltagedirectiontrue
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriestrue
-}
-\DeclareOption{EFvoltages}{
- \pgf@circ@oldvoltagedirectionfalse
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriestrue
-}
-
-
-\DeclareOption{betterproportions}{
- \ctikzset{monopoles/ground/width/.initial=.15}
-
- \ctikzset{bipoles/resistor/height/.initial=.23}
- \ctikzset{bipoles/resistor/width/.initial=.6}
- \ctikzset{bipoles/capacitor/height/.initial=.4}
- \ctikzset{bipoles/capacitor/width/.initial=.1}
- \ctikzset{bipoles/potentiometer/height/.initial=.6}
- \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/potentiometer/width/.initial=.6}
- \ctikzset{bipoles/photoresistor/height/.initial=.6}
- \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
- \ctikzset{bipoles/photoresistor/width/.initial=.6}
- \ctikzset{bipoles/thermistor/main/.initial=.7}
- \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistor/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/main/.initial=.7}
- \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
- \ctikzset{bipoles/thermistorptc/width/.initial=.6}
- \ctikzset{bipoles/thermistorptc/main/.initial=.7}
- \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/main/.initial=.7}
- \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/width/.initial=.6}
- \ctikzset{bipoles/vresistor/height/.initial=.45}
- \ctikzset{bipoles/vresistor/width/.initial=.6}
- \ctikzset{bipoles/generic/height/.initial=.23}
- \ctikzset{bipoles/generic/width/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
- \ctikzset{bipoles/ageneric/height/.initial=.23}
- \ctikzset{bipoles/ageneric/width/.initial=.6}
- \ctikzset{bipoles/memristor/height/.initial=.23}
- \ctikzset{bipoles/memristor/wave height/.initial=.375}
- \ctikzset{bipoles/memristor/width/.initial=.60}
- \ctikzset{bipoles/tgeneric/height/.initial=.525}
- \ctikzset{bipoles/tgeneric/width/.initial=.6}
- \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
- \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
- \ctikzset{bipoles/fullgeneric/height/.initial=.23}
- \ctikzset{bipoles/fullgeneric/width/.initial=.6}
- \ctikzset{bipoles/diode/height/.initial=.3}
- \ctikzset{bipoles/diode/width/.initial=.25}
- \ctikzset{bipoles/bidirectionaldiode/height/.initial=.66}
- \ctikzset{bipoles/bidirectionaldiode/width/.initial=.6}
- \ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
- \ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
-
- \ctikzset{tripoles/thyristor/height/.initial=.66}
- \ctikzset{tripoles/thyristor/height 2/.initial=.3}
- \ctikzset{tripoles/thyristor/width/.initial=.6}
- \ctikzset{tripoles/thyristor/diode height/.initial=.3}
- \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
- \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
- \ctikzset{tripoles/triac/height/.initial=.66}
- \ctikzset{tripoles/triac/width/.initial=.6}
- \ctikzset{tripoles/triac/diode width left/.initial=.3}
- \ctikzset{tripoles/triac/diode width right/.initial=.3}
-}
-
-% This is a nice hack that prints all the shapes declared
-% by the package. Very useful for coverage testing and debugging.
-%
-% \let\origpgfdeclareshape=\pgfdeclareshape
-% \def\pgfdeclareshape#1{%
-% \typeout{SHAPE:\space"#1"}%
-% \origpgfdeclareshape{#1}
-% }
-
-
-%%%%%%%%%
-%%%%%%%%%%% Springe nach tex/pgfcirc.defines
-%%%---------- open: tex/pgfcirc.defines.tex
-%% Counters
-
-\newcount\pgf@circ@count@a
-\newcount\pgf@circ@count@b
-\newcount\pgf@circ@count@c
-%%%%%%%%%%%%
-%% Dimensions
-
-% coordinates
-\newdimen\pgf@circ@res@up
-\newdimen\pgf@circ@res@down
-\newdimen\pgf@circ@res@zero
-\newdimen\pgf@circ@res@left
-\newdimen\pgf@circ@res@right
-\newdimen\pgf@circ@res@other
-\newdimen\pgf@circ@res@step
-\newdimen\pgf@circ@res@temp
-% inital thickness
-\newdimen \pgfstartlinewidth
-
-% arrow tips, ported over old arrows library (deprecated)
-% see https://tex.stackexchange.com/questions/234084/latex-arrow-tip-with-arrows-meta-library
-% this was the original definition of latex' tips, renamed to avoid clashes
-%
-\pgfarrowsdeclare{latexslim}{latexslim}
-{
- \pgfutil@tempdima=0.28pt%
- \advance\pgfutil@tempdima by.3\pgflinewidth%
- \pgfarrowsleftextend{+-4\pgfutil@tempdima}
- \pgfarrowsrightextend{+6\pgfutil@tempdima}
-}
-{
- \pgfutil@tempdima=0.28pt%
- \advance\pgfutil@tempdima by.3\pgflinewidth%
- \pgfpathmoveto{\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
- \pgfpathcurveto
- {\pgfqpoint{3.5\pgfutil@tempdima}{.5\pgfutil@tempdima}}
- {\pgfqpoint{-1\pgfutil@tempdima}{1.5\pgfutil@tempdima}}
- {\pgfqpoint{-4\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
- \pgfpathcurveto
- {\pgfqpoint{-1.5\pgfutil@tempdima}{1\pgfutil@tempdima}}
- {\pgfqpoint{-1.5\pgfutil@tempdima}{-1\pgfutil@tempdima}}
- {\pgfqpoint{-4\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
- \pgfpathcurveto
- {\pgfqpoint{-1\pgfutil@tempdima}{-1.5\pgfutil@tempdima}}
- {\pgfqpoint{3.5\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
- {\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
- \pgfpathclose
- \pgfusepathqfill
-}
-
-\pgfarrowsdeclarereversed{latexslim reversed}{latexslim reversed}{latexslim}{latexslim}
-
-%% Macro to fill or draw
-
-\def\pgf@circ@draworfill{%
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgfusepath{draw}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{draw, fill}
- \fi
-}
-
-\def\pgf@circ@draworfillandclip{%
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgfusepath{draw, clip}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{draw, clip, fill}
- \fi
-}
-
-\def\pgf@circ@maybefill{%
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgfusepath{discard}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{fill}
- \fi
-}
-%% Keys
-
-\long\def\pgf@circ@comment#1{}
-
-\def\circuitikzbasekey{/tikz/circuitikz}
-
-\pgfkeys{\circuitikzbasekey/.is family}
-
-\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
-\let\ctikzset\circuitikzset
-\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
-\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circuit@compat
-\newif\ifpgf@circ@oldvoltagedirection % default false
-\newif\ifpgf@circ@explicitvdir
-\newif\ifpgf@circ@fixbatteries
-
-\ctikzset{voltage dir/.is choice}
-\ctikzset{voltage dir/old/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriesfalse}}
-\ctikzset{voltage dir/noold/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriesfalse}}
-\ctikzset{voltage dir/RP/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriestrue}}
-\ctikzset{voltage dir/EF/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriestrue}}
-\tikzset{voltage dir/.style={circuitikz/voltage dir=#1}}
-
-
-% Option ">" for twoports
-\newif\ifpgf@circuit@inputarrow
-\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/.is choice}
-\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
-
-% Option "boxed" for nodes and twoports
-\newif\ifpgf@circuit@boxed
-\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
-
-% Option "dashed" for nodes and twoports
-\newif\ifpgf@circuit@dashed
-\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
-\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}
-
-% Option "t=*" for nodes
-\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
-
-\ctikzset{current arrow scale/.initial=16}
-
-\ctikzset{bipoles/.is family}
-\ctikzset{bipoles/border margin/.initial=1.1}
-\ctikzset{bipoles/thickness/.initial=2}
-\ctikzset{tripoles/thickness/.initial=2}
-\ctikzset{quadpoles/thickness/.initial=2}
-\ctikzset{nodes width/.initial=.04}
-
-% Base len for all circuitikz
-\newdimen\pgf@circ@Rlen
-\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1}}
-\pgf@circ@Rlen = 1.4cm
-
-\ctikzset{monopoles/.is family}
-\ctikzset{monopoles/ground/width/.initial=.25}
-\ctikzset{monopoles/ground/connectionthickness/.initial=1}
-\ctikzset{monopoles/ground/thickness/.initial=2}
-\ctikzset{monopoles/rground/thickness/.initial=2}
-\ctikzset{monopoles/tground/thickness/.initial=3}
-\ctikzset{monopoles/vcc/width/.initial=.2}
-\ctikzset{monopoles/vcc/arrow/.initial=legacy}
-\ctikzset{monopoles/vee/arrow/.initial=legacy}
-\ctikzset{monopoles/match/width/.initial=.4}
-\ctikzset{monopoles/chassis/width/.initial=.25}
-\ctikzset{monopoles/alternative chassis/width/.initial=.25}
-\ctikzset{monopoles/equipotentiality/width/.initial=.25}
-\ctikzset{monopoles/tlinestub/width/.initial=.25}
-\ctikzset{monopoles/antenna/width/.initial=.25}
-\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/width/.initial=.25}
-\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/rxantenna/width/.initial=.25}
-\ctikzset{monopoles/bareantenna/width/.initial=.25}
-\ctikzset{monopoles/bareantenna/label/xanchor/.initial=1}
-\ctikzset{monopoles/bareantenna/label/yanchor/.initial=0.5}
-\ctikzset{monopoles/waves/width/.initial=0.5}
-% microstrips
-\ctikzset{bipoles/mstline/height/.initial=0.3}
-\ctikzset{bipoles/mstline/width/.initial=1.2}
-\pgfkeys{/tikz/mstlinelen/.add code={}{\ctikzset{bipoles/mstline/width=#1}}}
-\ctikzset{monopoles/msport/width/.initial=.5}
-\ctikzset{monopoles/msrstub/height/.initial=1.0}
-\ctikzset{monopoles/msrstub/width/.initial=0.6}
-
-% microphone and loudspeaker
-\ctikzset{bipoles/loudspeaker/height/.initial=.8}
-\ctikzset{bipoles/loudspeaker/depth/.initial=.3}
-\ctikzset{bipoles/loudspeaker/width/.initial=.8}
-\ctikzset{bipoles/mic/height/.initial=1.2}
-\ctikzset{bipoles/mic/depth/.initial=.0}
-\ctikzset{bipoles/mic/width/.initial=.8}
-
-\ctikzset{bipoles/resistor/height/.initial=.3}
-\ctikzset{bipoles/resistor/width/.initial=.8}
-\ctikzset{bipoles/potentiometer/height/.initial=.8}
-\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
-\ctikzset{bipoles/potentiometer/width/.initial=.8}
-\ctikzset{bipoles/photoresistor/height/.initial=.6}
-\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
-\ctikzset{bipoles/photoresistor/width/.initial=.8}
-\ctikzset{bipoles/thermistor/main/.initial=.7}
-\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/width/.initial=.8}
-\ctikzset{bipoles/thermistorntc/main/.initial=.7}
-\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistorptc/width/.initial=.8}
-\ctikzset{bipoles/thermistorptc/main/.initial=.7}
-\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistor/width/.initial=.8}
-\ctikzset{bipoles/varistor/main/.initial=.7}
-\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/varistor/width/.initial=.8}
-\ctikzset{bipoles/vresistor/height/.initial=.6}
-\ctikzset{bipoles/vresistor/width/.initial=.8}
-\ctikzset{bipoles/cuteinductor/height/.initial=.3}
-\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
-\ctikzset{bipoles/cuteinductor/width/.initial=.6}
-\ctikzset{bipoles/cuteinductor/coils/.initial=5}
-\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-%% Cute choke settings
-\ctikzset{bipoles/cutechoke/height/.initial=.3}
-\ctikzset{bipoles/cutechoke/lower coil height/.initial=.15}
-\ctikzset{bipoles/cutechoke/width/.initial=.6}
-\ctikzset{bipoles/cutechoke/coils/.initial=5}
-\ctikzset{bipoles/cutechoke/coil aspect/.initial=.5}%percentage of choke width, which is covered by lower coil
-\ctikzset{bipoles/cutechoke/cstep/.initial=.3}
-\ctikzset{bipoles/cutechoke/cdist/.initial=1.3}
-\ctikzset{bipoles/cutechoke/cthick/.initial=1}
-\newif\ifpgf@circuit@bipole@twolines
-\pgf@circuit@bipole@twolinesfalse
-%
-\ctikzset{bipoles/americaninductor/height/.initial=.3}
-\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
-\ctikzset{bipoles/americaninductor/width/.initial=.8}
-\ctikzset{bipoles/americaninductor/coils/.initial=4}
-\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
-\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
-\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
-\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
-\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
-\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
-\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/esource/height/.initial=.60}
-\ctikzset{bipoles/esource/width/.initial=.60}
-\ctikzset{bipoles/pvsource/height/.initial=.60}
-\ctikzset{bipoles/pvsource/width/.initial=.60}
-\ctikzset{bipoles/isource/height/.initial=.60}
-\ctikzset{bipoles/isource/width/.initial=.60}
-\ctikzset{bipoles/oosource/height/.initial=.60}
-\ctikzset{bipoles/oosource/width/.initial=.60}
-\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/dcisource/angle/.initial=80}
-\ctikzset{bipoles/dcisource/height/.initial=.60}
-\ctikzset{bipoles/dcisource/width/.initial=.60}
-\ctikzset{bipoles/dcvsource/height/.initial=.60}
-\ctikzset{bipoles/dcvsource/width/.initial=.60}
-\ctikzset{bipoles/vsourcetri/height/.initial=.60}
-\ctikzset{bipoles/vsourcetri/width/.initial=.60}
-\ctikzset{bipoles/isourceam/height/.initial=.60}
-\ctikzset{bipoles/isourceam/width/.initial=.60}
-\ctikzset{bipoles/vsource/height/.initial=.60}
-\ctikzset{bipoles/vsource/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/height/.initial=.60}
-\ctikzset{bipoles/vsourceam/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/margin/.initial=.7}
-\ctikzset{bipoles/isourcesin/height/.initial=.60}
-\ctikzset{bipoles/isourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesin/height/.initial=.60}
-\ctikzset{bipoles/vsourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
-\ctikzset{bipoles/cisource/height/.initial=.7}
-\ctikzset{bipoles/cisource/width/.initial=.7}
-\ctikzset{bipoles/cisourceam/height/.initial=.7}
-\ctikzset{bipoles/cisourceam/width/.initial=.7}
-\ctikzset{bipoles/cvsource/height/.initial=.7}
-\ctikzset{bipoles/cvsource/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/height/.initial=.7}
-\ctikzset{bipoles/cvsourceam/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
-\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
-\ctikzset{bipoles/cisourcesin/width/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
-\ctikzset{bipoles/capacitor/height/.initial=.6}
-\ctikzset{bipoles/capacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/height/.initial=.5}
-\ctikzset{bipoles/ecapacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/font/.initial= \fontsize{6}{0}\selectfont\boldmath}
-\ctikzset{bipoles/pcapacitor/height/.initial=.6}
-\ctikzset{bipoles/pcapacitor/width/.initial=.2}
-\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
-\ctikzset{bipoles/vcapacitor/height/.initial=.6}
-\ctikzset{bipoles/vcapacitor/width/.initial=.5}
-\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
-\ctikzset{bipoles/piezoelectric/height/.initial=.7}
-\ctikzset{bipoles/piezoelectric/width/.initial=.5}
-\ctikzset{bipoles/battery/height/.initial=.6}
-\ctikzset{bipoles/battery/width/.initial=.3}
-\ctikzset{bipoles/battery1/height/.initial=.6}
-\ctikzset{bipoles/battery1/width/.initial=.3}
-\ctikzset{bipoles/battery2/height/.initial=.6}
-\ctikzset{bipoles/battery2/width/.initial=.3}
-\ctikzset{bipoles/diode/height/.initial=.50}
-\ctikzset{bipoles/diode/width/.initial=.40}
-\ctikzset{bipoles/bidirectionaldiode/height/.initial=1.1}
-\ctikzset{bipoles/bidirectionaldiode/width/.initial=1}
-\ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
-\ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
-\ctikzset{bipoles/varcap/height/.initial=.50}
-\ctikzset{bipoles/varcap/width/.initial=.45}
-\ctikzset{bipoles/spst/height/.initial=.35}
-\ctikzset{bipoles/spst/width/.initial=.35}
-\ctikzset{bipoles/spst/depth/.initial=.2}
-\ctikzset{bipoles/nos/height/.initial=.3}
-\ctikzset{bipoles/nos/width/.initial=.35}
-\ctikzset{bipoles/nos/depth/.initial=.2}
-\ctikzset{bipoles/ncs/height/.initial=.35}
-\ctikzset{bipoles/ncs/width/.initial=.35}
-\ctikzset{bipoles/ncs/depth/.initial=.2}
-\ctikzset{bipoles/generic/height/.initial=.30}
-\ctikzset{bipoles/generic/width/.initial=.80}
-\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
-\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
-\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
-\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
-\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
-\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
-\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
-\ctikzset{bipoles/fuse/height/.initial=.20}
-\ctikzset{bipoles/fuse/width/.initial=.50}
-\ctikzset{bipoles/afuse/height/.initial=.20}
-\ctikzset{bipoles/afuse/width/.initial=.50}
-\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
-\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
-\ctikzset{bipoles/ageneric/height/.initial=.30}
-\ctikzset{bipoles/ageneric/width/.initial=.80}
-\ctikzset{bipoles/memristor/height/.initial=.30}
-\ctikzset{bipoles/memristor/wave height/.initial=.5}
-\ctikzset{bipoles/memristor/width/.initial=.80}
-\ctikzset{bipoles/tgeneric/height/.initial=.70}
-\ctikzset{bipoles/tgeneric/width/.initial=.80}
-\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
-\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
-\ctikzset{bipoles/fullgeneric/height/.initial=.30}
-\ctikzset{bipoles/fullgeneric/width/.initial=.80}
-\ctikzset{bipoles/open/height/.initial=.3} %necessary for curly voltages
-\ctikzset{bipoles/open/width/.initial=.3} %necessary for curly voltages
-\ctikzset{bipoles/open/voltage/straight label distance/.initial=0}
-\ctikzset{bipoles/open/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/short/height/.initial=0} %dummy height for voltage positioning
-\ctikzset{bipoles/short/width/.initial=0} %dummy width for voltage positioning
-%\ctikzset{bipoles/short/voltage/straight label distance/.initial=.2}
-%\ctikzset{bipoles/short/voltage/distance from node/.initial=.5}
-\ctikzset{bipoles/ammeter/height/.initial=.60}
-\ctikzset{bipoles/ammeter/width/.initial=.60}
-\ctikzset{bipoles/ohmmeter/height/.initial=.60}
-\ctikzset{bipoles/ohmmeter/width/.initial=.60}
-\ctikzset{bipoles/voltmeter/height/.initial=.60}
-\ctikzset{bipoles/voltmeter/width/.initial=.60}
-\ctikzset{bipoles/smeter/height/.initial=.60}
-\ctikzset{bipoles/smeter/width/.initial=.60}
-\ctikzset{bipoles/qmeter/depth/.initial=.40}
-\ctikzset{bipoles/qmeter/height/.initial=.80}
-\ctikzset{bipoles/qmeter/width/.initial=.60}
-\ctikzset{bipoles/iloop/width/.initial=.40}
-\ctikzset{bipoles/iloop/height/.initial=.60}
-\ctikzset{bipoles/oscope/height/.initial=.60}
-\ctikzset{bipoles/oscope/width/.initial=.60}
-\ctikzset{bipoles/buffer/height/.initial=1}
-\ctikzset{bipoles/buffer/width/.initial=1}
-\ctikzset{bipoles/not port/width/.initial=1}
-\ctikzset{bipoles/not port/height/.initial=.8}
-\ctikzset{bipoles/not port/circle width/.initial=.15}
-\ctikzset{bipoles/lamp/height/.initial=.60}
-\ctikzset{bipoles/lamp/width/.initial=.60}
-\ctikzset{bipoles/bulb/height/.initial=.8}
-\ctikzset{bipoles/bulb/width/.initial=.8}
-\ctikzset{bipoles/tline/height/.initial=.3}
-\ctikzset{bipoles/tline/width/.initial=.8}
-\ctikzset{bipoles/squid/height/.initial=.60}
-\ctikzset{bipoles/squid/width/.initial=.60}
-\ctikzset{bipoles/barrier/height/.initial=.60}
-\ctikzset{bipoles/barrier/width/.initial=.60}
-\ctikzset{bipoles/thermocouple/height/.initial=.250}
-\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
-\ctikzset{bipoles/thermocouple/width/.initial=.140}
-\ctikzset{bipoles/pushbutton/height/.initial=.5}
-\ctikzset{bipoles/pushbutton/height 2/.initial=.2}
-\ctikzset{bipoles/pushbutton/width/.initial=.50}
-
-\ctikzset{bipoles/twoport/width/.initial=.7}
-\ctikzset{bipoles/twoport/height/.initial=.7}
-\ctikzset{bipoles/twoport/text/.initial=}
-\ctikzset{bipoles/vco/width/.initial=.7}
-\ctikzset{bipoles/bandpass/width/.initial=.7}
-\ctikzset{bipoles/bandstop/width/.initial=.7}
-\ctikzset{bipoles/highpass/width/.initial=.7}
-\ctikzset{bipoles/lowpass/width/.initial=.7}
-\ctikzset{bipoles/adc/width/.initial=.7}
-\ctikzset{bipoles/dac/width/.initial=.7}
-\ctikzset{bipoles/dsp/width/.initial=.7}
-\ctikzset{bipoles/fft/width/.initial=.7}
-\ctikzset{bipoles/amp/width/.initial=.7}
-\ctikzset{bipoles/vamp/width/.initial=.7}
-\ctikzset{bipoles/piattenuator/width/.initial=.7}
-\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
-\ctikzset{bipoles/tattenuator/width/.initial=.7}
-\ctikzset{bipoles/vtattenuator/width/.initial=.7}
-\ctikzset{bipoles/phaseshifter/width/.initial=.7}
-\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
-\ctikzset{bipoles/detector/width/.initial=.7}
-% resistive sensor american style
-\ctikzset{bipoles/resistivesens/height/.initial=.6}
-\ctikzset{bipoles/resistivesens/width/.initial=.8}
-
-% crossing wires
-\ctikzset{bipoles/crossing/size/.initial=.2}
-
-\newif\ifpgf@circuit@trans@depletiontype
-\pgf@circuit@trans@depletiontypefalse
-
-\newif\ifpgf@circuit@mos@arrows
-\ctikzset{tripoles/mos style/.is choice}
-\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
-\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
-\pgfkeys{/tikz/arrowmos/.add code={}{\pgf@circuit@mos@arrowstrue}}
-\pgfkeys{/tikz/noarrowmos/.add code={}{\pgf@circuit@mos@arrowsfalse}}
-
-% Option solderdot for fet
-\newif\ifpgf@circuit@fet@solderdot
-\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-
-% Option bodydiode for fet
-\newif\ifpgf@circuit@fet@bodydiode
-\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-
-% Option draw fet without gate connection
-\newif\ifpgf@circuit@bpt@drawgate
-\pgf@circuit@bpt@drawgatetrue
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-
-% Option draw bpt without base connection
-\newif\ifpgf@circuit@bpt@drawbase
-\pgf@circuit@bpt@drawbasetrue
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-
-% Option draw bpt with optical input
-\newif\ifpgf@circuit@bpt@drawphoto
-\pgf@circuit@bpt@drawphotofalse
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-
-% Option draw pmos with empty circle
-\newif\ifpgf@circuit@pmos@emptycircle
-\pgf@circuit@pmos@emptycirclefalse
-\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-% Option draw pmos with no circle
-\newif\ifpgf@circuit@pmos@nocircle
-\pgf@circuit@pmos@nocirclefalse
-\pgfkeys{/tikz/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
-\ctikzset{tripoles/pmos style/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
-% back to normal
-\pgfkeys{/tikz/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
-\ctikzset{tripoles/pmos style/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
-
-
-\newif\ifpgf@circuit@trans@ntype
-\pgf@circuit@trans@ntypetrue %default true
-%\newif\ifpgf@circuit@trans@ptype
-%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
-\ctikzset{tripoles/nmos/width/.initial=.7}
-\ctikzset{tripoles/nmos/gate height/.initial=.35}
-\ctikzset{tripoles/nmos/base height/.initial=.5}
-\ctikzset{tripoles/nmos/conn height/.initial=0}
-\ctikzset{tripoles/nmos/height/.initial=1.1}
-\ctikzset{tripoles/nmos/base width/.initial=.5}
-\ctikzset{tripoles/nmos/gate width/.initial=.62}
-\ctikzset{tripoles/nmos/arrow pos/.initial=.6}
-\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nmos/curr direction/.initial=1}
-
-\ctikzset{tripoles/pmos/width/.initial=.7}
-\ctikzset{tripoles/pmos/gate height/.initial=.35}
-\ctikzset{tripoles/pmos/base height/.initial=.5}
-\ctikzset{tripoles/pmos/conn height/.initial=0}
-\ctikzset{tripoles/pmos/height/.initial=1.1}
-\ctikzset{tripoles/pmos/base width/.initial=.5}
-\ctikzset{tripoles/pmos/gate width/.initial=.62}
-\ctikzset{tripoles/pmos/arrow pos/.initial=.4}
-\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pmos/curr direction/.initial=-1}
-
-\ctikzset{tripoles/hemt/width/.initial=.7}
-\ctikzset{tripoles/hemt/gate height/.initial=.35}
-\ctikzset{tripoles/hemt/base height/.initial=.5}
-\ctikzset{tripoles/hemt/conn height/.initial=0}
-\ctikzset{tripoles/hemt/height/.initial=1.1}
-\ctikzset{tripoles/hemt/base width/.initial=.5}
-\ctikzset{tripoles/hemt/gate width/.initial=.62}
-\ctikzset{tripoles/hemt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/hemt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/hemt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/hemt/curr direction/.initial=1}
-
-\ctikzset{tripoles/nfet/width/.initial=.7}
-\ctikzset{tripoles/nfet/gate height/.initial=.35}
-\ctikzset{tripoles/nfet/base height/.initial=.5}
-\ctikzset{tripoles/nfet/conn height/.initial=0}
-\ctikzset{tripoles/nfet/height/.initial=1.1}
-\ctikzset{tripoles/nfet/base width/.initial=.5}
-\ctikzset{tripoles/nfet/gate width/.initial=.62}
-\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pfet/width/.initial=.7}
-\ctikzset{tripoles/pfet/gate height/.initial=.35}
-\ctikzset{tripoles/pfet/base height/.initial=.5}
-\ctikzset{tripoles/pfet/conn height/.initial=0}
-\ctikzset{tripoles/pfet/height/.initial=1.1}
-\ctikzset{tripoles/pfet/base width/.initial=.5}
-\ctikzset{tripoles/pfet/gate width/.initial=.62}
-\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigfete/width/.initial=.7}
-\ctikzset{tripoles/nigfete/gate height/.initial=.35}
-\ctikzset{tripoles/nigfete/base height/.initial=.5}
-\ctikzset{tripoles/nigfete/conn height/.initial=.35}
-\ctikzset{tripoles/nigfete/height/.initial=1.1}
-\ctikzset{tripoles/nigfete/base width/.initial=.5}
-\ctikzset{tripoles/nigfete/gate width/.initial=.62}
-\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfete/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetd/width/.initial=.7}
-\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetd/base height/.initial=.5}
-\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetd/height/.initial=1.1}
-\ctikzset{tripoles/nigfetd/base width/.initial=.5}
-\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
-
-\ctikzset{tripoles/pigfete/width/.initial=.7}
-\ctikzset{tripoles/pigfete/gate height/.initial=.35}
-\ctikzset{tripoles/pigfete/base height/.initial=.5}
-\ctikzset{tripoles/pigfete/conn height/.initial=.35}
-\ctikzset{tripoles/pigfete/height/.initial=1.1}
-\ctikzset{tripoles/pigfete/base width/.initial=.5}
-\ctikzset{tripoles/pigfete/gate width/.initial=.62}
-\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetd/width/.initial=.7}
-\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetd/base height/.initial=.5}
-\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetd/height/.initial=1.1}
-\ctikzset{tripoles/pigfetd/base width/.initial=.5}
-\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
-
-\ctikzset{tripoles/npn/width/.initial=.6}
-\ctikzset{tripoles/npn/base height/.initial=.45}
-\ctikzset{tripoles/npn/base height 2/.initial=.15}
-\ctikzset{tripoles/npn/base height/.initial=.4}
-\ctikzset{tripoles/npn/conn height/.initial=0}
-\ctikzset{tripoles/npn/height/.initial=1.1}
-\ctikzset{tripoles/npn/base width/.initial=.5}
-\ctikzset{tripoles/npn/arrow pos/.initial=.5}
-\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/npn/curr direction/.initial=1}
-
-\ctikzset{tripoles/pnp/width/.initial=.6}
-\ctikzset{tripoles/pnp/base height/.initial=.45}
-\ctikzset{tripoles/pnp/base height 2/.initial=.15}
-\ctikzset{tripoles/pnp/base height/.initial=.4}
-\ctikzset{tripoles/pnp/conn height/.initial=0}
-\ctikzset{tripoles/pnp/height/.initial=1.1}
-\ctikzset{tripoles/pnp/base width/.initial=.5}
-\ctikzset{tripoles/pnp/arrow pos/.initial=.5}
-\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pnp/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigbt/width/.initial=.6}
-\ctikzset{tripoles/pigbt/gate height/.initial=.45}
-\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/pigbt/base height/.initial=.4}
-\ctikzset{tripoles/pigbt/conn height/.initial=0}
-\ctikzset{tripoles/pigbt/height/.initial=1.1}
-\ctikzset{tripoles/pigbt/gate width/.initial=.62}
-\ctikzset{tripoles/pigbt/base width/.initial=.5}
-\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigbt/width/.initial=.6}
-\ctikzset{tripoles/nigbt/gate height/.initial=.45}
-\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/nigbt/base height/.initial=.4}
-\ctikzset{tripoles/nigbt/conn height/.initial=0}
-\ctikzset{tripoles/nigbt/height/.initial=1.1}
-\ctikzset{tripoles/nigbt/gate width/.initial=.62}
-\ctikzset{tripoles/nigbt/base width/.initial=.5}
-\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/Lpigbt/width/.initial=.6}
-\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/Lnigbt/width/.initial=.6}
-\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/njfet/width/.initial=.7}
-\ctikzset{tripoles/njfet/gate height/.initial=.5}
-\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/njfet/gate width/.initial=.5}
-\ctikzset{tripoles/njfet/conn height/.initial=.35}
-\ctikzset{tripoles/njfet/height/.initial=1.1}
-\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/njfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pjfet/width/.initial=.7}
-\ctikzset{tripoles/pjfet/gate height/.initial=.5}
-\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/pjfet/gate width/.initial=.5}
-\ctikzset{tripoles/pjfet/conn height/.initial=.35}
-\ctikzset{tripoles/pjfet/height/.initial=1.1}
-\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/isfet/width/.initial=1}
-\ctikzset{tripoles/isfet/gate height/.initial=.35}
-\ctikzset{tripoles/isfet/base height/.initial=.5}
-\ctikzset{tripoles/isfet/height/.initial=1.1}
-\ctikzset{tripoles/isfet/base width/.initial=.3}
-\ctikzset{tripoles/isfet/gate width/.initial=.5}
-\ctikzset{tripoles/isfet/conn height/.initial=0}
-\ctikzset{tripoles/isfet/wave width/.initial=.16}
-\ctikzset{tripoles/isfet/wave amp/.initial=.06}
-\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
-\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
-\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/isfet/curr direction/.initial=1}
-
-\newif\ifpgf@circuit@europeanlogicport
-\ctikzset{logic ports/.is choice}
-\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue
- \tikzset{and port/.style={shape=european and port}}
- \tikzset{or port/.style={shape=european or port}}
- \tikzset{xor port/.style={shape=european xor port}}
- \tikzset{not port/.style={shape=european not port}}
- \tikzset{nand port/.style={shape=european nand port}}
- \tikzset{nor port/.style={shape=european nor port}}
- \tikzset{xnor port/.style={shape=european xnor port}}
- } }
-\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse
- \tikzset{and port/.style={shape=american and port}}
- \tikzset{or port/.style={shape=american or port}}
- \tikzset{xor port/.style={shape=american xor port}}
- \tikzset{not port/.style={shape=american not port}}
- \tikzset{nand port/.style={shape=american nand port}}
- \tikzset{nor port/.style={shape=american nor port}}
- \tikzset{xnor port/.style={shape=american xnor port}}
- } }
-
-\ctikzset{logic ports origin/.is choice}
-\ctikzset{logic ports origin/legacy/.code= {
- \ctikzset{tripoles/american and port/origin/.initial=0.8}
- \ctikzset{tripoles/american nand port/origin/.initial=0.8}
- \ctikzset{tripoles/american nor port/origin/.initial=0.8}
- \ctikzset{tripoles/american or port/origin/.initial=0.8}
- \ctikzset{tripoles/american xor port/origin/.initial=0.8}
- \ctikzset{tripoles/american xnor port/origin/.initial=0.8}
- \ctikzset{tripoles/european and port/origin/.initial=0.8}
- \ctikzset{tripoles/european nand port/origin/.initial=0.8}
- \ctikzset{tripoles/european or port/origin/.initial=0.8}
- \ctikzset{tripoles/european nor port/origin/.initial=0.8}
- \ctikzset{tripoles/european xor port/origin/.initial=0.8}
- \ctikzset{tripoles/european xnor port/origin/.initial=0.8}
- \ctikzset{tripoles/european not port/origin/.initial=0.8}
- }
-}
-\ctikzset{logic ports origin/center/.code= {
- \ctikzset{tripoles/american and port/origin/.initial=0}
- \ctikzset{tripoles/american nand port/origin/.initial=0}
- \ctikzset{tripoles/american nor port/origin/.initial=0}
- \ctikzset{tripoles/american or port/origin/.initial=0}
- \ctikzset{tripoles/american xor port/origin/.initial=0}
- \ctikzset{tripoles/american xnor port/origin/.initial=0}
- \ctikzset{tripoles/european and port/origin/.initial=0}
- \ctikzset{tripoles/european nand port/origin/.initial=0}
- \ctikzset{tripoles/european or port/origin/.initial=0}
- \ctikzset{tripoles/european nor port/origin/.initial=0}
- \ctikzset{tripoles/european xor port/origin/.initial=0}
- \ctikzset{tripoles/european xnor port/origin/.initial=0}
- \ctikzset{tripoles/european not port/origin/.initial=0}
- }
-}
-
-
-\ctikzset{tripoles/american and port/width/.initial=1.1}
-\ctikzset{tripoles/american and port/height/.initial=.8}
-\ctikzset{tripoles/american and port/port width/.initial=.7}
-\ctikzset{tripoles/american and port/input height/.initial=.5}
-\ctikzset{tripoles/american nand port/width/.initial=1.1}
-\ctikzset{tripoles/american nand port/height/.initial=.8}
-\ctikzset{tripoles/american nand port/port width/.initial=.7}
-\ctikzset{tripoles/american nand port/circle width/.initial=.15}
-\ctikzset{tripoles/american nand port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/width/.initial=1.1}
-\ctikzset{tripoles/american or port/height/.initial=.8}
-\ctikzset{tripoles/american or port/port width/.initial=.7}
-\ctikzset{tripoles/american or port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/input skip/.initial=.25}
-\ctikzset{tripoles/american or port/aaa/.initial=.6}
-\ctikzset{tripoles/american or port/bbb/.initial=.4}
-\ctikzset{tripoles/american or port/ccc/.initial=.5}
-\ctikzset{tripoles/american or port/ddd/.initial=.0}
-\ctikzset{tripoles/american nor port/width/.initial=1.1}
-\ctikzset{tripoles/american nor port/height/.initial=.8}
-\ctikzset{tripoles/american nor port/port width/.initial=.7}
-\ctikzset{tripoles/american nor port/input height/.initial=.5}
-\ctikzset{tripoles/american nor port/input skip/.initial=.25}
-\ctikzset{tripoles/american nor port/circle width/.initial=.15}
-\ctikzset{tripoles/american nor port/aaa/.initial=.6}
-\ctikzset{tripoles/american nor port/bbb/.initial=.4}
-\ctikzset{tripoles/american nor port/ccc/.initial=.5}
-\ctikzset{tripoles/american nor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xor port/width/.initial=1.1}
-\ctikzset{tripoles/american xor port/height/.initial=.8}
-\ctikzset{tripoles/american xor port/port width/.initial=.7}
-\ctikzset{tripoles/american xor port/input height/.initial=.5}
-\ctikzset{tripoles/american xor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xor port/distance/.initial=.1}
-\ctikzset{tripoles/american xnor port/width/.initial=1.1}
-\ctikzset{tripoles/american xnor port/height/.initial=.8}
-\ctikzset{tripoles/american xnor port/port width/.initial=.7}
-\ctikzset{tripoles/american xnor port/input height/.initial=.5}
-\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xnor port/distance/.initial=.1}
-\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
-\ctikzset{tripoles/american and port/origin/.initial=0.8}
-\ctikzset{tripoles/american and port/inputs/.initial=2}
-% variable number of inputs
-\ctikzset{tripoles/american nand port/origin/.initial=0.8}
-\ctikzset{tripoles/american nand port/inputs/.initial=2}
-\ctikzset{tripoles/american nor port/origin/.initial=0.8}
-\ctikzset{tripoles/american nor port/inputs/.initial=2}
-\ctikzset{tripoles/american nor port/angle/.initial=70}
-\ctikzset{tripoles/american nor port/inner/.initial=0.3}
-\ctikzset{tripoles/american or port/origin/.initial=0.8}
-\ctikzset{tripoles/american or port/inputs/.initial=2}
-\ctikzset{tripoles/american or port/angle/.initial=70}
-\ctikzset{tripoles/american or port/inner/.initial=0.3}
-\ctikzset{tripoles/american xor port/origin/.initial=0.8}
-\ctikzset{tripoles/american xor port/inputs/.initial=2}
-\ctikzset{tripoles/american xor port/angle/.initial=70}
-\ctikzset{tripoles/american xor port/inner/.initial=0.3}
-\ctikzset{tripoles/american xnor port/origin/.initial=0.8}
-\ctikzset{tripoles/american xnor port/inputs/.initial=2}
-\ctikzset{tripoles/american xnor port/angle/.initial=70}
-\ctikzset{tripoles/american xnor port/inner/.initial=0.3}
-
-\ctikzset{tripoles/european and port/width/.initial=1.4}
-\ctikzset{tripoles/european and port/height/.initial=.65}
-\ctikzset{tripoles/european and port/reserved/.initial=.6}
-\ctikzset{tripoles/european and port/input height/.initial=.6}
-\ctikzset{tripoles/european or port/width/.initial=1.4}
-\ctikzset{tripoles/european or port/height/.initial=.65}
-\ctikzset{tripoles/european or port/reserved/.initial=.6}
-\ctikzset{tripoles/european or port/input height/.initial=.6}
-\ctikzset{tripoles/european xor port/width/.initial=1.4}
-\ctikzset{tripoles/european xor port/height/.initial=.65}
-\ctikzset{tripoles/european xor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xor port/input height/.initial=.6}
-\ctikzset{tripoles/european nand port/width/.initial=1.4}
-\ctikzset{tripoles/european nand port/not height/.initial=.3}
-\ctikzset{tripoles/european nand port/not width/.initial=.8}
-\ctikzset{tripoles/european nand port/height/.initial=.65}
-\ctikzset{tripoles/european nand port/reserved/.initial=.6}
-\ctikzset{tripoles/european nand port/input height/.initial=.6}
-\ctikzset{tripoles/european not port/width/.initial=1.4}
-\ctikzset{tripoles/european not port/not height/.initial=.3}
-\ctikzset{tripoles/european not port/not width/.initial=.8}
-\ctikzset{tripoles/european not port/height/.initial=.65}
-\ctikzset{tripoles/european not port/reserved/.initial=.6}
-\ctikzset{tripoles/european not port/input height/.initial=0}
-\ctikzset{tripoles/european xnor port/width/.initial=1.4}
-\ctikzset{tripoles/european xnor port/not height/.initial=.3}
-\ctikzset{tripoles/european xnor port/not width/.initial=.8}
-\ctikzset{tripoles/european xnor port/height/.initial=.65}
-\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xnor port/input height/.initial=.6}
-\ctikzset{tripoles/european nor port/width/.initial=1.4}
-\ctikzset{tripoles/european nor port/not height/.initial=.3}
-\ctikzset{tripoles/european nor port/not width/.initial=.8}
-\ctikzset{tripoles/european nor port/height/.initial=.65}
-\ctikzset{tripoles/european nor port/reserved/.initial=.6}
-\ctikzset{tripoles/european nor port/input height/.initial=.6}
-% variable number of inputs
-\ctikzset{tripoles/european and port/origin/.initial=0.8}
-\ctikzset{tripoles/european and port/inputs/.initial=2}
-\ctikzset{tripoles/european nand port/origin/.initial=0.8}
-\ctikzset{tripoles/european nand port/inputs/.initial=2}
-\ctikzset{tripoles/european or port/origin/.initial=0.8}
-\ctikzset{tripoles/european or port/inputs/.initial=2}
-\ctikzset{tripoles/european nor port/origin/.initial=0.8}
-\ctikzset{tripoles/european nor port/inputs/.initial=2}
-\ctikzset{tripoles/european xor port/origin/.initial=0.8}
-\ctikzset{tripoles/european xor port/inputs/.initial=2}
-\ctikzset{tripoles/european xnor port/origin/.initial=0.8}
-\ctikzset{tripoles/european xnor port/inputs/.initial=2}
-\ctikzset{tripoles/european not port/origin/.initial=0.8}
-\ctikzset{tripoles/european not port/inputs/.initial=1}%
-%%% parameters that are not used anymore after multi-input
-%%% gates --- left for compatibility of source code.
-\ctikzset{tripoles/american xor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
-% switches for logic gates
-%
-\pgfkeys{/tikz/number inputs/.initial=0}
-\pgfkeys{/tikz/number inputs/.default=0}
-%
-% switches for op amps
-% changing input polarity
-%
-\newif\ifpgf@circuit@oa@iplusup\pgf@circuit@oa@iplusupfalse
-\pgfkeys{/tikz/noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
-\ctikzset{noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
-\pgfkeys{/tikz/input noinv down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
-\ctikzset{input noinv down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
-%
-% changing output polarity (for fully diff objects)
-%
-\newif\ifpgf@circuit@oa@oplusup\pgf@circuit@oa@oplusuptrue
-\pgfkeys{/tikz/noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
-\ctikzset{noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
-\pgfkeys{/tikz/noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
-\ctikzset{noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
-%
-\ctikzset{tripoles/op amp/width/.initial=1.7}
-\ctikzset{tripoles/op amp/port width/.initial=.7}
-\ctikzset{tripoles/op amp/height/.initial=1.4}
-\ctikzset{tripoles/op amp/input height/.initial=.5}
-\ctikzset{tripoles/op amp/up pos/.initial=.45}
-\ctikzset{tripoles/op amp/font/.initial= \fontsize{10}{12}\selectfont\boldmath}%absolute font size needed!
-\ctikzset{tripoles/en amp/width/.initial=1.7}
-\ctikzset{tripoles/en amp/port width/.initial=.7}
-\ctikzset{tripoles/en amp/height/.initial=1.6}
-\ctikzset{tripoles/en amp/input height/.initial=.3}
-\ctikzset{tripoles/en amp/up pos/.initial=.45}
-\ctikzset{tripoles/en amp/font/.initial= \fontsize{10}{12}\selectfont}%absolute font size needed!
-\ctikzset{tripoles/en amp/font2/.initial= \fontsize{12}{14}\selectfont}%absolute font size needed!
-\ctikzset{tripoles/en amp/text/.initial={$\mathstrut{\triangleright}\,{\infty}$}}
-\tikzset{
- en amp text/.code = {
- \ctikzsetvalof{tripoles/en amp/text}{#1}
- },
- en amp text A/.code = {
- \ctikzsetvalof{tripoles/en amp/text}{$\mathstrut{\triangleright}\,\mathrm{A}$}
- },
-}
-\ctikzset{tripoles/gm amp/width/.initial=1.7}
-\ctikzset{tripoles/gm amp/port width/.initial=.7}
-\ctikzset{tripoles/gm amp/height/.initial=1.4}
-\ctikzset{tripoles/gm amp/input height/.initial=.5}
-\ctikzset{tripoles/gm amp/up pos/.initial=.45}
-\ctikzset{tripoles/inst amp/width/.initial=1.7} % instrumentation amplifier, simple
-\ctikzset{tripoles/inst amp/port width/.initial=.7}
-\ctikzset{tripoles/inst amp/height/.initial=1.4}
-\ctikzset{tripoles/inst amp/input height/.initial=.5}
-\ctikzset{tripoles/inst amp/up pos/.initial=.4}
-\ctikzset{tripoles/inst amp/refv pos/.initial=.7}
-\ctikzset{tripoles/inst amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolute font size needed!
-\ctikzset{tripoles/fd inst amp/width/.initial=1.7} % instrumentation amplifier, diff output
-\ctikzset{tripoles/fd inst amp/port width/.initial=.7}
-\ctikzset{tripoles/fd inst amp/height/.initial=1.4}
-\ctikzset{tripoles/fd inst amp/input height/.initial=.5}
-\ctikzset{tripoles/fd inst amp/up pos/.initial=.4}
-\ctikzset{tripoles/fd inst amp/refv pos/.initial=.7}
-\ctikzset{tripoles/fd inst amp/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolute font size needed!
-\ctikzset{tripoles/inst amp ra/width/.initial=2.4} % instrumentation amplifier with ra gain resistance added
-\ctikzset{tripoles/inst amp ra/port width/.initial=.7}
-\ctikzset{tripoles/inst amp ra/height/.initial=2.9}
-\ctikzset{tripoles/inst amp ra/input height/.initial=.7}
-\ctikzset{tripoles/inst amp ra/up pos/.initial=.4}
-\ctikzset{tripoles/inst amp ra/refv pos/.initial=.7}
-\ctikzset{tripoles/inst amp ra/ra pos/.initial=.6}
-\ctikzset{tripoles/inst amp ra/font/.initial= \fontsize{10}{0}\selectfont\boldmath}%absolute font size needed!
-\ctikzset{tripoles/plain amp/width/.initial=1.7}
-\ctikzset{tripoles/plain amp/port width/.initial=.7}
-\ctikzset{tripoles/plain amp/height/.initial=1.4}
-\ctikzset{tripoles/plain amp/input height/.initial=.5}
-\ctikzset{tripoles/plain amp/up pos/.initial=.45}
-
-\ctikzset{tripoles/thyristor/height/.initial=1.10}
-\ctikzset{tripoles/thyristor/height 2/.initial=.5}
-\ctikzset{tripoles/thyristor/width/.initial=1.0}
-\ctikzset{tripoles/thyristor/diode height/.initial=.5}
-\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
-\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
-\ctikzset{tripoles/triac/height/.initial=1.1}
-\ctikzset{tripoles/triac/width/.initial=1}
-\ctikzset{tripoles/triac/diode width left/.initial=.3}
-\ctikzset{tripoles/triac/diode width right/.initial=.3}
-
-%% Cute switches
-\ctikzset{bipoles/cuteswitch/shape/.initial={ocirc}}
-\ctikzset{bipoles/cuteswitch/height/.initial=.6}
-\ctikzset{bipoles/cuteswitch/height 2/.initial=.2}
-\ctikzset{bipoles/cuteswitch/width/.initial=.50}
-\ctikzset{bipoles/cuteswitch/thickness/.initial=1}
-
-\ctikzset{tripoles/spdt/width/.initial=.85}
-\ctikzset{tripoles/spdt/height/.initial=.45}
-\ctikzset{tripoles/spdt/margin/.initial=.45}
-
-\ctikzset{tripoles/toggleswitch/height/.initial=.8}
-\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
-\ctikzset{tripoles/toggleswitch/width/.initial=.80}
-
-\ctikzset{tripoles/mixer/width/.initial=0.7}
-\ctikzset{tripoles/adder/width/.initial=0.7}
-\ctikzset{tripoles/circulator/width/.initial=.7}
-\ctikzset{tripoles/oscillator/width/.initial=.7}
-
-
-\ctikzset{tripoles/wilkinson/height/.initial=1.3}
-\ctikzset{tripoles/wilkinson/width/.initial=1.3}
-
-\ctikzset{quadpoles/transformer/inner/.initial=0.4}
-\ctikzset{quadpoles/transformer/width/.initial=1.5}
-\ctikzset{quadpoles/transformer/width1/.initial=.4}
-\ctikzset{quadpoles/transformer/height/.initial=1.5}
-\ctikzset{quadpoles/transformer/height1/.initial=.8}
-\ctikzset{quadpoles/transformer core/inner/.initial=0.4}
-\ctikzset{quadpoles/transformer core/width/.initial=1.5}
-\ctikzset{quadpoles/transformer core/height/.initial=1.5}
-\ctikzset{quadpoles/transformer core/core height/.initial=.5}
-\ctikzset{quadpoles/transformer core/core width/.initial=.05}
-\ctikzset{quadpoles/gyrator/inner/.initial=0.4}
-\ctikzset{quadpoles/gyrator/width/.initial=1.5}
-\ctikzset{quadpoles/gyrator/height/.initial=1.5}
-\ctikzset{quadpoles/fourport/width/.initial=1.3}
-\ctikzset{quadpoles/fourport/height/.initial=1.3}
-\ctikzset{quadpoles/coupler/width/.initial=1.3}
-\ctikzset{quadpoles/coupler/height/.initial=1.3}
-\ctikzset{quadpoles/coupler2/width/.initial=1.3}
-\ctikzset{quadpoles/coupler2/height/.initial=1.3}
-
-\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
-
-\ctikzset{quadpoles style/.is choice}
-\ctikzset{quadpoles style/inward/.code={ % default value
- \ctikzset{quadpoles/transformer/inner=0.4}
- \ctikzset{quadpoles/transformer/width=1.5}
- \ctikzset{quadpoles/transformer core/inner=0.4}
- \ctikzset{quadpoles/transformer core/width=1.5}
- \ctikzset{quadpoles/gyrator/inner=0.4}
- \ctikzset{quadpoles/gyrator/width=1.5}
- }
-}
-\ctikzset{quadpoles style/inline/.code={ % now horizontal baffle
- \ctikzset{quadpoles/transformer/inner=1}
- \ctikzset{quadpoles/transformer/width=0.6}
- \ctikzset{quadpoles/transformer core/inner=1}
- \ctikzset{quadpoles/transformer core/width=0.6}
- \ctikzset{quadpoles/gyrator/inner=1}
- \ctikzset{quadpoles/gyrator/width=0.6}
- }
-}
-
-
-%
-% multipoles
-%
-\ctikzset{multipoles/thickness/.initial=2}
-\ctikzset{multipoles/font/.initial=\tiny}
-% DIP (dual in line package) chips
-\ctikzset{multipoles/dipchip/width/.initial=1.2}
-\ctikzset{multipoles/dipchip/num pins/.initial=8}
-\ctikzset{multipoles/dipchip/pin spacing/.initial=0.4}
-\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/dipchip/num pins=#1}}}
-% QFP (quad flat package) chips
-\ctikzset{multipoles/qfpchip/num pins/.initial=8}
-\ctikzset{multipoles/qfpchip/pin spacing/.initial=0.4}
-\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/qfpchip/num pins=#1}}}
-% chip numbers
-\newif\ifpgf@circuit@chip@shownumbers\pgf@circuit@chip@shownumberstrue
-\pgfkeys{/tikz/show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
-\ctikzset{show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
-\pgfkeys{/tikz/hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
-\ctikzset{hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
-\newif\ifpgf@circuit@chip@straightnumbers\pgf@circuit@chip@straightnumberstrue
-\pgfkeys{/tikz/straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
-\ctikzset{straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
-\pgfkeys{/tikz/rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
-\ctikzset{rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
-% external chip pins
-\ctikzset{multipoles/external pins thickness/.initial=1}
-\ctikzset{multipoles/external pins width/.initial=0.2}
-\ctikzset{multipoles/external pad fraction/.initial=0}
-\pgfkeys{/tikz/external pins width/.add code={}{\ctikzset{multipoles/external pins width=#1}}}
-\pgfkeys{/tikz/external pad fraction/.add code={}{\ctikzset{multipoles/external pad fraction=#1}}}
-% topmarks
-\newif\ifpgf@circuit@chip@topmark\pgf@circuit@chip@topmarktrue
-\pgfkeys{/tikz/topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
-\ctikzset{topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
-\pgfkeys{/tikz/no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
-\ctikzset{no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
-
-% rotary switch by Romano
-\ctikzset{multipoles/rotary/thickness/.initial=1}
-\ctikzset{multipoles/rotary/shape/.initial=ocirc}
-\ctikzset{multipoles/rotary/channels/.initial=5}
-\ctikzset{multipoles/rotary/angle/.initial=60}
-\ctikzset{multipoles/rotary/wiper/.initial=20}
-\ctikzset{multipoles/rotary/arrow/.is choice}
-\newif\ifpgf@circ@rotaryarrow\pgf@circ@rotaryarrowfalse
-\newif\ifpgf@circ@rotaryarrow@cw\pgf@circ@rotaryarrow@cwfalse
-\newif\ifpgf@circ@rotaryarrow@ccw\pgf@circ@rotaryarrow@ccwfalse
-\ctikzset{multipoles/rotary/arrow/none/.code={\pgf@circ@rotaryarrowfalse\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwfalse}}
-\ctikzset{multipoles/rotary/arrow/both/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwtrue}}
-\ctikzset{multipoles/rotary/arrow/cw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwfalse}}
-\ctikzset{multipoles/rotary/arrow/ccw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwtrue}}
-
-\tikzset{%
- rotary switch/.style args={#1in#2wiper#3}{
- shape=rotaryswitch,
- /tikz/circuitikz/multipoles/rotary/channels=#1,
- /tikz/circuitikz/multipoles/rotary/angle=#2,
- /tikz/circuitikz/multipoles/rotary/wiper=#3,
- },
- rotary switch -/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=none,
- },
- rotary switch <-/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=ccw,
- },
- rotary switch ->/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=cw,
- },
- rotary switch <->/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=both,
- },
- % Notice that these should be the same as the initial values of the keys
- rotary switch/.default={5 in 60 wiper 20 },
- rotary switch -/.default={5 in 60 wiper 20 },
- rotary switch <-/.default={5 in 60 wiper 20 },
- rotary switch ->/.default={5 in 60 wiper 20 },
- rotary switch <->/.default={5 in 60 wiper 20 },
-}
-
-% %Mechanical section
-\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
-\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
-\ctikzset{bipoles/spring/height/.initial=.5}
-\ctikzset{bipoles/spring/width/.initial=.5}
-\ctikzset{bipoles/mass/height/.initial=.55}
-\ctikzset{bipoles/mass/box height/.initial=.4}
-\ctikzset{bipoles/mass/width/.initial=.5}
-
-\ctikzset{bipoles/damper/height/.initial=.35}
-\ctikzset{bipoles/damper/length/.initial=.3}
-\ctikzset{bipoles/damper/width/.initial=.4}
-
-
-\ctikzset{bipole/.is family}
-\ctikzset{bipole/kind/.initial = }
-\ctikzset{bipole/name/.initial = }
-\newif\ifpgf@circuit@bipole@isvoltage
-\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
-\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
-\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
-\newif\ifpgf@circuit@bipole@strokedsymbol
-\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
-\newif\ifpgf@circuit@bipole@iscurrent
-\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
-
-\ctikzset{bipole/voltage/.is family}
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-\newif\ifpgf@circuit@bipole@voltage@below
-\ctikzset{bipole/voltage/position/.is choice}
-\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
-\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
-
-\ctikzset{bipole/voltage/label/unit/.initial=}
-\ctikzset{bipole/voltage/label/name/.initial=}
-
-\ctikzset{bipole/current/.is family}
-\newif\ifpgf@circuit@bipole@current@backward
-\ctikzset{bipole/current/direction/.is choice}
-\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
-\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
-\newif\ifpgf@circuit@bipole@current@before
-\ctikzset{bipole/current/x position/.is choice}
-\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
-\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
-\newif\ifpgf@circuit@bipole@current@below
-\ctikzset{bipole/current/y position/.is choice}
-\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
-\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
-\ctikzset{bipole/current/label/unit/.initial=}
-\ctikzset{bipole/current/label/name/.initial=}
-
-\ctikzset{bipole/flow/.is family}
-\newif\ifpgf@circuit@bipole@flow@backward
-\ctikzset{bipole/flow/direction/.is choice}
-\ctikzset{bipole/flow/direction/forward/.code={\pgf@circuit@bipole@flow@backwardfalse}}
-\ctikzset{bipole/flow/direction/backward/.code={\pgf@circuit@bipole@flow@backwardtrue}}
-\newif\ifpgf@circuit@bipole@flow@before
-\ctikzset{bipole/flow/x position/.is choice}
-\ctikzset{bipole/flow/x position/after/.code={\pgf@circuit@bipole@flow@beforefalse}}
-\ctikzset{bipole/flow/x position/before/.code={\pgf@circuit@bipole@flow@beforetrue}}
-\newif\ifpgf@circuit@bipole@flow@below
-\ctikzset{bipole/flow/y position/.is choice}
-\ctikzset{bipole/flow/y position/above/.code={\pgf@circuit@bipole@flow@belowfalse}}
-\ctikzset{bipole/flow/y position/below/.code={\pgf@circuit@bipole@flow@belowtrue}}
-\ctikzset{bipole/flow/label/unit/.initial=}
-\ctikzset{bipole/flow/label/name/.initial=}
-\ctikzset{flow/distance/.initial = .5}
-\ctikzset{flow/offset/.initial = .2}%distance between flow-arrow and conductor
-
-\ctikzset{bipole/label/.is family}
-\ctikzset{bipole/label/position/.initial=90}
-\ctikzset{bipole/label/unit/.initial=}
-\ctikzset{bipole/label/name/.initial=}
-\ctikzset{bipole/annotation/.is family}
-\ctikzset{bipole/annotation/position/.initial=-90}
-\ctikzset{bipole/annotation/unit/.initial=}
-\ctikzset{bipole/annotation/name/.initial=}
-
-\newif\ifpgf@circuit@europeanresistor
-\ctikzset{resistor/.is choice}
-\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
-\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
-
-\ctikzset{inductor/.is choice}
-\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
-\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
-\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
-
-\newif\ifpgf@circuit@strokediode
-\newif\ifpgf@circuit@fulldiode
-\pgf@circuit@strokediodefalse
-\pgf@circuit@fulldiodefalse
-
-\ctikzset{diode/.is choice}
-\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
-\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
-\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
-
-\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full }}
-\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty }}
-\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke }}
-
-\ctikzset{thickness/.initial=2}
-\ctikzset{color/.initial=black}
-\pgfkeys{/tikz/color/.add code={}{\ctikzset{color={#1}}}}
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circ@siunitx@res
-
-\ctikzset{straight/.is choice}
-\ctikzset{straightvoltage value/.initial=true}
-\ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}}
-\ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}}
-\ctikzset{straightvoltage/.style = {/tikz/circuitikz/straight=true}}
-\newif\ifpgf@circuit@bipole@voltage@straight
-\ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight}
-
-
-\ctikzset{voltage/.is family}
-\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
-\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
-\ctikzset{voltage/bump a/.initial=1.2}
-\ctikzset{voltage/bump b/.initial=1.5}
-\ctikzset{voltage/shift/.initial=0.0} % shift form the cable of voltage symbols
-\ctikzset{voltage shift/.style={voltage/shift=#1}}
-\tikzset{voltage shift/.style={\circuitikzbasekey/voltage/shift=#1}}
-\ctikzset{voltage/european label distance/.initial=1.4}
-\ctikzset{voltage/american label distance/.initial=1.1}
-% shaping the +/- sign, see pgfcircvoltage.tex
-\ctikzset{voltage/american font/.initial={}}
-\ctikzset{voltage/american plus/.initial={$+$}}
-\ctikzset{voltage/american minus/.initial={$-$}}
-
-% special cases
-\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
-\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
-\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
-\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
-\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
-%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
-%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
-
-\ctikzset{current/.is family}
-\ctikzset{current/distance/.initial = .5}
-
-
-\tikzset{american currents/.style = { \circuitikzbasekey/current = american } }
-\tikzset{european currents/.style = { \circuitikzbasekey/current = european } }
-\tikzset{american voltages/.style = { \circuitikzbasekey/voltage = american } }
-\tikzset{european voltages/.style = { \circuitikzbasekey/voltage = european } }
-\tikzset{american resistors/.style = { \circuitikzbasekey/resistor = american } }
-\tikzset{european resistors/.style = { \circuitikzbasekey/resistor = european } }
-
-\newif\ifpgf@circuit@europeangfsurgearrester
-\ctikzset{gas filled surge arrester choice/.is choice}
-\ctikzset{gas filled surge arrester choice/european/.code= {\pgf@circuit@europeangfsurgearrestertrue } }
-\ctikzset{gas filled surge arrester choice/american/.code= {\pgf@circuit@europeangfsurgearresterfalse } }
-
-\tikzset{american gas filled surge arrester set/.style = { \circuitikzbasekey/gas filled surge arrester choice=american } }
-\tikzset{european gas filled surge arrester set/.style = { \circuitikzbasekey/gas filled surge arrester choice=european } }
-\tikzset{american inductors/.style = { \circuitikzbasekey/inductor = american } }
-\tikzset{european inductors/.style = { \circuitikzbasekey/inductor = european } }
-\tikzset{cute inductors/.style = { \circuitikzbasekey/inductor = cute } }
-\tikzset{american ports/.style = { \circuitikzbasekey/logic ports = american } }
-\tikzset{european ports/.style = { \circuitikzbasekey/logic ports = european } }
-\tikzset{european/.style = { european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester set} }
-\tikzset{american/.style = { american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester set} }
-\tikzset{cute/.style = { european currents, european voltages, american resistors, cute inductors, american ports } }
-
-% I should try to make the tree clearer (this voltage conflicts with the options above)
-
-\newif\ifpgf@circuit@europeanvoltage
-\ctikzset{voltage/.is choice}
-\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse } }
-\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue } }
-
-\newif\ifpgf@circuit@europeancurrent
-\ctikzset{current/.is choice}
-\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse }
-\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue }
-
-% noise sources
-\ctikzset{bipoles/noise sources/fillcolor/.initial=gray!50}
-
-\ctikzset{label/align/.is choice}
-\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
-\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
-\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
-
-% seven segment displays by RGtti
-
-\newif\ifpgf@circ@sevenseg@dot
-\newif\ifpgf@circ@sevenseg@box
-\def\pgf@circ@sevenseg@dotstate{empty}
-\ctikzset{seven seg/.is family}
-\ctikzset{seven seg/dot/.is choice}
-% none means no dot, not space for it. Empty means no dot, but space
-\ctikzset{seven seg/dot/none/.code={\pgf@circ@sevenseg@dotfalse}}
-\ctikzset{seven seg/dot/empty/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{empty}}}
-\ctikzset{seven seg/dot/off/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{off}}}
-\ctikzset{seven seg/dot/on/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{on}}}
-%
-\ctikzset{seven seg/width/.initial=0.4}% relative to \pgf@circ@Rlen
-\ctikzset{seven seg/thickness/.initial=4pt}% segment thickness
-\ctikzset{seven seg/segment sep/.initial=0.2pt}% gap between segments
-\ctikzset{seven seg/box sep/.initial=1pt}% external box gap
-\ctikzset{seven seg/color on/.initial=red}% color for segment "on"
-\ctikzset{seven seg/color off/.initial=gray!20!white} % ...and "off"
-\ctikzset{seven seg/box/.is choice}
-\ctikzset{seven seg/box/off/.code={\pgf@circ@sevenseg@boxfalse}}
-\ctikzset{seven seg/box/on/.code={\pgf@circ@sevenseg@boxtrue}}
-
-\ctikzset{seven seg/bits/.initial=0000000}
-
-\ctikzset{seven seg/value/.code={
- \edef\@@tmp{#1}
- \edef\@@n{0} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111110}\fi
- \edef\@@n{1} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110000}\fi
- \edef\@@n{2} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1101101}\fi
- \edef\@@n{3} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111001}\fi
- \edef\@@n{4} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110011}\fi
- \edef\@@n{5} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011011}\fi
- \edef\@@n{6} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011111}\fi
- \edef\@@n{7} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110000}\fi
- \edef\@@n{8} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111111}\fi
- \edef\@@n{9} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111011}\fi
- \edef\@@n{10}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
- \edef\@@n{11}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
- \edef\@@n{12}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
- \edef\@@n{13}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
- \edef\@@n{14}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
- \edef\@@n{15}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
- \edef\@@n{A} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
- \edef\@@n{B} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
- \edef\@@n{C} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
- \edef\@@n{D} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
- \edef\@@n{E} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
- \edef\@@n{F} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
- \edef\@@n{a} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
- \edef\@@n{b} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
- \edef\@@n{c} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
- \edef\@@n{d} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
- \edef\@@n{e} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
- \edef\@@n{f} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
- \edef\@@n{-} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0000001}\fi
-}}
-
-\tikzset{%
- seven segment val/.style args={#1dot#2box#3}{
- shape=bare7seg,
- /tikz/circuitikz/seven seg/value=#1,
- /tikz/circuitikz/seven seg/dot=#2,
- /tikz/circuitikz/seven seg/box=#3,
- },
- seven segment bits/.style args={#1dot#2box#3}{
- shape=bare7seg,
- /tikz/circuitikz/seven seg/bits=#1,
- /tikz/circuitikz/seven seg/dot=#2,
- /tikz/circuitikz/seven seg/box=#3,
- },
-}
-
-
-%%%%%%%%%% new
-\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
-
-% Electronic tubes: diodetube, triode, tetrode and pentode
-\ctikzset{tubes/width/.initial=1} % relative width
-\ctikzset{tubes/height/.initial=1.4} % relative height
-\ctikzset{tubes/tube radius/.initial=0.40} % radius of tube circle
-\ctikzset{tubes/anode distance/.initial=0.40} % distance from center
-\ctikzset{tubes/anode width/.initial=0.40} % width of an anode/plate
-\ctikzset{tubes/grid protrusion/.initial=0.25} % distance from center
-\ctikzset{tubes/grid dashes/.initial=5} % number of grid dashes
-\ctikzset{tubes/grid separation/.initial=0.2} % separation between grids
-\ctikzset{tubes/grid shift/.initial=0.0} % y shift grids from center
-\ctikzset{tubes/cathode distance/.initial=0.40} % distance from grid
-\ctikzset{tubes/cathode width/.initial=0.40} % width of an cathode
-\ctikzset{tubes/cathode corners/.initial=0.06} % corners of the cathode wire
-\ctikzset{tubes/cathode right extend/.initial=0.075} % extension at the right side
-\ctikzset{tubes/filament distance/.initial=0.1} % distance from cathode
-\ctikzset{tubes/filament angle/.initial=15} % Angle from centerpoint
-
-\newif\ifpgf@circuit@tubes@filament\pgf@circuit@tubes@filamentfalse
-\pgfkeys{/tikz/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
-\ctikzset{tubes/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
-\newif\ifpgf@circuit@tubes@nocathode\pgf@circuit@tubes@nocathodefalse
-\pgfkeys{/tikz/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
-\ctikzset{tubes/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
-\newif\ifpgf@circuit@tubes@fullcathode\pgf@circuit@tubes@fullcathodefalse
-\pgfkeys{/tikz/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
-\ctikzset{tubes/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
-
-%%%---------- close: tex/pgfcirc.defines
-%%%%%%%%%%% Springe nach tex/pgfcircutils
-%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%\def\pgf@circ@handleSI#1{%
- % \pgf@circ@siunitx@resfalse
-%
- % \edef\len{\stringlength[e]{#1}}
- %\testmatchingchar[e]{#1}{\len}{>}%
- %\ifmatchingchar%
- % \ifnum\findchars{#1}{<}=0
- % \def\pgf@circ@handleSI@val{\substring{#1}{1}{\findchars{#1}{<}-1}}
- %\def\pgf@circ@handleSI@unit{\substring{#1}{\findchars{#1}{<}-1}+1}{\stringlength{#1}}
- %\pgf@circ@siunitx@restrue
-% \else
-% \fi
- %\else
- %\fi
-%}
-
-\def\pgf@circ@handleSI#1{
- \noexpandarg
- \def\pgf@temp{}
- \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
- \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
-
- \ifnum\pgf@circ@handleSI@unit@len=0
- \pgf@circ@siunitx@resfalse
- \else
- \IfEndWith{#1}{>}{
- \pgf@circ@siunitx@restrue
- \noexpandarg
- \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
- %\typeout{si |#1|}
- }{
- \pgf@circ@siunitx@resfalse
- %\typeout{no si |#1|}
- }
-\fi
-}
-
-\def\pgf@circ@ifkeyempty#1{
- \pgfextra{
- \ctikzset{#1/.get=\pgf@circ@temp}
- \edef\pgf@temp{}
- }
- \ifx\pgf@circ@temp\pgf@temp
- }
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Math routines
-
-\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
-
-%%%---------- close: tex/pgfcircutils
-
-%%%%%%%%%%% Springe nach tex/pgfcircshapes
-%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Other shapes
-
-%% Nothing
-
-\pgfdeclareshape{emptyshape}{
- \savedanchor{\northeast}{%
- \pgf@x=.5\wd\pgfnodeparttextbox%
- \pgf@y=.5\ht\pgfnodeparttextbox%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
- \anchor{center}{
- \pgfpointorigin
- }
-}
-
-%% Full terminal
-
-\pgfdeclareshape{circ}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}}
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetfillopacity{1.0}
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Empty terminal
-
-\pgfdeclareshape{ocirc}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}}
- }
-
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgfsetfillcolor{white}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{1.0}
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Diamond terminal
-
-\pgfdeclareshape{diamondpole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
- \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
- \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
- \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
- % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
- \pgfpointintersectionoflines
- {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
- % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgf@x=\@@switchx\pgf@x
- \pgf@y=\@@switchy\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgftransformrotate{45}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetfillopacity{1.0}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% Diamond terminal, unfilled
-
-\pgfdeclareshape{odiamondpole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
- \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
- \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
- \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
- % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
- \pgfpointintersectionoflines
- {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
- % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgf@x=\@@switchx\pgf@x
- \pgf@y=\@@switchy\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgftransformrotate{45}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgfsetfillcolor{white}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{1.0}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% square terminal, filled
-
-\pgfdeclareshape{squarepole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpointborderrectangle
- {\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetfillopacity{1.0}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-%% square terminal, unfilled
-
-\pgfdeclareshape{osquarepole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpointborderrectangle
- {\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgfsetfillcolor{white}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{1.0}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-% BNC connector
-
-\pgfdeclareshape{bnc}{
- \anchor{center}{
- \pgfpointorigin
- }
- % BNC size is 2.5 times the size of the internal "ocirc"
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
- \pgf@y=2.5\pgf@y
- \pgf@x=-\pgf@y
- }
- % center is on the opening
- \anchor{center}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{zero}{ \pgfpointorigin }
- \anchor{hot}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{shield}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- % geo-anchors
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{right}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{left}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{2.5*\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}{2.5*\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}}
- }
- \behindforegroundpath{
- \pgfextracty{\pgf@circ@res@other}{\northwest}
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgflinewidth}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- % external circle
- \pgfscope
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{-2\pgf@circ@res@other}{-2\pgf@circ@res@other}}
- {\pgfpoint{2\pgf@circ@res@other}{2\pgf@circ@res@other}}
- % next the opening to the right
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- {\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@step}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@other}
- \pgfusepath{draw}
- \endpgfscope
- % internal circle
- \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@step}
- \pgf@circ@draworfill
- % and the contact line to the right
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-%% Fill for correct rectangular joins
-
-\pgfdeclareshape{rectjoinfill}{
- \savedanchor{\northeast}{%
- \pgf@x=.5\pgflinewidth%
- \pgf@y=.5\pgflinewidth%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfpathrectanglecorners
- {\pgfpoint{0}{.5\pgflinewidth}}
- {\pgfpoint{0}{-.5\pgflinewidth}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-
-%% Current arrow
-
-\pgfdeclareshape{currarrow}{
- \savedanchor{\northeast}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \pgfkeysvalueof{/tikz/circuitikz/current arrow scale}
- \pgf@x=.5\pgf@circ@res@step
- \pgf@y=\pgf@x%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{tip}{
- \pgfpointorigin
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \pgfkeysvalueof{/tikz/circuitikz/current arrow scale}
- \pgf@x =\pgf@circ@res@step
- }
- \behindforegroundpath{
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \pgfkeysvalueof{/tikz/circuitikz/current arrow scale}
-
- \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw,fill}
-
- \endpgfscope
- }
-}
-
-%% Flow arrow
-
-\pgfdeclareshape{flowarrow}{
- \savedanchor{\northeast}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \pgfkeysvalueof{/tikz/circuitikz/current arrow scale}
- \pgf@y=.5\pgf@circ@res@step
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 4
- \pgf@x=\pgf@circ@res@step%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{tip}{
- \pgfpointorigin
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \pgfkeysvalueof{/tikz/circuitikz/current arrow scale}
- \pgf@x =\pgf@circ@res@step
- }
- \behindforegroundpath{
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 4
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{draw}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfnode{currarrow}{tip}{}{}{\pgfusepath{fill}}
- \endpgfscope
- }
-}
-
-%% Input arrow
-
-\pgfdeclareshape{inputarrow}{
- \savedanchor{\northeast}{% this is really not northeast, really -northwest
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \pgfkeysvalueof{/tikz/circuitikz/current arrow scale}
- \pgf@y=.5\pgf@circ@res@step
- \pgf@x=1.7\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax\pgf@x=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast\pgf@x=0cm\relax}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@x=0cm\relax}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \savedanchor{\tip}{
- \pgfpointorigin
- }
- \anchor{center}{
- \tip
- }
- \anchor{tip}{
- \tip
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 16
-
- \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfusepath{fill}
-
- \endpgfscope
- }
-}
-
-
-%% box
-
-\pgfdeclareshape{box}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@circ@res@step = 0.5\pgf@circ@res@step
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgf@circ@draworfill
- \endpgfscope
- }
-
-}
-
-
-% full nodes for wire crossing
-
-\pgfdeclareshape{jump crossing}
-{
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \behindbackgroundpath{
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- % horizontal jumper
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
- \pgfsetbeveljoin
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % vertical, broken path
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0pt}{0.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-\pgfdeclareshape{plain crossing}
-{
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \behindbackgroundpath{
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- % horizontal jumper
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % vertical, broken path
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{0.1\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0pt}{0.1\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-
-%%%---------- close: tex/pgfcircshapes
-%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
-%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Monopoles
-
-%% Ground symbol
-% #1 -> name
-% #2 -> width
-% #3 -> depth
-% #4 -> code
-\long\def\pgf@circ@declareground#1#2#3#4{
- \pgfdeclareshape{#1}{
- \savedanchor{\southeast}{
- \pgf@x=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
- \pgf@x=#2\pgf@x
- \pgf@y=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
- \pgf@y=-#3\pgf@y
- }
- \anchor{north}{\pgfpointorigin}
- \anchor{north east}{\southeast\pgf@y=0pt\relax}
- \anchor{east}{\southeast\pgf@y=.5\pgf@y}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\southeast\pgf@y=.5\pgf@y\pgf@x=-\pgf@x}
- \anchor{north west}{\southeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- \anchor{center}{\pgfpointorigin}
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- #4
- \endpgfscope
- }
- }
-}
-
-
-\pgf@circ@declareground{ground}{0.6}{1.6}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-\pgf@circ@declareground{tlground}{0.6}{0.4}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-
-\pgf@circ@declareground{rground}{0.6}{1}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\ctikzvalof{monopoles/rground/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-\pgf@circ@declareground{tground}{0.6}{0}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-}
-
-\pgf@circ@declareground{sground}{0.6}{1.8}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
- \pgfpathclose
- \pgf@circ@draworfill
-}
-
-% noiseless ground
-\pgf@circ@declareground{nground}{0.9}{1.6}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.9\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpatharc{0}{180}{0.9\pgf@circ@res@step}
- \pgfusepath{draw}
-}
-
-% protective ground
-\pgf@circ@declareground{pground}{0.9}{1.8}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathcircle{\pgfpoint{0pt}{-0.9\pgf@circ@res@step}}{0.9\pgf@circ@res@step}
- \pgfusepath{draw}
-}
-
-% chassis ground
-\pgf@circ@declareground{cground}{1}{2}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-1.00\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{ 0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{ 0.50\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.25\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-% Contributed by @fotesan https://github.com/fotesan
-
-\pgf@circ@declareground{eground}{1.1}{1.7}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.1\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-\pgf@circ@declareground{eground2}{1.1}{1.7}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/monopoles/tground/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.45\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-% Contributed by Leonardo Azzinnari
-\pgfdeclareshape{tlinestub}{
- \savedanchor{\northeast}{%
- \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
- \pgf@x=1.625\pgf@circ@res@step
- \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
- \pgf@y=.25\pgf@circ@res@step%
- }
- % the center is on the left side of the shape for facility of usage
- \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0.5\pgf@x\relax}
- \anchor{west}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=0cm\relax}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@x=0cm\pgf@y=-\pgf@y}
- \anchor{center}{\pgfpointorigin}
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
-
- \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@Rlen
-
- \pgfscope\begin{pgftransparencygroup}
- \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgf@circ@maybefill
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
- \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \end{pgftransparencygroup} \endpgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- }
-}
-
-%% New antennas without tails
-
-% main body
-\def\pgf@circ@antennabody{%
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@Rlen
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{2\pgf@circ@res@step}}
- \pgfsetbeveljoin
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{2\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-% Waves for the antennas.
-\def\pgf@circ@antennawaves{%
- \pgfscope
- % define a triangle for clipping the waves
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathclose
- \pgfusepath{clip}
- % ...and build the waves as clipped circles
- \pgf@circ@count@a=8\pgf@circ@res@other=0.5\pgf@circ@res@step
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>2
- \pgfpathcircle{\pgfpoint{0pt}{\pgf@circ@res@step}}{\the\pgf@circ@count@a*\pgf@circ@res@other}
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-% additional shape with the waves
-\pgfdeclareshape{waves}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0pt}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
- \anchor{bottom}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{north east}{\northeast}
- \anchor{east}{\northeast\pgf@y=0pt}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@Rlen
- \pgf@circ@res@step=0.5\pgf@circ@res@step
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfscope
- % define a triangle for clipping the waves
- \pgfpathmoveto{\pgfpoint{-2\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfpathclose
- \pgfusepath{clip}
- % ...and build the waves as clipped circles
- \c@pgf@counta=8\pgf@circ@res@other=0.5\pgf@circ@res@step
- \pgfmathloop%
- \ifnum\c@pgf@counta>1
- \pgfpathcircle{\pgfpoint{-2\pgf@circ@res@step}{0pt}}{\the\c@pgf@counta*\pgf@circ@res@other}
- \advance\c@pgf@counta-1\relax%
- \repeatpgfmathloop
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% the three types of antennas: simple, TX, RX. Notice that you can flip them...
-
-\pgfdeclareshape{bareantenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=2\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{bottom}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{south}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@antennabody
- }
-}
-
-\pgfdeclareshape{bareTXantenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=2\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
- \pgf@x=\dimexpr-\pgf@x-\wd\pgfnodeparttextbox\relax
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{waves}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@Rlen
- \pgf@x=4.2\pgf@circ@res@step
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{bottom}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{south}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@antennabody
- \pgf@circ@antennawaves
- }
-}
-
-\pgfdeclareshape{bareRXantenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=2\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{waves}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@Rlen
- \pgf@x=-4.2\pgf@circ@res@step
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{bottom}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{south}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@antennabody
- \pgftransformxshift{-5.2\pgf@circ@res@step}
- \pgf@circ@antennawaves
- }
-}
-
-% Microstrip monopoles
-
-\pgfdeclareshape{mslstub}{
- \savedanchor{\southeast}{
- \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@Rlen
- \pgf@y=-.5\pgf@y
- }
- \savedanchor{\northwest}{
- \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@Rlen
- \pgf@x=-.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- }
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{east}{\southeast\pgf@y=0pt\relax}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
- \anchor{north west}{\northwest}
- %
- \anchor{center}{\northwest\pgf@y=0pt\relax}
- \anchor{left}{\northwest\pgf@y=0pt\relax}
- \anchor{right}{\southeast\pgf@y=0pt\relax}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- \behindbackgroundpath{
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@right}{\southeast}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@down}{\southeast}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{msrstub}{
- \savedanchor{\southeast}{
- \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt\relax
- }
- \savedanchor{\northwest}{
- \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@Rlen
- \pgf@x=-.5\pgf@x
- \pgf@y=\ctikzvalof{monopoles/msrstub/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- }
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{east}{\southeast\pgf@y=0pt\relax}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
- \anchor{north west}{\northwest}
- %
- \anchor{center}{\pgfpointorigin}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- \behindbackgroundpath{
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@right}{\southeast}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@down}{\southeast}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointpolar{135}{\pgf@circ@res@step}}
- \pgfpatharc{135}{45}{\pgf@circ@res@step}
- \pgfpathlineto{\pgfpointpolar{45}{\pgf@circ@res@up}}
- \pgfpatharc{45}{135}{\pgf@circ@res@up}
- \pgfclosepath
- % \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{msport}{
- \savedanchor{\southeast}{
- \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@Rlen
- \pgf@y=-.5\pgf@y
- }
- \savedanchor{\northwest}{
- \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@Rlen
- \pgf@x=-.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- }
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{east}{\southeast\pgf@y=0pt\relax}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
- \anchor{north west}{\northwest}
- %
- \anchor{center}{\northwest\pgf@y=0pt\relax}
- \anchor{left}{\northwest\pgf@y=0pt\relax}
- \anchor{right}{\southeast\pgf@y=0pt\relax}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr-.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- }
- \behindbackgroundpath{
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@right}{\southeast}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@down}{\southeast}
- \pgfmathsetlength{\pgf@circ@res@step}{0.5*\pgf@circ@res@up}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-% Legacy antennas (with tails)
-
-\def\pgf@circ@shift@antenna@xy#1#2{%
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
- \pgf@y=\dimexpr\pgf@y+#2\pgf@circ@res@step
- \pgf@x=\dimexpr\pgf@x+#1\pgf@circ@res@step
-\relax}
-
-\pgfdeclareshape{antenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
- \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=4\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{2}}
- \anchor{east}{\northeast\pgf@y=0cm\pgf@circ@shift@antenna@xy{0}{3}\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{4}\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{3}}
- \anchor{north east}{\northeast\pgf@circ@shift@antenna@xy{0}{2}}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{0}{4}}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{4}}
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
-
- \pgftransformxshift{ -4\pgf@circ@res@step }
-
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
-}
-
-
-\pgfdeclareshape{txantenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
- \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=4\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
- \anchor{east}{\northeast\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
- \anchor{north east}{\northeast\pgf@circ@shift@antenna@xy{4}{2}}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
- % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
-}
-
-
-\pgfdeclareshape{rxantenna}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@Rlen
- \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=4\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
- \anchor{east}{\northeast\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
- \anchor{north east}{\northeast\pgf@circ@shift@antenna@xy{4}{2}}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
- % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
-}
-
-% Vcc
-\pgfdeclareshape{vcc}{
- \savedanchor{\northeast}{%
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@circ@res@step
- \pgf@y=3\pgf@x%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
- \anchor{south}{\pgfpointorigin}
- \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{center}{\pgfpointorigin}
- \anchor{text}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=2\pgf@circ@res@step
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgfscope
- \edef\pgf@circ@temp{\ctikzvalof{monopoles/vcc/arrow}}\edef\pgf@temp{legacy}
- \ifx\pgf@temp\pgf@circ@temp
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \else
- \pgfsetarrowsend{\pgf@circ@temp}
- \fi
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% Vee
-\pgfdeclareshape{vee}{
- \savedanchor{\northeast}{%
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@circ@res@step
- \pgf@y=-3\pgf@x%
- }
- \anchor{south}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
- \anchor{north}{\pgfpointorigin}
- \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast}
- \anchor{south west}{\northeast\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast\pgf@y=0pt\relax}
- \anchor{north west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{center}{\pgfpointorigin}
- \anchor{text}{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=-2\pgf@circ@res@step
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
-
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@Rlen
- \pgfscope
- \edef\pgf@circ@temp{\ctikzvalof{monopoles/vee/arrow}}\edef\pgf@temp{legacy}
- \ifx\pgf@temp\pgf@circ@temp
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \else
- \pgfsetarrowsend{\pgf@circ@temp}
- \fi
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% match
-\pgfdeclareshape{match}{
- \savedanchor{\northeast}{%
- \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@Rlen
- \pgf@x=2\pgf@circ@res@step
- \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@Rlen
- \pgf@y=.5\pgf@circ@res@step%
- }
- % the center is on the left side of the shape for facility of usage
- \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=0pt\pgf@x=0.5\pgf@x\relax}
- \anchor{west}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=0cm\relax}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\pgfpointorigin}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
- \pgf@x=1.5\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \pgf@y=-1.5\ht\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
- \pgfusepath{fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \endpgfscope
- }
-}
-
-%%%---------- close: tex/pgfcircmonopoles
-%%%%%%%%%%% Springe nach tex/pgfcircbipoles
-%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%% Generic macro for defining a bipole shape
-% #1 - additional anchors
-% #2 - lower y-size of the bipole (from the center).
-% #3 - #shape is the name of the shape
-% #4 - upper y-size of the bipole (from the center)
-% #5 - width of the bipole
-% #6 - macros drawing the bipole
-
-
-\long\def\pgfcircdeclarebipole#1#2#3#4#5#6{
- \pgfdeclareshape{#3shape}{
-
- \savedanchor{\northeast}{
- \pgf@y=#4\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\northeastborder}{
- \pgf@y=#4\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwestborder}{
- \pgf@y=-#2\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=-#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwest}{
- \pgf@y=-#2\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-#5\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\centerpoint}{
- \pgf@circ@res@down=-#2\pgf@circ@Rlen
- \pgf@circ@res@up=#4\pgf@circ@Rlen
- \pgfpointorigin
- \pgf@y=\pgf@circ@res@up
- \advance\pgf@y by\pgf@circ@res@down
- \pgf@y=.5\pgf@y
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{n}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{north east}{
- \northeast
- }
- \anchor{north west}{
- \northeast
- \pgf@x=-\pgf@x
- }
- \anchor{ne}{
- \northeast
- }
- \anchor{nw}{
- \northeast
- \pgf@x=-\pgf@x
- }
- \anchor{e}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{s}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{south east}{
- \southwest
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \southwest
- }
- \anchor{se}{
- \southwest
- \pgf@x=-\pgf@x
- }
- \anchor{sw}{
- \southwest
- }
- \anchor{w}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{north}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{east}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{south}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{west}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{right}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{above}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{left}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{below}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{a}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{b}{
- \southwest
- \pgf@y=0cm
- }
- \savedanchor{\textanchor}{%
- \pgf@y=\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \anchor{text}{
- \textanchor
- }
- \anchorborder{%
- \ifpgf@circuit@bipole@inverted
- \pgf@circ@res@left=-\pgf@x
- \pgf@circ@res@right=-\pgf@y
- \else
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@right=\pgf@y
- \fi
- \ifdim\pgf@circ@res@right>0cm
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
- \else
- \southwestborder
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
- \fi
- }
-
- #1
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@zero = 0cm
- \pgf@circ@res@left = -\pgf@x
- \pgf@circ@res@right = \pgf@x
- \southwest
- \pgf@circ@res@down = \pgf@y
-
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- #6
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- }
- }
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Standard bipole shapes declarations
-
-%% Resistor
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/resistor/height}}
-{resistor}
-{\ctikzvalof{bipoles/resistor/height}}
-{\ctikzvalof{bipoles/resistor/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \divide \pgf@circ@res@step by 12
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-}
-
-
-
-%% Variable resistor
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vresistor/height}}
-{vresistor}
-{\ctikzvalof{bipoles/vresistor/height}}
-{\ctikzvalof{bipoles/vresistor/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \divide \pgf@circ@res@step by 12
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
-
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-%% Capacitor
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/capacitor/height}}
-{capacitor}
-{\ctikzvalof{bipoles/capacitor/height}}
-{\ctikzvalof{bipoles/capacitor/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/capacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
-}
-
-%% Capacitive sensor
-\pgfcircdeclarebipole
-{\anchor{label}{%
- \southwest
- \pgf@x=2.6\pgf@x
- \pgf@y=1.4\pgf@y
- }%
-}
-{\ctikzvalof{bipoles/capacitor/height}}
-{capacitivesens}
-{\ctikzvalof{bipoles/capacitor/height}}
-{\ctikzvalof{bipoles/capacitor/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/capacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{2.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-2.6\pgf@circ@res@right}{1.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-4.4\pgf@circ@res@right}{1.4\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Polar Capacitor
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/pcapacitor/height}}
-{polarcapacitor}
-{\ctikzvalof{bipoles/pcapacitor/height}}
-{\ctikzvalof{bipoles/pcapacitor/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/pcapacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgftransformrotate{-90}
- \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
-}
-
-%% Electrolytic Capacitor
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/ecapacitor/height}}
-{ecapacitor}
-{\ctikzvalof{bipoles/ecapacitor/height}}
-{\ctikzvalof{bipoles/ecapacitor/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/ecapacitor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
- \pgfsetrectcap
- % % % Draw plus pole
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
- % % Draw minus pole
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfsetfillcolor{black}
- \pgfusepath{draw,fill}
- \pgfsetfillcolor{black}
- % % plus pole annotation
- \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
- {\pgfkeysvalueof{/tikz/circuitikz/bipoles/ecapacitor/font} $+$}
-}
-
-%% Battery
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/battery/height}}
-{battery}
-{\ctikzvalof{bipoles/battery/height}}
-{\ctikzvalof{bipoles/battery/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 6
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \ifpgf@circ@fixbatteries
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-}
-
-
-%% Battery 1 % poles with equl thickness
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/battery1/height}}
-{battery1}
-{\ctikzvalof{bipoles/battery1/height}}
-{\ctikzvalof{bipoles/battery1/width}}
-{
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \ifpgf@circ@fixbatteries
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-}
-
-%% Battery 2 % negative pole thicker
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/battery2/height}}
-{battery2}
-{\ctikzvalof{bipoles/battery2/height}}
-{\ctikzvalof{bipoles/battery2/width}}
-{
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \ifpgf@circ@fixbatteries
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{3\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{3\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-}
-
-
-%% cute inductor
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
-{cuteinductor}
-{\ctikzvalof{bipoles/cuteinductor/height}}
-{\ctikzvalof{bipoles/cuteinductor/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% cute inductive sensor
-
-\pgfcircdeclarebipole
-{%
-{% anchor for labelling the type of dependency
- \anchor{label}{%
- \southwest
- \pgf@x=0.8\pgf@x
- \pgf@y=2.6\pgf@y
- }%
-}}
-{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
-{scuteinductor}
-{\ctikzvalof{bipoles/cuteinductor/height}}
-{\ctikzvalof{bipoles/cuteinductor/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% cute choke
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/cutechoke/lower coil height}}
-{cutechoke}
-{\ctikzvalof{bipoles/cutechoke/height}}
-{\ctikzvalof{bipoles/cutechoke/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cutechoke/coil aspect}*\ctikzvalof{bipoles/cutechoke/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/cutechoke/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cutechoke/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cutechoke/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cutechoke/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cutechoke/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}*\ctikzvalof{bipoles/cutechoke/cthick}\pgfstartlinewidth}
- \pgfusepath{stroke}
-
- \ifpgf@circuit@bipole@twolines
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}*\ctikzvalof{bipoles/cutechoke/cthick}\pgfstartlinewidth}
- \pgfusepath{stroke}
- \fi
-}
-
-%% variable cute inductor
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}
-{vcuteinductor}
-{\ctikzvalof{bipoles/vcuteinductor/height}}
-{\ctikzvalof{bipoles/vcuteinductor/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/vcuteinductor/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-%% american inductor
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/americaninductor/height 2}}
-{americaninductor}
-{\ctikzvalof{bipoles/americaninductor/height}}
-{\ctikzvalof{bipoles/americaninductor/width}}
-{
- \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@Rlen
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-
-%% american inductive sensor
-
-\pgfcircdeclarebipole
-{%
-{% anchor for labelling the type of dependency
- \anchor{label}{%
- \southwest
- \pgf@x=0.8\pgf@x
- \pgf@y=2.6\pgf@y
- }%
-}}
-{\ctikzvalof{bipoles/americaninductor/height 2}}
-{samericaninductor}
-{\ctikzvalof{bipoles/americaninductor/height}}
-{\ctikzvalof{bipoles/americaninductor/width}}
-{
- \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@Rlen
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% variable american inductor
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vamericaninductor/height 2}}
-{vamericaninductor}
-{\ctikzvalof{bipoles/vamericaninductor/height}}
-{\ctikzvalof{bipoles/vamericaninductor/width}}
-{
- \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@Rlen
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/vamericaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% Independent voltage source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vsource/height}}
-{vsource}
-{\ctikzvalof{bipoles/vsource/height}}
-{\ctikzvalof{bipoles/vsource/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-%% Independent voltage source - American style
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vsourceam/height}}
-{vsourceAM}
-{\ctikzvalof{bipoles/vsourceam/height}}
-{\ctikzvalof{bipoles/vsourceam/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$-$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$+$}
- \fi
-}
-
-
-
-%% Independent sinusoidal voltage source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vsourcesin/height}}
-{vsourcesin}
-{\ctikzvalof{bipoles/vsourcesin/height}}
-{\ctikzvalof{bipoles/vsourcesin/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Square Voltage source - contributed by Alistair Kwan
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vsourcesquare/height}}
-{vsourcesquare}
-{\ctikzvalof{bipoles/vsourcesquare/height}}
-{\ctikzvalof{bipoles/vsourcesquare/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Triangle Voltage source - contributed by Ralf Farkas
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vsourcetri/height}}
-{vsourcetri}
-{\ctikzvalof{bipoles/vsourcetri/height}}
-{\ctikzvalof{bipoles/vsourcetri/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% PV Source
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/pvsource/height}}
-{pvsource}
-{\ctikzvalof{bipoles/pvsource/height}}
-{\ctikzvalof{bipoles/pvsource/width}}
-{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %Arrow Part
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty Source
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/esource/height}}
-{esource}
-{\ctikzvalof{bipoles/esource/height}}
-{\ctikzvalof{bipoles/esource/width}}
-{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-}
-
-%% DC Current Source with open shape
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/dcisource/height}}
-{dcisource}
-{\ctikzvalof{bipoles/dcisource/height}}
-{\ctikzvalof{bipoles/dcisource/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@maybefill
- \edef\@@angle{\ctikzvalof{bipoles/dcisource/angle}}
- \pgfpathmoveto{\pgfpointpolar{\@@angle}{\pgf@circ@res@up}}
- \pgfpatharc{\@@angle}{-\@@angle}{\pgf@circ@res@up}
- \pgfpathmoveto{\pgfpointpolar{180-\@@angle}{\pgf@circ@res@up}}
- \pgfpatharc{180-\@@angle}{180+\@@angle}{\pgf@circ@res@up}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-%% DC-Voltage source
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/dcvsource/height}}
-{dcvsource}
-{\ctikzvalof{bipoles/dcvsource/height}}
-{\ctikzvalof{bipoles/dcvsource/width}}
-{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
- \pgfusepath{draw}
-}
-
-
-%% Independent current source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isource}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
-}
-
-%% Independent double oo source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/oosource/height}}
-{oosource}
-{\ctikzvalof{bipoles/oosource/height}}
-{\ctikzvalof{bipoles/oosource/width}}
-{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
- \pgf@circ@maybefill
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
- \pgf@circ@draworfill
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
- \pgfusepath{draw}
-}
-
-
-%% Independent current source - American
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/isourceam/height}}
-{isourceAM}
-{\ctikzvalof{bipoles/isourceam/height}}
-{\ctikzvalof{bipoles/isourceam/width}}
-{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-
-%% Independent sinusoidal current source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isourcesin}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-
-%% Controlled voltage source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/cvsource/height}}
-{cvsource}
-{\ctikzvalof{bipoles/cvsource/height}}
-{\ctikzvalof{bipoles/cvsource/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% Controlled voltage source - American
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/cvsourceam/height}}
-{cvsourceAM}
-{\ctikzvalof{bipoles/cvsourceam/height}}
-{\ctikzvalof{bipoles/cvsourceam/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$-$}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$-$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$+$}
- \fi
-}
-
-
-%% Controlled sinusoidal voltage source
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{cvsourcesin}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{\ctikzvalof{bipoles/cvsourcesin/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-%% Controlled sinusoidal current source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{cisourcesin}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{\ctikzvalof{bipoles/cvsourcesin/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Controlled current source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/cisource/height}}
-{cisource}
-{\ctikzvalof{bipoles/cisource/height}}
-{\ctikzvalof{bipoles/cisource/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-%% Controlled current source - American
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/cisourceam/height}}
-{cisourceAM}
-{\ctikzvalof{bipoles/cisourceam/height}}
-{\ctikzvalof{bipoles/cisourceam/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% Cute Independent voltage source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vsource/height}}
-{vsourceC}
-{\ctikzvalof{bipoles/vsource/height}}
-{\ctikzvalof{bipoles/vsource/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-%% Cute Independent current source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isourceC}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-%% Cute Controlled voltage source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/cvsource/height}}
-{cvsourceC}
-{\ctikzvalof{bipoles/cvsource/height}}
-{\ctikzvalof{bipoles/cvsource/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Cute Controlled current source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/cisource/height}}
-{cisourceC}
-{\ctikzvalof{bipoles/cisource/height}}
-{\ctikzvalof{bipoles/cisource/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@down}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Noise voltage source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vsource/height}}
-{vsourceN}
-{\ctikzvalof{bipoles/vsource/height}}
-{\ctikzvalof{bipoles/vsource/width}}
-{
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- %
- \pgf@circ@res@step=0.125\pgf@circ@Rlen\relax
- \edef\pgf@noise@temp{dashed}
- \edef\pgf@noise@fill{\pgfkeysvalueof{/tikz/circuitikz/bipoles/noise sources/fillcolor}}
- \ifx\pgf@noise@temp\pgf@noise@fill
- % fillable in this case
- \pgf@circ@draworfillandclip
- \pgfmathsetmacro{\thinner}{.5*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
- \pgfsetlinewidth{\thinner\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- %
- \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \else
- \pgfsetfillcolor{\pgf@noise@fill}
- \pgfusepath{draw,fill}
- \fi
- \endpgfscope
- \pgfmathsetmacro{\@@thicker}{3*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-%% Noise current source
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isourceN}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- %
- \pgf@circ@res@step=0.125\pgf@circ@Rlen\relax
- \edef\pgf@noise@temp{dashed}
- \edef\pgf@noise@fill{\pgfkeysvalueof{/tikz/circuitikz/bipoles/noise sources/fillcolor}}
- \ifx\pgf@noise@temp\pgf@noise@fill
- % fillable in this case
- \pgf@circ@draworfillandclip
- \pgfmathsetmacro{\thinner}{.5*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
- \pgfsetlinewidth{\thinner\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- %
- \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \else
- \pgfsetfillcolor{\pgf@noise@fill}
- \pgfusepath{draw,fill}
- \fi
- \endpgfscope
- \pgfmathsetmacro{\@@thicker}{3*\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-%% Black generic diode
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fulldiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black Zener diode
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black alternative zigzag Zener diode
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullzzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black Schottky diode
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullsdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Black tunnel diode
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fulltdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black light emitting diode
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fulllediode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-}
-
-%% Black photodiode
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullpdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latexslim}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black varcap
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/varcap/height}}
-{fullvarcap}
-{\ctikzvalof{bipoles/varcap/height}}
-{\ctikzvalof{bipoles/varcap/width}}
-{
- \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgfsetlinewidth{\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfusepath{draw,fill}
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Code for the diode triangle
-\def\pgf@circ@basicdiodeshape{
- % \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfscope
- % to allow filling, we need to draw explicitily the stroke here.
- \pgfsetlinewidth{\pgfstartlinewidth}
- \ifpgf@circuit@bipole@strokedsymbol
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
- % \endpgfscope
-}
-
-
-%% Empty generic diode
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptydiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty Zener diode
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptyzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty alternative zigzag Zener diode
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptyzzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-%% Empty Schottky diode
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptysdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty tunnel diode
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptytdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty light emitting diode
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptylediode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty photodiode
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptypdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latexslim}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty varcap
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/varcap/height}}
-{emptyvarcap}
-{\ctikzvalof{bipoles/varcap/height}}
-{\ctikzvalof{bipoles/varcap/width}}
-{
- \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgfsetlinewidth{\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- % \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfscope
- % to allow filling, we need to draw explicitily the stroke here.
- \pgfsetlinewidth{\pgfstartlinewidth}
- \ifpgf@circuit@bipole@strokedsymbol
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty bidirectionaldiode
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/bidirectionaldiode/height}}{emptybidirectionaldiode}{\ctikzvalof{bipoles/bidirectionaldiode/height}}{\ctikzvalof{bipoles/bidirectionaldiode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgf@circ@draworfill
- % \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-
-%% Full bidirectionaldiode
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{fullbidirectionaldiode}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{\ctikzvalof{bipoles/bidirectionaldiode/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw, fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% (Closing) SPST
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/spst/depth}}
-{cspst}
-{\ctikzvalof{bipoles/spst/height}}
-{\ctikzvalof{bipoles/spst/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpointpolar{90}{1.2\pgf@circ@res@right}}
- \pgfpatharc{90}{-20}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfsetbeveljoin
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Opening SPST
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/spst/depth}}
-{ospst}
-{\ctikzvalof{bipoles/spst/height}}
-{\ctikzvalof{bipoles/spst/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
- \pgfpatharc{-10}{90}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfsetbeveljoin
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Normal open Switch
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/nos/depth}}
-{nos}
-{\ctikzvalof{bipoles/nos/height}}
-{\ctikzvalof{bipoles/nos/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{draw}
-}
-
-%% Normal closed Switch
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/ncs/depth}}
-{ncs}
-{\ctikzvalof{bipoles/ncs/height}}
-{\ctikzvalof{bipoles/ncs/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Push Button
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/pushbutton/height 2}}
-{pushbutton}
-{\ctikzvalof{bipoles/pushbutton/height}}
-{\ctikzvalof{bipoles/pushbutton/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-
-%% Normally closed Push Button
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/pushbutton/height 2}}
-{ncpushbutton}
-{\ctikzvalof{bipoles/pushbutton/height}}
-{\ctikzvalof{bipoles/pushbutton/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp}}
- \pgfpathmoveto{\pgfpoint{0}{-\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- %
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-% cute switch "to" shapes help function
-% #1 -> name
-% #2 -> barposition
-% #3 -> arrowcode
-\long\def\pgfcircdeclarecutesw#1#2#3{
- \pgfcircdeclarebipole
- {
- \savedanchor\midlever{
- % these values are calculated when we create the definition of the shape.
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/cuteswitch/height}\pgf@circ@Rlen
- \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgf@circ@res@down = -.5\pgf@y
- \pgf@circ@res@up = .5\pgf@y
- \pgfextracty{\pgf@circ@res@other}{#2}
- \pgf@x=0pt
- \pgf@y=.5\pgf@circ@res@other
- }
- % radius of the connector
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % shape type
- \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
- % mid of the lever, to stack switches
- \anchor{mid}{\midlever}
- \anchor{cout}{\northeast \pgf@y=0cm}
- \anchor{cin}{\southwest\pgf@y=0cm}
- \anchor{out}{\northeast \pgf@y=0cm\advance\pgf@x by \radius}
- \anchor{in}{\southwest\pgf@y=0cm\advance\pgf@x by -\radius}
- }
- {\ctikzvalof{bipoles/cuteswitch/height 2}}
- {#1}
- {\ctikzvalof{bipoles/cuteswitch/height}}
- {\ctikzvalof{bipoles/cuteswitch/width}}{
- \pgfscope
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgfsetlinewidth{2\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{#2}
- \pgfsetroundcap\pgfusepath{draw}
- \endpgfscope
- \pgfscope % arrow
- #3
- \endpgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-out}{\pgfusepath{draw}}
- }
-}
-
-%% closed cute switch
-\pgfcircdeclarecutesw{cuteclosedswitch}
- {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
- {}
-
-%% open cute switch
-\pgfcircdeclarecutesw{cuteopenswitch}
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- {}
-
-%% closing cute switch
-\pgfcircdeclarecutesw{cuteclosingswitch}
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- {
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{70}{1.2\pgf@circ@res@right}}
- \pgfpatharc{70}{-10}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
- }
-
-%% opening cute switch
-\pgfcircdeclarecutesw{cuteopeningswitch}
- {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
- {
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
- \pgfpatharc{-10}{60}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
- }
-
-
-% % METERINGSHAPE
- \long\def\drawmeteringcircle{
- \def\pgf@circ@temp{right}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \def\pgf@circ@temp{below}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \pgf@circ@res@step=1.2\pgf@circ@res@up
- \fi
- \fi
- %draw connections to circle
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- %draw circle
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgf@circ@draworfill
- \endpgfscope
- %draw arrow
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- }
-%AMPEREMETER
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/ammeter/height}}
-{ammeter}
-{\ctikzvalof{bipoles/ammeter/height}}
-{\ctikzvalof{bipoles/ammeter/width}}
-{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\textbf{A}}{}{}
-}
-%OHMMETER
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/ohmmeter/height}}
-{ohmmeter}
-{\ctikzvalof{bipoles/ohmmeter/height}}
-{\ctikzvalof{bipoles/ohmmeter/width}}
-{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
-}
-%VOLTMETER
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/voltmeter/height}}
-{voltmeter}
-{\ctikzvalof{bipoles/voltmeter/height}}
-{\ctikzvalof{bipoles/voltmeter/width}}
-{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\textbf{V}}{}{}
-
-}
-
-% oscilloscope, suggested by @nobrl https://github.com/circuitikz/circuitikz/issues/176
-\pgfcircdeclarebipole
-{
- \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
- \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/oscope/height}}
-{oscope}
-{\ctikzvalof{bipoles/oscope/height}}
-{\ctikzvalof{bipoles/oscope/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\southwest}
- \pgfextracty{\pgf@circ@res@down}{\southwest}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfscope
- \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- % this would create a round (analog?) scope...
- % \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \endpgfscope
- % get the rotation
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- % and unrotate the scope
- \pgfscope
- \pgftransformrotate{\rot}
- % grid
- \pgfscope
- \pgfsetlinewidth{0.5\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfpathgrid[stepx=\pgf@circ@res@step, stepy=\pgf@circ@res@step]%
- {\pgfpoint{0.75\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- {\pgfpoint{0.75\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfsetstrokeopacity{0.5}
- \pgfusepath{draw}
- \endpgfscope
- % function displayed, thanks to
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-%% Short circuit
-
-%%% NOTICE that the short is really NOT drawn; we trust the fact that its
-%%% natural length is zero.
-\pgfcircdeclarebipole
-{}
-{0}
-{short}
-{0}
-{0}
-{ }
-
-%% Open circuit
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/open/height}}
-{open}
-{\ctikzvalof{bipoles/open/height}}
-{\ctikzvalof{bipoles/open/width}}
-{ }
-
-%% Generic bipole - used as resistor by some (bleah)
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/generic/height}}
-{generic}
-{\ctikzvalof{bipoles/generic/height}}
-{\ctikzvalof{bipoles/generic/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-
-
-%% fuse
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/fuse/height}}
-{fuse}
-{\ctikzvalof{bipoles/fuse/height}}
-{\ctikzvalof{bipoles/fuse/width}}
-{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@draworfill
-}
-
-
-
-%% Generic bipole, filled - used as inductor by some
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{fullgeneric}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{\ctikzvalof{bipoles/fullgeneric/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfusepath{draw,fill}
-}
-
-%% Generic sensor, filled - used as inductive sensor by some
-
-\pgfcircdeclarebipole
-{{% anchor for labelling the type of dependency
- \anchor{label}{%
- \southwest
- \pgf@x=0.4\pgf@x
- \pgf@y=2\pgf@y
- }%
-}}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{sfullgeneric}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{\ctikzvalof{bipoles/fullgeneric/width}}
-{
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw,fill}
- %\pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{2\pgf@circ@res@down}}
- \pgfusepath{draw}
- %\endpgfscope
-}
-
-
-%% Generic asymmetric bipole
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/ageneric/height}}
-{ageneric}
-{\ctikzvalof{bipoles/ageneric/height}}
-{\ctikzvalof{bipoles/ageneric/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-%% asymmetric fuse
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/afuse/height}}
-{afuse}
-{\ctikzvalof{bipoles/afuse/height}}
-{\ctikzvalof{bipoles/afuse/width}}
-{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-
-
-%% Memristor
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/memristor/height}}
-{memristor}
-{\ctikzvalof{bipoles/memristor/height}}
-{\ctikzvalof{bipoles/memristor/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-
-
-
-%% Generic empty tunable
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/tgeneric/height}}
-{tgeneric}
-{\ctikzvalof{bipoles/tgeneric/height}}
-{\ctikzvalof{bipoles/tgeneric/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Photoresistor
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/photoresistor/height 2}}
-{photoresistor}
-{\ctikzvalof{bipoles/photoresistor/height}}
-{\ctikzvalof{bipoles/photoresistor/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-%% Thermistor
-\pgfcircdeclarebipole
-{{% anchor for labelling the type of dependency
- \anchor{label}{%
- \southwest
- \pgf@x=0.4\pgf@x
- \pgf@y=1.2\pgf@y
- }%
-}}
-{\ctikzvalof{bipoles/thermistor/height}}
-{thermistor}
-{\ctikzvalof{bipoles/thermistor/height}}
-{\ctikzvalof{bipoles/thermistor/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistor/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- %\pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- %\endpgfscope
-}
-
-
-%% Thermistor PTC
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/thermistorptc/height 2}}
-{thermistorptc}
-{\ctikzvalof{bipoles/thermistorptc/height}}
-{\ctikzvalof{bipoles/thermistorptc/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorptc/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Thermistor NTC
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/thermistorntc/height 2}}
-{thermistorntc}
-{\ctikzvalof{bipoles/thermistorntc/height}}
-{\ctikzvalof{bipoles/thermistorntc/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/thermistorntc/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\tiny$\vartheta$}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% thermocouple
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/thermocouple/height 2}}
-{thermocouple}
-{\ctikzvalof{bipoles/thermocouple/height}}
-{\ctikzvalof{bipoles/thermocouple/width}}
-{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-}
-
-%% Varistor
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/varistor/height}}
-{varistor}
-{\ctikzvalof{bipoles/varistor/height}}
-{\ctikzvalof{bipoles/varistor/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\pgfkeysvalueof{/tikz/circuitikz/bipoles/varistor/main}\pgf@circ@res@up}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\tiny\textsf{U}}}
-}
-
-
-
-%% Generic full tunable
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/tfullgeneric/height}}
-{tfullgeneric}
-{\ctikzvalof{bipoles/tfullgeneric/height}}
-{\ctikzvalof{bipoles/tfullgeneric/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw,fill}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-
-
-
-%% Variable Capacitor
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vcapacitor/height}}
-{vcapacitor}
-{\ctikzvalof{bipoles/vcapacitor/height}}
-{\ctikzvalof{bipoles/vcapacitor/width}}
-{
- %\pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/width}\pgf@circ@Rlen
- \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfusepath{draw}
-}
-
-
-%% Piezoelectric Element
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/piezoelectric/height}}
-{piezoelectric}
-{\ctikzvalof{bipoles/piezoelectric/height}}
-{\ctikzvalof{bipoles/piezoelectric/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 5
-
- %% Outer markings
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %% Inner Box
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left+4}{\pgf@circ@res@up-1}}{\pgfpoint{\pgf@circ@res@right-4}{\pgf@circ@res@down+1}}
- \pgf@circ@draworfill
- \endpgfscope
-}
-
-
-
-
-
-
-%% Lamp
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/lamp/height}}
-{lamp}
-{\ctikzvalof{bipoles/lamp/height}}
-{\ctikzvalof{bipoles/lamp/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% bulb
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/bulb/height}}
-{bulb}
-{\ctikzvalof{bipoles/bulb/height}}
-{\ctikzvalof{bipoles/bulb/width}}
-{%
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{0.8\pgf@circ@res@up}}{\pgfpoint{0.8\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
- \pgfsetbeveljoin
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-% transmission line
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/tline/height}}
-{tline}
-{\ctikzvalof{bipoles/tline/height}}
-{\ctikzvalof{bipoles/tline/width}}
-{
- \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
- \begin{pgftransparencygroup}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
- {\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{-\pgf@circ@res@up}}
- \pgf@circ@draworfill
- \end{pgftransparencygroup}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{stroke}
-}
-
-% microstrip transmission line
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/mstline/height}}
-{mstline}
-{\ctikzvalof{bipoles/mstline/height}}
-{\ctikzvalof{bipoles/mstline/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-%% SQUID added by Cor Molenaar 5 March 2010
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/squid/height}}
-{squid}
-{\ctikzvalof{bipoles/squid/height}}
-{\ctikzvalof{bipoles/squid/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-
-
-% Generic barrier added by Cor Molenaar 5 March 2010
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/barrier/height}}
-{barrier}
-{\ctikzvalof{bipoles/barrier/height}}
-{\ctikzvalof{bipoles/barrier/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
-
- \pgfusepath{draw}
-}
-
-
-% Contributed by Danilo Piazzalunga
-
-\pgfdeclareshape{buffer}
-{
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/buffer/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- }
-}
-
-
-
-
-
-\pgfdeclareshape{plain amp}
-{
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgfsetlinewidth{2\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@up}}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/plain amp/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-
-
-
-
- }
-}
-
-
-%% Draw the two-port fillable box
-\def\pgf@circ@twoportbox{
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \endpgfscope
-}
-
-%% Generic two port box
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/twoport/height}}
-{twoport}
-{\ctikzvalof{bipoles/twoport/height}}
-{\ctikzvalof{bipoles/twoport/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw outer box
- \pgf@circ@twoportbox
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
-}
-
-%% voltage controled oscillator
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vco/width}}
-{vco}
-{\ctikzvalof{bipoles/twoport/width}}
-{\ctikzvalof{bipoles/vco/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw circle
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
- \pgf@circ@draworfill
- \endpgfscope
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
-}
-
-%% bandpass filter
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/bandpass/width}}
-{bandpass}
-{\ctikzvalof{bipoles/bandpass/width}}
-{\ctikzvalof{bipoles/bandpass/width}}
-{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% bandstop filter
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/bandstop/width}}
-{bandstop}
-{\ctikzvalof{bipoles/bandstop/width}}
-{\ctikzvalof{bipoles/bandstop/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/bandstop/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225% 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt}% always draw solid line for inner symbol
- \pgfsetarrows{-}%never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% highpass filter
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/highpass/width}}
-{highpass}
-{\ctikzvalof{bipoles/highpass/width}}
-{\ctikzvalof{bipoles/highpass/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% lowpass filter
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/lowpass/width}}
-{lowpass}
-{\ctikzvalof{bipoles/lowpass/width}}
-{\ctikzvalof{bipoles/lowpass/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% ADC
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/adc/width}}
-{adc}
-{\ctikzvalof{bipoles/adc/width}}
-{\ctikzvalof{bipoles/adc/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{A}
- \def\textii{D}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{A}
- \def\textii{D}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DAC
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/dac/width}}
-{dac}
-{\ctikzvalof{bipoles/dac/width}}
-{\ctikzvalof{bipoles/dac/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{D}
- \def\textii{A}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{D}
- \def\textii{A}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DSP
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/dsp/width}}
-{dsp}
-{\ctikzvalof{bipoles/dsp/width}}
-{\ctikzvalof{bipoles/dsp/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{DSP}}
-}
-
-%% FFT
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/fft/width}}
-{fft}
-{\ctikzvalof{bipoles/fft/width}}
-{\ctikzvalof{bipoles/fft/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{FFT}}
-}
-
-%% Amplifier
-\pgfcircdeclarebipole
-{}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{amp}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \pgf@circ@draworfill
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
-
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgf@circ@draworfill
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-}
-
-
-%% variable amplifier
-\pgfcircdeclarebipole
-{}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{vamp}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
-
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgf@circ@draworfill
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
- % draw arrow
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% pi attenuator
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/piattenuator/width}}
-{piattenuator}
-{\ctikzvalof{bipoles/piattenuator/width}}
-{\ctikzvalof{bipoles/piattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable pi attenuator
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vpiattenuator/width}}
-{vpiattenuator}
-{\ctikzvalof{bipoles/vpiattenuator/width}}
-{\ctikzvalof{bipoles/vpiattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% T attenuator
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/tattenuator/width}}
-{tattenuator}
-{\ctikzvalof{bipoles/tattenuator/width}}
-{\ctikzvalof{bipoles/tattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable T attenuator
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/vtattenuator/width}}
-{vtattenuator}
-{\ctikzvalof{bipoles/vtattenuator/width}}
-{\ctikzvalof{bipoles/vtattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% phase shifter
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{phaseshifter}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-}
-
-%% variable phase shifter
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{vphaseshifter}
-{\ctikzvalof{bipoles/vphaseshifter/width}}
-{\ctikzvalof{bipoles/vphaseshifter/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% detector
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/detector/width}}
-{detector}
-{\ctikzvalof{bipoles/detector/width}}
-{\ctikzvalof{bipoles/detector/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{0.8\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@fulldiode
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
- \else
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
- \fi
-
-}
-
-
-
-
-%% european gas filled surge arrester
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
-{european gas filled surge arrester}
-{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
-{\ctikzvalof{bipoles/european gas filled surge arrester/width}}
-{
-
- %\pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- %\divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@draworfill
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
-}
-
-
-
-
-%% american gas filled surge arrester
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
-{american gas filled surge arrester}
-{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
-{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope{}
-
- \pgfcircle{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
- \pgfusepath{fill}
-}
-
-% % MECHANICAL SYMBOLS
-
-%% mechanical capacitance - stiffness/spring
-
-\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/spring/height}}{spring}{\ctikzvalof{bipoles/spring/height}}{\ctikzvalof{bipoles/spring/width}}{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% mechanical inductance - mass
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/mass/box height}}
-{mass}
-{\ctikzvalof{bipoles/mass/height}}
-{\ctikzvalof{bipoles/mass/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-}
-
-%% mechanical resistor - damper
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/damper/height}}
-{damper}
-{\ctikzvalof{bipoles/damper/height}}
-{\ctikzvalof{bipoles/damper/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@maybefill
-
- % line into the damper
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {\pgf@circ@res@zero}}
- \pgfusepath{stroke}
-
- % damper box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
-
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-
- % damper vertical element
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{stroke}
-
-}
-%% mechanical viscoelastic element, suggested by @alex
-%% in https://tex.stackexchange.com/questions/484268/combined-spring-damper-in-circuitikz
-\pgfcircdeclarebipole
-{} % extra anchors
-{\ctikzvalof{bipoles/damper/height}} % depth (under the path line)
-{viscoe} % name
-{\ctikzvalof{bipoles/damper/height}} % height (above the path line)
-{\ctikzvalof{bipoles/damper/width}} % width
-{ % draw the bipole
- \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@maybefill
-
- % spring into the damper
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfsetcornersarced{\pgfpoint{.25\pgf@circ@res@up}{.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.75\pgf@circ@res@left}{.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@left}{-.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{.75\pgf@circ@res@up}}
- \pgfusepath{stroke}
- \endpgfscope
- % damper box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
-
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-
- % damper vertical element
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{stroke}
-
-}
-
-
-\pgfcircdeclarebipole
-{% anchor for labelling the type of dependency
- \anchor{label}{%
- \southwest
- \pgf@x=0.4\pgf@x
- }%
-}
-{\ctikzvalof{bipoles/resistivesens/height}}
-{resistivesens}
-{\ctikzvalof{bipoles/resistivesens/height}}
-{\ctikzvalof{bipoles/resistivesens/width}}
-{%
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \divide \pgf@circ@res@step by 12
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
-
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-.9\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% crossing bipole (but see also nodes)
-\pgfcircdeclarebipole
- {}
- {\ctikzvalof{bipoles/crossing/size}}
- {crossing}
- {\ctikzvalof{bipoles/crossing/size}}
- {\ctikzvalof{bipoles/crossing/size}}{
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
- \pgfsetbeveljoin
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope
- }
-
-%% loudspeaker and microphone
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/loudspeaker/depth}}
-{loudspeaker}
-{\ctikzvalof{bipoles/loudspeaker/height}}
-{\ctikzvalof{bipoles/loudspeaker/width}}{
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{.4\pgf@circ@res@up}}
- \pgfpathclose
- \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/mic/depth}}
-{mic}
-{\ctikzvalof{bipoles/mic/height}}
-{\ctikzvalof{bipoles/mic/width}}{
-
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0pt}{.6\pgf@circ@res@up}}{.4\pgf@circ@res@up}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{0pt}}
- % 0.25358 is 0.6-0.4*cos(30)
- \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% generic round meter with always horizontal text, no arrow
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/esource/height}}
-{rmeter}
-{\ctikzvalof{bipoles/esource/height}}
-{\ctikzvalof{bipoles/esource/width}}
-{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- % draw the text label
- % get the rotation
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- % and unrotate the scope
- \pgfscope
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgftransformrotate{\rot}
- \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
- \endpgfscope
-}
-
-% generic round meter with always horizontal text, with arrow
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/esource/height}}
-{rmeterwa}
-{\ctikzvalof{bipoles/esource/height}}
-{\ctikzvalof{bipoles/esource/width}}
-{
- \pgfpointorigin
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- % draw the text label
- % get the rotation
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- % and unrotate the scope
- \pgfscope
- \pgftransformrotate{\rot}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfsetlinewidth{\pgfstartlinewidth}
- % arrow: create a center hole to have better visual
- \pgfscope
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
- {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
- % next open a circle into it
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{.6\pgf@circ@res@up}}{\pgfpoint{.6\pgf@circ@res@left}{0}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfsetarrowsend{latexslim}
- % the arrow is better if it has a bit of breath and it's not 45ยบ
- \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@right}{1.2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- \pgftext[center]{\ctikzvalof{bipoles/twoport/text}}
- \endpgfscope
-}
-
-% generic square meter with always horizontal text
-\pgfcircdeclarebipole
-{
- \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
- \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/smeter/height}}
-{smeter}
-{\ctikzvalof{bipoles/smeter/height}}
-{\ctikzvalof{bipoles/smeter/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\southwest}
- \pgfextracty{\pgf@circ@res@down}{\southwest}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfscope
- \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
- \endpgfscope
- % get the rotation
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- % and unrotate the scope
- \pgfscope
- \pgftransformrotate{\rot}
- % the metering window
- \pgfscope
- \def\@starta{105}\def\@stopa{75}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftransformshift{\pgfpoint{0pt}{-1.8\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{\@starta}{2\pgf@circ@res@up}}
- \pgfpatharc{\@starta}{\@stopa}{2\pgf@circ@res@up}
- \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
- \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
- \pgfclosepath
- \pgfpathmoveto{\pgfpointpolar{80}{2\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{80}{2.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- \pgftext[center, y=0.5\pgf@circ@res@down]{\ctikzvalof{bipoles/twoport/text}}
- \endpgfscope
-}
-
-% probles qucs style:
-% #1 : name
-% #2 : extra code
-\long\def\pgfcirc@qucsprobe#1#2{
- \pgfcircdeclarebipole
- {
- \anchor{v+}{\southwest\pgf@x=0.6\pgf@x}
- \anchor{v-}{\southwest\pgf@x=-0.6\pgf@x}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- }
- {\ctikzvalof{bipoles/qmeter/depth}}
- {#1}
- {\ctikzvalof{bipoles/qmeter/height}}
- {\ctikzvalof{bipoles/qmeter/width}}
- {
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\southwest}
- \pgfextracty{\pgf@circ@res@down}{\southwest}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfscope
- \pgfscope
- \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
- \endpgfscope
- \def\@starta{103}\def\@stopa{77}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfscope
- \pgftransformshift{\pgfpoint{0pt}{-1.7\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{\@starta}{2.1\pgf@circ@res@up}}
- \pgfpatharc{\@starta}{\@stopa}{2.1\pgf@circ@res@up}
- \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
- \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
- \pgfclosepath
- \pgfpathmoveto{\pgfpointpolar{83}{2.1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{83}{2.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgf@circ@draworfill
- \endpgfscope
- #2
- \endpgfscope
- }
-}
-
-\pgfcirc@qucsprobe{qiprobe}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- \pgfnode{currarrow}{center}{}{}{}
-}
-
-\pgfcirc@qucsprobe{qvprobe}{
- \pgfmathsetlength{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{0pt}}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
- \pgfusepath{draw}
- \pgfscope
- % "+" and "-", drawn so that they scale correctly
- \pgfsetlinewidth{2\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-1.5\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-3.5\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-\pgfcirc@qucsprobe{qpprobe}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- \pgfnode{currarrow}{center}{}{}{}
- \pgfmathsetlength{\pgf@circ@res@other}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{-4\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{-4\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfscope
- % "+" and "-", drawn so that they scale correctly
- \pgfsetlinewidth{2\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-2\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-4\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right-4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-% current loop for oscope and similar: stylized
-
-\pgfcircdeclarebipole
-{
- \anchor{i}{\northeast\pgf@x=0pt\relax}
- \anchor{text}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/iloop/height}}
-{iloop}
-{\ctikzvalof{bipoles/iloop/height}}
-{\ctikzvalof{bipoles/iloop/width}}
-{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@down=-\pgf@circ@res@up
- \pgf@circ@res@left=-\pgf@circ@res@right
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- % external ellipse
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgflinewidth}
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
- {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
- % next the opening to the left
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
- {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathellipse{\pgfpointorigin}{
- \pgfpoint{0pt}{0.8\pgf@circ@res@up}}{
- \pgfpoint{0.4\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- % internal wire
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % and the contact line up
- \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-% current loop for oscope and similar: real (double connection)
-
-\pgfcircdeclarebipole
-{
- \anchor{i+}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@step=0.4\pgf@circ@res@right
- \pgf@circ@res@other=0.8\pgf@circ@res@up
- \pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgf@y=\pgf@circ@res@up
- }
- \anchor{i-}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@step=0.4\pgf@circ@res@right
- \pgf@circ@res@other=0.8\pgf@circ@res@up
- \pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgf@y=\pgf@circ@res@up
- }
- \anchor{text}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/iloop/height}}
-{iloop2}
-{\ctikzvalof{bipoles/iloop/height}}
-{\ctikzvalof{bipoles/iloop/width}}
-{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@down=-\pgf@circ@res@up
- \pgf@circ@res@left=-\pgf@circ@res@right
- % must be the same than internal i+ and i- anchors definition
- \pgf@circ@res@step=0.4\pgf@circ@res@right
- \pgf@circ@res@other=0.8\pgf@circ@res@up
- \def\@plus{\pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}}
- \def\@minus{\pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}}
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- % external ellipse
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{bipoles/thickness}\pgflinewidth}
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
- {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
- % next the opening to the left
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
- {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathmoveto{\@plus}
- \pgfpatharc{105}{435}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfusepath{draw}
- \endpgfscope
- % internal wire
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % and the contact line up
- % I use ...left and ---right as temporal lengths here to avoid defining more
- \pgfextractx{\pgf@circ@res@left}{\@plus}
- \pgfextractx{\pgf@circ@res@right}{\@minus}
- \pgfpathmoveto{\@plus}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathmoveto{\@minus}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-% end of pgfcircbipoles.tex
-%%%---------- close: tex/pgfcircbipoles
-%%%%%%%%%%% Springe nach tex/pgfcirctripoles
-%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Tripoles
-
-\pgfdeclareshape{spdt}{
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out 1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{out 2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/margin}\pgf@circ@res@left
-
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
- \endpgfscope
-
-
- \pgfscope
- \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
- \pgfpathlineto{
- \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
- {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
- }
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-
-% cute switch "node" shapes, matching with cute "to" shapes
-% #1 -> name
-% #2 -> barposition
-% #3 -> arrowcode
-\long\def\pgfcircdeclarecutespdt#1#2#3{
- \pgfdeclareshape{#1}
- {
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/cuteswitch/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/spdt/width}\pgf@circ@Rlen
- \pgf@x=.25\pgf@x
- }
- \savedanchor\midlever{
- % these values are calculated when we create the definition of the shape.
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/cuteswitch/height}\pgf@circ@Rlen
- \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/nodes width}\pgf@circ@Rlen
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgf@circ@res@down = -.5\pgf@y
- \pgf@circ@res@up = .5\pgf@y
- \pgfextracty{\pgf@circ@res@other}{#2}
- \pgf@x=0pt
- \pgf@y=.5\pgf@circ@res@other
- }
- % radius of the connector
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % shape type
- \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
- % mid of the lever, to stack switches
- \anchor{mid}{\midlever}
- % center anchors
- \anchor{cin}{ \northwest \pgf@y=0pt}
- \anchor{cout 1}{ \northwest \pgf@x=-\pgf@x }
- \anchor{cout 2}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- % horizontal angles
- \anchor{in}{ \northwest \pgf@y=0pt\advance\pgf@x by -\radius}
- \anchor{out 1}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius}
- \anchor{out 2}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius \pgf@y=-\pgf@y }
-
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \pgf@circ@res@temp=\radius\relax
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgfsetlinewidth{2\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{#2}
- \pgfsetroundcap\pgfusepath{draw}
- \endpgfscope
- \pgfscope % arrow
- #3
- \endpgfscope
- % terminals
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfnode{\cshape}{center}{}{\thisshape-out 1}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfnode{\cshape}{center}{}{\thisshape-out 2}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
- \endpgfscope
-
- }
- }
-}
-
-\pgfcircdeclarecutespdt{cute spdt up}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
-{}
-
-\pgfcircdeclarecutespdt{cute spdt mid}
-{\pgfpoint{\pgf@circ@res@right}{0pt}}
-{}
-
-\pgfcircdeclarecutespdt{cute spdt down}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
-{}
-
-\pgfcircdeclarecutespdt{cute spdt up arrow}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{70}{1.5\pgf@circ@res@right}}
- \pgfpatharc{70}{-50}{1.5\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclarecutespdt{cute spdt mid arrow}
-{\pgfpoint{\pgf@circ@res@right}{0pt}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfsetarrowsstart{latexslim}
- \pgfpathmoveto{\pgfpointpolar{-60}{1.5\pgf@circ@res@right}}
- \pgfpatharc{-60}{60}{1.5\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclarecutespdt{cute spdt down arrow}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{-50}{1.5\pgf@circ@res@right}}
- \pgfpatharc{-50}{70}{1.5\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% Logic ports
-%%
-%% Code from John Kormylo at tex.stackexchange.com
-%% See https://tex.stackexchange.com/questions/372993/is-it-possible-to-implement-multiple-input-logic-ports-with-circuitikz
-%% Integration and fixes from Romano Giannetti and TheTeXnician <38565529+TheTeXnician@users.noreply.github.com>
-%%
-
-\newcount\pgf@circ@res@count% reserve global register
-
-\def\pgf@circ@logicport@input#1% #1 = \pgfmathcounter
-{%
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
-}%
-
-% #1 = \pgfmathcounter #2=type #3 specificic port
-% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor, 4 for european.
-\def\pgf@circ@logicport@baseinput#1#2#3%
-{%
- % and and nand
- \ifnum #2=1\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/port width}\pgf@circ@res@left
- \fi
- % or and nor
- \ifnum #2=2\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/angle}}%
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\pgf@y
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgf@x=\pgf@circ@res@other
- \fi
- % xor and xnor
- \ifnum #2=3\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american #3 port/angle}{\pgf@circ@math@angle}%
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #3 port/distance}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
- % this compensates for the effect of the line width on the gap between the arcs
- \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
- \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
-
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@circ@res@temp=\pgf@y
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \advance\pgf@circ@res@other by -\pgf@circ@math@distance
- \pgf@x=\pgf@circ@res@other
- \fi
- % european
- \ifnum #2=4\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@other}{\left}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@x=\pgf@circ@res@other
- \fi
-}%
-
-%%% american
-\long\def\pgfcircdeclarelogicport#1#2#3{%
- \pgfdeclareshape{american #1 port}%
- {%
- \savedmacro\resize{% automatic
- \pgf@circ@res@up = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@circ@Rlen
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgf@circ@res@down = -\pgf@circ@res@up
- \pgf@circ@res@right = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/width}\pgf@circ@Rlen
- \pgf@circ@res@right = .5\pgf@circ@res@right
- \pgf@circ@res@left = -\pgf@circ@res@right
- }%
- \savedmacro\inputs{% get number of inputs
- \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
- \ifnum\pgf@circ@res@count=0
- \pgf@circ@res@count=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/inputs}\relax%
- \fi
- \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
- \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
- \def\inputs{\the\pgf@circ@res@count}%
- }%
- \savedanchor\step{% 1/2 gap at edges
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/height}\pgf@circ@Rlen
- \divide\pgf@circ@res@step by \pgf@circ@res@count
- \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
- }%
- \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \savedanchor\left{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/port width}\pgf@circ@res@left}{0pt}}
- \savedanchor\right{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/port width}\pgf@circ@res@right}{0pt}}
- \savedanchor\origin{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american #1 port/origin}\pgf@circ@res@right}{0pt}}
-
- \anchor{center}{\origin}% for backwards compatibility
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- % create input anchors
- \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@american #1 port\endcsname{%
- \pgfmathloop%
- \ifnum\pgfmathcounter>\pgf@circ@res@count%
- \else%
- %\pgfutil@ifundefined{pgf@anchor@american #1 port@in \pgfmathcounter}{%
- \expandafter\xdef\csname pgf@anchor@american #1 port@in \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
- }%
- \expandafter\xdef\csname pgf@anchor@american #1 port@bin \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{#2}{#1}% defined above
- }%
- %}{}%
- \repeatpgfmathloop%
- }
-
- \anchor{out}{\northeast\pgf@y=0pt}
- \anchor{bout}{\right\pgf@y=0pt}
-
-
- \anchor{left}{\left}% edges of component mius leads
- \anchor{right}{\right}
-
- \anchor{north east}{\northeast}% see \Compass macro
- \anchor{south west}{\southwest}
- \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfpoint{0cm}{\pgf@circ@res@up}}
- \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{0cm}}
- \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfpoint{0cm}{\pgf@circ@res@down}}
- \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{0cm}}
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- #3
- }
-}
-}
-%%% american and %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{and}{1}{
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@temp}}
- \advance\pgf@circ@res@count by -1
- \repeat
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@right}
- {0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american and port/port width}\pgf@circ@res@left
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpatharc{-90}{90}{-2\pgf@circ@res@other and \pgf@circ@res@up}
- \pgfpathclose
- \pgf@circ@draworfill
- }
-%%% american nand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \pgfcircdeclarelogicport{nand}{1}{
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@temp}}
- \advance\pgf@circ@res@count by -1
- \repeat
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right} {0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/circle width}\pgf@circ@res@right
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nand port/port width}\pgf@circ@res@right
- \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpatharc{-90}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}
- \pgfpathclose
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgf@circ@draworfill
-}
-%%% american nor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{nor}{2}{
- \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/angle}}%
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
-
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/port width}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/angle}}%
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american nor port/circle width}\pgf@circ@res@right
- \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
- \advance\pgf@circ@res@other by -\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpathclose
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgf@circ@draworfill
-}
-%%% american or %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{or}{2}{
- \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/angle}}%
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
-
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/port width}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american or port/angle}}%
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpathclose
-
- \pgf@circ@draworfill
-}
-%%% american xor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{xor}{3}{
- \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xor port/angle}{\pgf@circ@math@angle}%
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/distance}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
- % this compensates for the effect of the line width on the gap between the arcs
- \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
- \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \advance\pgf@circ@res@other by -\pgf@circ@math@distance
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
-
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/port width}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/angle}}%
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
-
- \pgfusepath{draw}
-}
-%%% american xnor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{xnor}{3}{
- \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xnor port/angle}{\pgf@circ@math@angle}%
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xor port/distance}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
- % this compensates for the effect of the line width on the gap between the arcs
- \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
- \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \advance\pgf@circ@res@other by -\pgf@circ@math@distance
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
-
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/angle}}%
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/circle width}\pgf@circ@res@right
- \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
- \advance\pgf@circ@res@other by -\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpathclose
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@other=\pgfkeysvalueof{/tikz/circuitikz/tripoles/american xnor port/port width}\pgf@circ@res@left
- \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
-
- \pgfusepath{draw}
-}
-
-%%% Original one-input ports
-
-\pgfdeclareshape{american not port}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgf@circ@draworfill
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- }
-}
-
-\pgfdeclareshape{invschmitt}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- %draw inner shape
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
-
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- }
-}
-
-\pgfdeclareshape{schmitt}{
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \left
- \pgf@x=-.8\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- %draw inner shape
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
-
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- }
-}
-
-
-%%% start european logic ports, from John Kormylo
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-
-% #1 - name
-% #2 - text inside
-% #3 - number of inputs
-% #4 = is it a not?
-
-\long\def\pgfcircdeclareeurologicport#1#2#3#4{
- \pgfdeclareshape{european #1 port}
- {
- \savedmacro\resize{% automatic
- \pgf@circ@res@up = \pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@circ@Rlen
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgf@circ@res@down = -\pgf@circ@res@up
- \pgf@circ@res@right = \pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/width}\pgf@circ@Rlen
- \pgf@circ@res@right = .5\pgf@circ@res@right
- \pgf@circ@res@left = -\pgf@circ@res@right
- }%
- \savedmacro\inputs{% get number of inputs
- \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
- \ifnum\pgf@circ@res@count=0
- \pgf@circ@res@count=\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/inputs}\relax%
- \fi
- \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
- \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
- \def\inputs{\the\pgf@circ@res@count}%
- }%
- \savedanchor\step{% 1/2 gap at edges
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/height}\pgf@circ@Rlen
- \divide\pgf@circ@res@step by #3
- \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
- }%
- \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}%
- \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}%
- \savedanchor\left{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
- \savedanchor\right{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}%
- \savedanchor\origin{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/origin}\pgf@circ@res@right}{0pt}}%
-
- \anchor{center}{\origin}% for backwards compatibility
- % the text anchor overlaps the logic symbol
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}%
- % create input anchors
- \ifnum#3=1\relax
- \anchor{in}{\pgfpoint{\pgf@circ@res@left}{0pt}}% or \step
- \else
- \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@european #1 port\endcsname{%
- \pgfmathloop%
- \ifnum\pgfmathcounter>#3%
- \else%
- %\pgfutil@ifundefined{pgf@anchor@european #1 port@in \pgfmathcounter}{% redundant
- \expandafter\xdef\csname pgf@anchor@european #1 port@in \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
- }%
- \expandafter\xdef\csname pgf@anchor@european #1 port@bin \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{4}{#1}% defined above
- }%
- %}{}%
- \repeatpgfmathloop%
- }
- \fi
- \anchor{out}{\northeast\pgf@y=0pt}
- \anchor{bout}{\right\pgf@y=0pt}
-
- \anchor{left}{\left}% edges of component minus leads
- \anchor{right}{\right}
-
- \anchor{north east}{\northeast}% see \Compass macro
- \anchor{south west}{\southwest}
- \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfpoint{0cm}{\pgf@circ@res@up}}
- \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{0cm}}
- \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfpoint{0cm}{\pgf@circ@res@down}}
- \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{0cm}}
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgfpathrectanglecorners
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \endpgfscope
- \ifnum#3=1\relax
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}%
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
- \else
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- %\pgf@circ@res@count = #3\relax% redundant
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@left}
- {\pgf@circ@res@temp}}
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{%
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
- %
- \edef\pgf@temp{not}
- \edef\pgf@circ@temp{#4}
- \ifx\pgf@temp\pgf@circ@temp % is a not
- \pgfpathmoveto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/reserved}\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/european #1 port/not height}\pgf@circ@res@up}}
- \fi
- %
- \pgfusepath{draw}
- %
- \pgfpathmoveto{\pgfpointorigin}
- \pgftext{#2}
- %
- %
- %
- }
- }
-}
-\pgfcircdeclareeurologicport{and}{\&}{\pgf@circ@res@count}{}
-\pgfcircdeclareeurologicport{or}{$\ge 1$}{\pgf@circ@res@count}{}
-\pgfcircdeclareeurologicport{xor}{$=1$}{\pgf@circ@res@count}{}
-\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
-\pgfcircdeclareeurologicport{nand}{\&}{\pgf@circ@res@count}{not}
-\pgfcircdeclareeurologicport{nor}{$\ge 1$}{\pgf@circ@res@count}{not}
-\pgfcircdeclareeurologicport{xnor}{$=1$}{\pgf@circ@res@count}{not}
-
-%% end european logic ports
-
-\long\def\pgfcircdeclaretransistor#1#2#3{
- \pgfdeclareshape{#1}
- {
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northeast{% upper right
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=0pt
- }
- \savedanchor\left{%center left
- \pgf@y=0pt
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/width}\pgf@circ@Rlen
- }
- \anchor{text}{
- \northeast
- \pgf@y=.7\pgf@y
- \pgf@x= \pgf@circ@Rlen
- \pgf@x=0.1\pgf@x
- }
- \anchor{pathstart}{ % south
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{pathend}{
- \northeast
- }
- \anchor{north}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \northeast
- \pgf@y=0pt
- }
- \anchor{south}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{south west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- }
- \anchor{north east}{
- \northeast
- }
- \anchor{north west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{south east}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{B}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{base}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{G}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{gate}{
- \northeast
- \pgf@circ@res@step=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{nobase}{
- \left
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@x
- }
- \anchor{nogate}{
- \left
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@x
- }
- \anchor{E}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{emitter}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{C}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{collector}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{D}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- \anchor{drain}{
- \northeast
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction}\pgf@y
- }
- #2
- \backgroundpath{
- \pgftransformationadjustments
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- %
- \ifnum \pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/curr direction} > 0
- \pgf@circuit@trans@ntypetrue
- \else
- \pgf@circuit@trans@ntypefalse
- \fi
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = \pgf@x
- \left
- \pgf@circ@res@left = \pgf@x
- %
- #3
- % BODY DIODE
- \ifpgf@circuit@fet@bodydiode
- \drawbodydiode{#1}
- \fi
- %
- }
-}
-}
-
-\long\def\drawbodydiode#1{
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgftransformrotate{90}
- \pgftransformscale{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode scale}}
- \ifpgf@circuit@fulldiode
- \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \else
- \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \fi
- \endpgfscope
- % Draw stroke line
- \ifpgf@circuit@strokediode
- \pgfpathmoveto{\pgfpointanchor{pgf@bodydiode}{west}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
- \pgfusepath{stroke}
- \fi
- %Draw upper connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope{}
- %Draw lower connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope
-}
-
-\long\def\declarebpt#1{
- \pgfcircdeclaretransistor{#1}{}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transistor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@ntype
- \pgftransformlineattime{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/arrow pos}}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/arrow pos}}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height 2}\pgf@circ@res@up}%
- }
- \fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \ifpgf@circuit@bpt@drawphoto
- \pgfscope
- \pgfsetarrowsstart{latexslim}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
- \else
- \ifpgf@circuit@bpt@drawbase
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
- \fi
- }
-}
-
-\declarebpt{npn}
-\declarebpt{pnp}
-
-\long\def\declareigbt#1{
- \pgfcircdeclaretransistor{#1}{}
- {
- %draw upper connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- %draw thicker gate lines
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %draw lower connection
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transiytor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@ntype
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{.5}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height 2}\pgf@circ@res@up}%
- }
- \fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- %draw gate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@up}}
- \fi
- \pgfusepath{draw}
- }
-}
-
-\declareigbt{pigbt}
-\declareigbt{nigbt}
-\declareigbt{Lnigbt}
-\declareigbt{Lpigbt}
-
-
-\pgfcircdeclaretransistor{nmos}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/arrow pos}}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
-
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-}
-
-
-\pgfcircdeclaretransistor{pmos}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/arrow pos}}{%
- \pgfpoint%
- {\pgf@circ@res@right}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
-
-
- \pgfusepath{draw}
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
- \ifpgf@circuit@pmos@nocircle\else
- \pgfpathcircle{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left - \pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
- {\pgf@circ@res@up+\pgf@circ@res@down}}{\pgfkeysvalueof{/tikz/circuitikz/nodes width}*\pgf@circ@Rlen}
- \ifpgf@circuit@pmos@emptycircle
- \pgfsetfillcolor{white}
- \fi
- \pgfusepath{draw,fill}
- \fi
-}
-
-%% HEMT FET Transistor
-\pgfcircdeclaretransistor{hemt}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{2\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/hemt/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-\long\def\drawfetcore#1{
- \pgftransformationadjustments
- %top connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up}}
- \ifpgf@circuit@trans@depletiontype
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \else
-
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.45}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@up*0.25}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down*0.25}}
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base height}\pgf@circ@res@down}}
- \fi
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %Bulk connection line
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- %bottom connection
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- %draw thick gate line
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
-
- \pgftransformlineattime{.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \ifpgf@circuit@trans@ntype
- \else
- \pgftransformrotate{180}
- \fi
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
-\endpgfscope
-
-% GATE CONNECTION
-\ifpgf@circuit@bpt@drawgate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/gate width}\pgf@circ@res@left}
- {-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/#1/conn height}\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-\fi
-
-}
-
-\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
-{\pgfcircdeclaretransistor{#1}{
- \anchor{bulk}{\left\pgf@x=0pt}
- \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
- #2
- }
- {#3}
-}
-
-
-\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nfet}
-}
-
-
-\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pfet}
-}
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfete}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
-\fi
-}
-
-
-
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
-\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfetebulk}
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-
-
-% N-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{nigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfete}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/pigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
-\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfetebulk}
-}
-
-
-% P-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{pigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-\pgfcircdeclaretransistor{njfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint{\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-\pgfcircdeclaretransistor{pjfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height}\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.4}{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgf@circ@res@left}%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfdeclaretransistorwrapperaddbulk{isfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- % DRAIN CONNECTION
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- % DRAIN
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % GATE, DEPLETION TYPE
- \pgfscope %% added
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base height}\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth} %% added
- \pgfusepath{draw} %% added
- \endpgfscope %% added
-
- % BULK
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- % SOURCE
- \pgfpathmoveto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/gate height}\pgf@circ@res@down}}
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
- % ARROW
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{.6}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfusepath{draw}
-
- % Wavy lines
- \pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave width}\pgf@circ@res@up}{-\pgfkeysvalueof{/tikz/circuitikz/tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-
-%% Black thyristor
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{anode}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{G}{
- \northeast
- }
- \anchor{cathode}{
- \northeast
- \pgf@y=0cm
- }
-}
-{\ctikzvalof{tripoles/thyristor/height 2}}
-{fullthyristor}{\ctikzvalof{tripoles/thyristor/height}}
-{\ctikzvalof{tripoles/thyristor/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty thyristor
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{anode}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{G}{
- \northeast
- }
- \anchor{cathode}{
- \northeast
- \pgf@y=0cm
- }
-}
-{\ctikzvalof{tripoles/thyristor/height 2}}
-{emptythyristor}{\ctikzvalof{tripoles/thyristor/height}}
-{\ctikzvalof{tripoles/thyristor/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfscope
- % to allow filling, we need to draw explicitily the stroke here.
- \pgfsetlinewidth{\pgfstartlinewidth}
- \ifpgf@circuit@bipole@strokedsymbol
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty triac
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{G}{
- \northeast
- }
- \anchor{anode}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{cathode}{
- \northeast
- \pgf@y=0cm
- }
-}
-{\ctikzvalof{tripoles/triac/height}}
-{emptytriac}
-{\ctikzvalof{tripoles/triac/height}}
-{\ctikzvalof{tripoles/triac/width}}
-{
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgf@circ@draworfill
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Full triac
-
-\pgfcircdeclarebipole{
- \anchor{gate}{
- \northeast
- }
- \anchor{G}{
- \northeast
- }
- \anchor{anode}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{cathode}{
- \northeast
- \pgf@y=0cm
- }
-}
-{\ctikzvalof{tripoles/triac/height}}
-{fulltriac}
-{\ctikzvalof{tripoles/triac/height}}
-{\ctikzvalof{tripoles/triac/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-\pgfcircdeclarebipole{
- \anchor{out 1}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{out 2}{
- \northeast
- \pgf@y=.8\pgf@y
- }
-}
-{\ctikzvalof{tripoles/toggleswitch/height 2}}
-{toggleswitch}
-{\ctikzvalof{tripoles/toggleswitch/height}}
-{\ctikzvalof{tripoles/toggleswitch/width}}
-{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetdash{}{0cm}
-}
-
-%% operational and instrumentation amplifiers
-
-\pgfdeclareshape{op amp}
-{
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
-
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \pgfsetrectcap
- \pgfusepath{draw}
-
-
- }
-}
-
-%op amp shape as in european standard en 60617
-\pgfdeclareshape{en amp}
-{
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {
- \left
- \pgf@x = \ctikzvalof{tripoles/en amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{up}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{down}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{tripoles/thickness}\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \pgfsetrectcap
- \pgfusepath{draw}
-
-
- \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\hbox{\ctikzvalof{tripoles/en amp/font2}\ctikzvalof{tripoles/en amp/text}}}
- % \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font2}$\mathstrut{\triangleright}\,\mathrm{A}$}
- }
-}
-
-%%Transkonduktanzverstรคrker
-\pgfdeclareshape{gm amp}
-{
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{\northwest
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
- \pgfpoint{-.5\wd\pgfnodeparttextbox+.25\pgf@x}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
- %Umrandung:
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0}} %geรคndert startpunkt neu am ausgangsstrich
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}%vom Ausgang nach oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}%ecke links unten nach rechts unten
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/gm amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{0pt}} %
- \pgfsetrectcap
- \pgfusepath{draw}
-
- }
-}
-
-%% instrumentation amplifier
-
-\pgfdeclareshape{inst amp}
-{
- % when tikz calls the anchor it wants the relative position in the lengths
- % \pgf@x \pgf@y
- % \pgfpoint* functions set that variables
- % anchors are visible outside and run on use
- \anchor{center}{\pgfpointorigin}
- % savedanchors are internals and run on node creation (not use)
- % bounding-box top left
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{nw}{
- \northwest
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{.6\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- % reference voltage input anchors.
- \savedanchor\refv{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/refv pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{.6\pgf@circ@res@up}}
- }
- % we need both because they are normally drawn under the amp, and if you
- % mirror it vertically you need them
- \anchor{refv up}{
- \refv
- }
- \anchor{refv down}{
- \refv
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- % let's start drawing the component
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- %
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- % main component, normally in thicker lines
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
- %first point (near output)
- \pgfpathmoveto{\pgfpoint{1.4\pgf@circ@res@right}{0}}
- %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
- \pgfpathlineto{\pgfpoint{1.4\pgf@circ@res@right}{.6\pgf@circ@res@up}}
- % and then to the input "front up", "down", to the output short side "down"
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{1.4\pgf@circ@res@right}{.6\pgf@circ@res@down}}
- % ...and close
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- % input terminal -
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@circ@res@up}}
- %
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@circ@res@up}}
- %
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
-
- % input terminal +
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@circ@res@down}}
- %
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
- % output lead
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}} %
- %
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-% instrumentation amplifier, with terminals for gain resistance between inputs
-\pgfdeclareshape{inst amp ra}
-{
- \anchor{center}{\pgfpointorigin}
- % bounding-box top left
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{nw}{
- \northwest
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y\pgf@x=0pt\relax
- }
- \anchor{north}{
- \northwest\pgf@x=0pt\relax
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
- }
- % inputs (+-)
- \savedanchor\inOneFixed{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- % R ampli anchors. They are by default at 20% more than R-length distance
- % you can change that with the `ra pos` key (use 0.5 for one-R).
- \savedanchor\raOneFixed{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{ra up}{
- \inOneFixed
- }
- \anchor{ra down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\raOne{%
- \pgf@y=\pgf@circ@Rlen
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/ra pos}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{ra-}{
- \raOne
- }
- \anchor{ra+}{
- \raOne
- \pgf@y=-\pgf@y
- }
- % power supplies
- \savedanchor\up{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{.4\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- % reference voltage input anchors.
- \savedanchor\refv{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/height}\pgf@circ@Rlen
- \pgf@y=0.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/width}\pgf@circ@Rlen
- \pgf@x=0.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/refv pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{.4\pgf@circ@res@up}}
- }
- % we need both because they are normally drawn under the amp, and if you
- % mirror it vertically you need them
- \anchor{refv up}{
- \refv
- }
- \anchor{refv down}{
- \refv
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- % drawing of the component
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- % main component, normally in thicker lines
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
- %primer punto: la linea de salida (lado componente)
- \pgfpathmoveto{\pgfpoint{1.4\pgf@circ@res@right}{0}}
- %from the exit to the top (short side)... (note that the .4 must be copied in \up anchor
- \pgfpathlineto{\pgfpoint{1.4\pgf@circ@res@right}{.4\pgf@circ@res@up}}
- % and then to the input "front up", "down", to the output short side "down"
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{1.4\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- % ...and close
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- % ra terminal -
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
- %
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
- % ra terminal +
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
- %
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {-\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
- % input terminal -
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@circ@res@up}}
- %
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@circ@res@up}}
- %
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
-
- % input terminal +
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@circ@res@down}}
- %
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
- % output lead
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}} %
- %
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-%% Potentiometer
-\pgfcircdeclarebipole{
- \anchor{wiper}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
- \anchor{W}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
-}
-{\ctikzvalof{bipoles/potentiometer/height 2}}
-{potentiometer}{\ctikzvalof{bipoles/potentiometer/height}}
-{\ctikzvalof{bipoles/potentiometer/width}}
-{
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \divide \pgf@circ@res@step by 12
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
-
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-
- \pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-
-
-
-%% Generic tunable
-
-\pgfcircdeclarebipole{
- \anchor{wiper}{
- \northeast
- \pgfpoint{0pt}{\pgf@y}
- }
-}
-{\ctikzvalof{bipoles/generic potentiometer/height 2}}
-{genericpotentiometer}
-{\ctikzvalof{bipoles/generic potentiometer/height}}
-{\ctikzvalof{bipoles/generic potentiometer/width}}
-{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
- \pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-\pgfdeclareshape{mixer}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{adder}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/adder/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{oscillator}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \else
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/oscillator/width}\pgf@circ@Rlen
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{north}{
- \northwest
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@x=.5\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y}
- \anchor{north east}{ \northwest \pgf@x=0pt\relax}
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{text}{
- \pgf@x=-2\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@Rlen{}
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
-
- % draw outer box
- \ifpgf@circuit@boxed{}
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{circulator}
-{
- \savedanchor\northwest{
- \ifpgf@circuit@boxed
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/circulator/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{3}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{box}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed{}
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % inner arrow
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
- \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-
-% Wilkinson divider
-\pgfdeclareshape{wilkinson}{
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x= \pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/wilkinson/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{out2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgf@circ@twoportbox
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- % draw inner resisitor - european or american style is recognised
- {
- \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgftransformrotate{90}
-
- % calculate size of resistor
- \ifpgf@circuit@europeanresistor
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{genericshape}{center}{}{pgf@generic}{\pgfusepath{fill}}
- \else
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{resistorshape}{center}{}{pgf@resistor}{\pgfusepath{fill}}
- \fi
- }
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-
-% electromechanical device (motor/generator)
-\pgfdeclareshape{elmech}
-{
- \savedanchor\northwest{
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/elmech/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgfpointorigin
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -.5\ht\pgfnodeparttextbox
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{%
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{top}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathstart}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathend}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{bottom}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@Rlen
- \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfscope % clip the bar: whole size minus the circle
- \pgfpathrectanglecorners{\pgfpoint{-.5\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfsetfillcolor{black}
- \pgfusepath{fill, draw}
- \endpgfscope
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgfsetfillcolor{white}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfusepath{draw, fill}
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{magnetron}
-{
- \savedanchor\northwest{
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/magnetron/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{anode}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{cathode1}{
- \northwest
- \pgf@circ@res@step=\pgf@y
- \pgfmathparse{cos(105)}
- \pgf@x=\pgfmathresult\pgf@circ@res@step
- \pgfmathparse{sin(105)}
- \pgf@y=\pgfmathresult\pgf@circ@res@step
- %\pgfpointorigin
- %\pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
- }
- \anchor{cathode2}{
- \northwest
- \pgf@circ@res@step=\pgf@y
- \pgfmathparse{cos(75)}
- \pgf@x=\pgfmathresult\pgf@circ@res@step
- \pgfmathparse{sin(75)}
- \pgf@y=\pgfmathresult\pgf@circ@res@step
- %\pgfpointorigin
- %\pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
- }
- \anchor{text}{
- \pgfpointorigin
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -.5\ht\pgfnodeparttextbox
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{%
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{top}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathstart}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathend}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{bottom}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgf@circ@res@step=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@Rlen
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfmathsetlength{\pgf@circ@res@other}{sin(15)*\pgf@circ@res@up}
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- %create outer circle
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@right}
- \pgf@circ@draworfill
- %create chambers
- \foreach \angle in {45,135,225,315}{
- \pgfpathmoveto{ \pgfpointpolar{\angle}{0.6\pgf@circ@res@right}}
- \pgfpathlineto{ \pgfpointpolar{\angle}{\pgf@circ@res@right}}
- }
- \pgfsetroundcap
- \pgfusepath{draw}
- \pgfscope
- %draw connection from outside
- %anode
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- %cathodes
- \pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- %create cathode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.15\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- %create anode
- \pgfpathmoveto{\pgfpoint{0.3\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% Electronic tubes, submitted by J. op den Brouw
-
-% Draw tube outline
-\def\pgf@circ@tubes@drawtube{%
- \ifdim\ctikzvalof{tubes/width}pt>\ctikzvalof{tubes/height}pt\relax
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfutil@tempdima=\pgf@circ@res@right
- \advance\pgfutil@tempdima by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgfutil@tempdima}{\pgf@circ@res@up}}
- \pgfpatharc{90}{-90}{\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{-\pgfutil@tempdima}{-\pgf@circ@res@up}}
- \pgfpatharc{270}{90}{\pgf@circ@res@up}
- \else
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{0pt}}
- \pgfutil@tempdima=\pgf@circ@res@up
- \advance\pgfutil@tempdima by -\pgf@circ@res@right
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
- \pgfpatharc{180}{0}{\pgf@circ@res@right}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfutil@tempdima}}
- \pgfpatharc{180}{0}{-\pgf@circ@res@right}
- \fi
- \pgfpathclose
-}
-
-%% The diode (tube), triode, tetrode and pentode only differ in the
-%% number of grids. So we construct a generic declare function in
-%% which we can put code for the grid anchors and grid drawing code
-%% \pgfcircdeclaretube{tube name}{grid anchors}{grid drawing code}
-\long\def\pgfcircdeclaretube#1#2#3{%
- \pgfdeclareshape{#1}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@Rlen
- \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@Rlen
- % x and y should be half the Rlen
- \pgf@y=\pgf@circ@res@up
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgf@circ@res@right
- \pgf@x=.5\pgf@x
- }
- \anchor{north} {%
- \northwest
- \pgf@x=0pt
- }
- \anchor{east}{%
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0pt
- }
- \anchor{south}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{west}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{north west}{%
- \northwest
- }
- \anchor{north east}{%
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{anode} {%
- \northwest
- \pgf@x=0pt
- }
- \anchor{cathode}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
- }
- \anchor{cathode 1}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
- }
- \anchor{cathode 2}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=-\ctikzvalof{tubes/cathode width}\pgf@x
- }
- \anchor{filament 1}{%
- \northwest
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
- \pgf@x=\pgfmathresult\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{filament 2}{%
- \northwest
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
- \pgf@x=-\pgfmathresult\pgf@x
- \pgf@y=-\pgf@y
- }
-
- % Extra anchors
- #2
-
- \backgroundpath{
- \pgfscope
- % Line width for tripoles
- \pgfsetlinewidth{\ctikzvalof{tripoles/thickness}\pgflinewidth}
-
- % Setup to draw tube
- \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@Rlen
- \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@Rlen
- \pgf@circ@res@up=\ctikzvalof{tubes/tube radius}\pgf@circ@res@up
- \pgf@circ@res@right=\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
-
- % Tube fill color (if any)
- \ifx\tikz@fillcolor\pgfutil@empty
- \else
- \pgfscope
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgf@circ@tubes@drawtube
- \pgfusepath{fill}
- \endpgfscope
- \fi
-
- % Tube outline
- \pgf@circ@tubes@drawtube
-
- % Setup to draw grid, filament, anode and cathode
- \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@Rlen
- \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@Rlen
- \pgf@circ@res@up=0.5\pgf@circ@res@up
- \pgf@circ@res@right=0.5\pgf@circ@res@right
-
- % Grid drawing
- #3
-
- % Filament (is not drawn by default)
- \ifpgf@circuit@tubes@filament
- \pgf@circ@res@temp=-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up
- \advance\pgf@circ@res@temp by -\ctikzvalof{tubes/filament distance}\pgf@circ@res@up
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
- \pgf@xa=\pgfmathresult\pgf@circ@res@right
- \pgfmathparse{\ctikzvalof{tubes/tube radius}+\ctikzvalof{tubes/tube radius}*cos(\ctikzvalof{tubes/filament angle}}
- \pgf@ya=\pgfmathresult\pgf@circ@res@up
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@ya}}
- \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@ya}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@circ@res@up}}
- \pgf@circuit@tubes@filamentfalse
- \fi
-
- % Anode (or plate)
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}} % north
- \pgfpathlineto{\pgfpoint{0pt}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
-
- % Cathode
- \ifpgf@circuit@tubes@nocathode
- \pgf@circuit@tubes@nocathodefalse
- \else
- \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
- \ifpgf@circuit@tubes@fullcathode
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
- \pgf@circuit@tubes@fullcathodefalse
- \else
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-\ctikzvalof{tubes/cathode right extend}\pgf@circ@res@up}}
- \fi
- \fi
-
- % Draw the background
- \pgfusepath{draw}
-
- \endpgfscope
- }
- }
-}
-
-\pgfcircdeclaretube{diodetube}{}{} % shape diode already exists
-
-\pgfcircdeclaretube{triode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
- \anchor{control} {%
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
-}
-{
- % Grid protrusion
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
-}
-
-\pgfcircdeclaretube{tetrode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \pgf@y=0.5\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{control} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \pgf@y=0.5\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{screen} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
- \pgf@y=0.5\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
-}
-{
- % Grid x/y points
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
- \pgfutil@tempdimb=-\pgfutil@tempdima
- \pgfutil@tempdima=0.5\pgfutil@tempdima
- \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \pgfutil@tempdimb=0.5\pgfutil@tempdimb
- \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- % Grid protrusion
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
-}
-
-\pgfcircdeclaretube{pentode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{control} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{screen} {%
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
- \anchor{suppressor} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
-}
-{
- % Grid x/y points
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
- \pgfutil@tempdimb=-\pgfutil@tempdima
- \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- % Grid protrusion
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
-}
-
-\pgfcircdeclaretube{pentode suppressor to cathode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{control} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{screen} {%
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
-}
-{
- % Grid x/y points
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
- \pgfutil@tempdimb=-\pgfutil@tempdima
- \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- % Grid protrusion
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \ifnum\pgf@circ@count@a>1\relax
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
- \fi
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
- % Grid: connection from suppressor to cathode
- \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima-2*\ctikzvalof{tubes/grid separation}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
-
-}
-
-%%%---------- close: tex/pgfcirctripoles
-%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
-%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Quadripoles
-
-\long\def\pgfcircdeclarequadpole#1#2#3{
- \pgfdeclareshape{#1}
- {
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedmacro{\stretto}{\def\stretto{\ctikzvalof{quadpoles/#1/inner}}}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=.5\pgf@circ@Rlen
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
- }
- \anchor{A2}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{B1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{A1}{
- \northwest
- }
- \anchor{B2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- %% notice for the dot anchors: I use the cute inductors as reference
- %% size; if you change one you have to change all of them.
- \anchor{inner dot A1}{
- \northwest
- \pgfmathsetlength\pgf@x{\stretto*\pgf@x +
- \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
- \pgfmathsetlength\pgf@y{0.5*\pgf@circ@Rlen}
- }
- \anchor{outer dot A1}{
- \northwest
- \pgfmathsetlength\pgf@x{\stretto*\pgf@x -
- \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
- \pgfmathsetlength\pgf@y{0.5*\pgf@circ@Rlen}
- }
- \anchor{inner dot A2}{
- \northwest
- \pgfmathsetlength\pgf@x{\stretto*\pgf@x +
- \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
- \pgfmathsetlength\pgf@y{-0.5*\pgf@circ@Rlen}
- }
- \anchor{outer dot A2}{
- \northwest
- \pgfmathsetlength\pgf@x{\stretto*\pgf@x -
- \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
- \pgfmathsetlength\pgf@y{-0.5*\pgf@circ@Rlen}
- }
- \anchor{inner dot B1}{
- \northwest
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@x -
- \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
- \pgfmathsetlength\pgf@y{0.5*\pgf@circ@Rlen}
- }
- \anchor{outer dot B1}{
- \northwest
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@x +
- \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
- \pgfmathsetlength\pgf@y{0.5*\pgf@circ@Rlen}
- }
- \anchor{inner dot B2}{
- \northwest
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@x -
- \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
- \pgfmathsetlength\pgf@y{-0.5*\pgf@circ@Rlen}
- }
- \anchor{outer dot B2}{
- \northwest
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@x +
- \ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@Rlen/2}
- \pgfmathsetlength\pgf@y{-0.5*\pgf@circ@Rlen}
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{base}{
- \northwest
- \pgf@x=0pt
- }
- #3
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- #2
- }
- }
-}
-
-
-\def\pgf@circ@drawtransformerbasicanchor{
- \pgfkeysvalueof{/tikz/circuitikz/quadpoles/trans/height}
- \anchor{AA2}{
- \northwest
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{AA1}{
- \northwest
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/transformer/height1}\pgf@y
- }
-}
-
-\def\pgf@circ@drawtransformerbasicbody{
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@down}%
- }
-
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{pgf@inductor1}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
-
- \endpgfscope
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@up}%
- }
-
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{pgf@inductor2}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@inductor1}{b}}
-
- \pgfpathmoveto{\pgfpointanchor{pgf@inductor1}{a}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@inductor2}{a}}
-
- \pgfpathmoveto{\pgfpointanchor{pgf@inductor2}{b}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
-}
-
-
-\pgfcircdeclarequadpole{transformer}{
- \pgf@circ@drawtransformerbasicbody
-}{\pgf@circ@drawtransformerbasicanchor}
-
-\pgfcircdeclarequadpole{transformer core}{
-
- \pgf@circ@drawtransformerbasicbody
-
- \pgfmoveto{\pgfpoint%
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@right}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgfmoveto{\pgfpoint%
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint
- {\ctikzvalof{quadpoles/transformer core/core width}\pgf@circ@res@left}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
- \pgfusepath{draw}
-}{\pgf@circ@drawtransformerbasicanchor}
-
-
-\pgfcircdeclarequadpole{gyrator}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/quadpoles/thickness}\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{.7*\stretto\pgf@circ@res@down}}
- \pgfpatharc{90}{270}{.7*\stretto\pgf@circ@res@down}
-
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{.7*\stretto\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{.7*\stretto\pgf@circ@res@down}
- \pgfusepath{draw}
-
-}{}
-
-%% four-port
-% defines a general outer box for four-ports
-% TikZ usage:
-% \draw (0,0) node[coupler](coup){\SI{-3}{dB}}
-% (coup.port1) to[short,-o] ++(-1,0)
-%
-
-\long\def\pgfcircdeclarefourport#1#2{
- \pgfdeclareshape{#1}{
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=.5\pgf@circ@Rlen
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/quadpoles/#1/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{port1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{port4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
- \anchor{1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
-
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % draw inner stuff
- #2
-
- % draw inner text
- \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
- }
- }
-}
-
-% four-port
-\pgfcircdeclarefourport{fourport}{}
-
-
-% straight coupler
-\pgfcircdeclarefourport{coupler}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
-}
-
-% "bended" coupler
-\pgfcircdeclarefourport{coupler2}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% contrib Kristofer M. Monisit
-
-\pgfdeclareshape{fd op amp}
-{
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\outline{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y\pgf@x=0pt\relax
- }
- \anchor{north}{
- \northwest\pgf@x=0pt\relax
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOneFixed{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out up}{
- \northwest
- \pgf@y=.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{out down}{
- \northwest
- \pgf@y=-.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{out +}{
- \outline
- \pgf@y=.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{out -}{
- \outline
- \pgf@y=-.5\pgf@y
- \pgf@x=-.7\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-.7\pgf@x
- }
-
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-.7\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-.7\pgf@x \pgf@y=-\pgf@y }
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- % Triangle
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/quadpoles/thickness}\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
-
- % Negative output terminal
- \pgfpathmoveto{\pgfpoint
- {0.7\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@oplusup$-$\else$+$\fi}
-
- % Positive output terminal
- \pgfpathmoveto{\pgfpoint
- {0.7\pgf@circ@res@right}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{0.3\pgf@circ@res@left}{.3\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/font} \ifpgf@circuit@oa@oplusup$+$\else$-$\fi}
-
- \pgfsetrectcap
- % Draw them all!
- \pgfusepath{draw}
-
- }
-}
-
-
-%% instrumentation amplifier diff output
-
-\pgfdeclareshape{fd inst amp}
-{
- % when tikz calls the anchor it wants the relative position in the lengths
- % \pgf@x \pgf@y
- % \pgfpoint* functions set that variables
- % anchors are visible outside and run on use
- \anchor{center}{\pgfpointorigin}
- % savedanchors are internals and run on node creation (not use)
- % bounding-box top left
- \savedanchor\northwest{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{nw}{
- \northwest
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y\pgf@x=0pt\relax
- }
- \anchor{north}{
- \northwest\pgf@x=0pt\relax
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/op amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/up pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{.6\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- % reference voltage input anchors.
- \savedanchor\refv{%
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/width}\pgf@circ@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/refv pos}}{
- \pgfpoint{
- \pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{.7\pgf@circ@res@right}{.6\pgf@circ@res@up}}
- }
- % we need both because they are normally drawn under the amp, and if you
- % mirror it vertically you need them
- \anchor{refv up}{
- \refv
- }
- \anchor{refv down}{
- \refv
- \pgf@y=-\pgf@y
- }
- \savedanchor\outport{
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/width}\pgf@circ@Rlen
- \pgf@x=-.5\pgf@x
- \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
- }
- \anchor{out}{
- \outport
- \pgf@y=0pt
- }
- \anchor{out +}{
- \outport
- }
- \anchor{out -}{
- \outport
- \pgf@y=-\pgf@y
- }
- \savedanchor\outportfixed{
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/height}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/width}\pgf@circ@Rlen
- \pgf@x=-.5\pgf@x
- }
- \anchor{out up}{
- \outportfixed
- }
- \anchor{out down}{
- \outportfixed
- \pgf@y=-\pgf@y
- }
- %
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- % let's start drawing the component
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- %
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- % main component, normally in thicker lines
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/tripoles/thickness}\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
- %first point (near output)
- \pgfpathmoveto{\pgfpoint{1.4\pgf@circ@res@right}{0}}
- %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
- \pgfpathlineto{\pgfpoint{1.4\pgf@circ@res@right}{.6\pgf@circ@res@up}}
- % and then to the input "front up", "down", to the output short side "down"
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{1.4\pgf@circ@res@right}{.6\pgf@circ@res@down}}
- % ...and close
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- % input terminal up
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@up}}
- %
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@up}}
- %
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup$+$\else$-$\fi}
-
- % input terminal down
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@down}}
- %
- \pgfpathlineto{\pgfpoint
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@left}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup$-$\else$+$\fi}
- % output leads down and up
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@down}} %
- \pgftext[right, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@down}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$-\;$\else$+\;$\fi}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@up}} %
- \pgftext[right, at=\pgfpoint{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/port width}\pgf@circ@res@right}{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/input height}\pgf@circ@res@up}]{\pgfkeysvalueof{/tikz/circuitikz/tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$+\;$\else$-\;$\fi}
- %
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-%%%---------- close: tex/pgfcircquadpoles
-%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
-%%%---------- open: tex/pgfcircmultipoles.tex
-% Copyright 2007-2009 by Massimo Redaelli
-% Copyright 2019 by Romano Giannetti
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Multipoles
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% counters for pin accounting...
-\def\pgf@circ@dip@pin@shift{0.5}
-\def\pgf@circ@qfp@pin@shift{0.25}
-
-% derived from https://tex.stackexchange.com/a/146753/38080
-% original author Mark Wibrow
-% Thanks also to John Kormylo https://tex.stackexchange.com/a/372996/38080
-% a lot of thanks to @marmot for the un-rotation hint
-% https://tex.stackexchange.com/a/473571/38080
-
-% DIP (dual in line package) chips
-
-\pgfdeclareshape{dipchip}{
- \savedmacro\numpins{%
- \pgf@circ@count@a=\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/num pins}%
- \def\numpins{\the\pgf@circ@count@a}
- }
- \savedanchor\centerpoint{%
- \pgf@x=-.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \savedanchor\origin{\pgfpoint{0pt}{0pt}}
- \anchor{center}{\origin}
- \anchor{text}{\centerpoint}% to adjust text
- \saveddimen\height{%
- \pgfmathsetlength\pgf@x{((\numpins)
- *\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/pin spacing})*\pgf@circ@Rlen/2}%
- }%
- \saveddimen{\chipspacing}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/pin spacing}}}
- \saveddimen{\width}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/width}}}
- \saveddimen{\extshift}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins width}}}
- % standard anchors
- \savedanchor\northwest{%
- \pgfmathsetlength\pgf@y{0.5*((\numpins)
- *\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/pin spacing})*\pgf@circ@Rlen/2}%
- \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@Rlen*\pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/width}}
- }
- \anchor{dot}{\northwest
- \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
- \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- % start drawing
- \backgroundpath{%
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/multipoles/dipchip/pin spacing}\pgf@circ@Rlen
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins width}\pgf@circ@Rlen
- \pgfscope% (for the line width)
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/multipoles/thickness}\pgflinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
- \pgf@circ@draworfill
- %% upside mark
- \ifpgf@circuit@chip@topmark
- \pgfpathmoveto{\pgfpoint{0.2*\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpatharc{0}{180}{0.2*\pgf@circ@res@left}
- \fi
- \pgfusepath{stroke}%
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- % Adding the pin number
- \ifpgf@circuit@chip@shownumbers
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
- \ifpgf@circuit@chip@straightnumbers
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
- \else
- \pgfmathsetmacro{\rot}{0}
- \pgfmathsetmacro{\quadrant}{0}
- \fi
- \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
- \def\mytext{\pgfkeysvalueof{/tikz/circuitikz/multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \ifcase\quadrant % rotation 0
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation -90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or %rotation 180
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation +90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \fi
- \endpgfscope
- \ifdim\pgf@circ@res@other>0pt
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \edef\padfrac{\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pad fraction}}
- \ifnum\padfrac>0
- \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
- % left side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % right side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \else
- % left side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % right side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
- \pgfusepath{stroke}
- \endpgfscope
- \fi
- }%
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@dipchip{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\numpins\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@dipchip@pin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@dipchip@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
- }
-
-% QFP (quad flat package) chips
-
-\pgfdeclareshape{qfpchip}{
- \savedmacro\numpins{%
- \pgf@circ@count@a=\pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/num pins}%
- \def\numpins{\the\pgf@circ@count@a}
- }
- \savedanchor\centerpoint{%
- \pgf@x=-.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \savedanchor\origin{\pgfpoint{0pt}{0pt}}
- \anchor{center}{\origin}
- \anchor{text}{\centerpoint}% to adjust text
- \saveddimen\height{%
- \pgfmathsetlength\pgf@x{((\numpins+2)
- *\pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/pin spacing})*\pgf@circ@Rlen/4}%
- }%
- \saveddimen\width{%
- \pgfmathsetlength\pgf@x{((\numpins+2)
- *\pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/pin spacing})*\pgf@circ@Rlen/4}%
- }%
- \saveddimen{\chipspacing}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/pin spacing}}}
- \saveddimen{\extshift}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins width}}}
- % standard anchors
- \savedanchor\northwest{%
- \pgfmathsetlength\pgf@y{0.5*((\numpins+2)
- *\pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/pin spacing})*\pgf@circ@Rlen/4}%
- \pgf@x=-\pgf@y
- }
- \anchor{dot}{\northwest
- \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
- \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- % start drawing
- \backgroundpath{%
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@res@step = \pgfkeysvalueof{/tikz/circuitikz/multipoles/qfpchip/pin spacing}\pgf@circ@Rlen
- \pgf@circ@res@other = \pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins width}\pgf@circ@Rlen
- \pgfscope% (for the line width)
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/multipoles/thickness}\pgflinewidth}
- %% upside mark
- \ifpgf@circuit@chip@topmark
- \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2-\pgf@circ@res@step/2}}
- \pgfpathlineto{\pgfpoint{-\width/2+\pgf@circ@res@step/2}{\height/2}}
- \else
- \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2}}
- \fi
- %% rest of the shape
- \pgfpathlineto{\pgfpoint{\width/2}{\height/2}}
- \pgfpathlineto{\pgfpoint{\width/2}{-\height/2}}
- \pgfpathlineto{\pgfpoint{-\width/2}{-\height/2}}
- \pgfpathclose
- \pgf@circ@draworfill
- % Adding the pin number
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \ifpgf@circuit@chip@shownumbers
- \pgf@circ@count@a=\numpins%
- \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
- % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
- \ifpgf@circuit@chip@straightnumbers
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
- \else
- \pgfmathsetmacro{\rot}{0}
- \pgfmathsetmacro{\quadrant}{0}
- \fi
- \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
- \def\mytext{\pgfkeysvalueof{/tikz/circuitikz/multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \ifcase\quadrant % rotation 0
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \or % rotation -90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \or %rotation 180
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \or % rotation +90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \fi
- \endpgfscope
- \ifdim\pgf@circ@res@other>0pt
- \pgfscope
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins%
- \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \edef\padfrac{\pgfkeysvalueof{/tikz/circuitikz/multipoles/external pad fraction}}
- \ifnum\padfrac>0
- \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
- % left side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % bottom side pads
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
- % right side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % top side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
- \else
- % left side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % bottom side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
- % right side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % top side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \pgfusepath{stroke}
- \endpgfscope
- \fi
- }%
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@qfpchip{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\numpins%
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \expandafter\xdef\csname pgf@anchor@qfpchip@pin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@qfpchip@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop%
- }%
- }
-
-%% anchors for DIP
-\def\pgf@circ@dippinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \c@pgf@countc=\numpins\relax
- \divide\c@pgf@countc by 2
- \ifnum #1 > \the\c@pgf@countc
- % right side
- \pgfpoint{\width/2+#2*\extshift}{-\height/2+(\pgf@circ@dip@pin@shift-\c@pgf@countc+#1-1)*\chipspacing}
- \else
- \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@dip@pin@shift-#1)*\chipspacing}
-\fi
-}
-
-%% anchors for QFP
-\def\pgf@circ@qfppinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \c@pgf@countc=\numpins\relax
- \divide\c@pgf@countc by 4
- \ifnum #1 > \the\c@pgf@countc
- \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 2
- \ifnum #1 > \the\c@pgf@countb
- \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 3
- \ifnum #1 > \the\c@pgf@countb
- % 3*npins/4 < pin, top side
- \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift+\c@pgf@countb-#1)*\chipspacing}{\height/2+#2*\extshift}%
- \else
- % 2*npins/4 < pin <= 3*npins/4, right side
- \pgfpoint{\width/2+#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}%
- \fi
- \else
- % npins/4 < pin <= 2*npins/4, bottom side
- \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}{-\height/2-#2*\extshift}%
- \fi
- \else
- % <= npins/4, left side
- \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-#1)*\chipspacing}%
- \fi
-}
-
-
-%% Rotary Switch
-
-\pgfdeclareshape{rotaryswitch}
-{
- \savedanchor\northeast{%
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- % the magic number is 0.25/cos(35)
- % try to recalculate it for the actual switch
- \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@Rlen
- \pgf@circ@res@temp=.3052\pgf@circ@res@temp
- \edef\a{\ctikzvalof{multipoles/rotary/angle}}
- \edef\r{\ctikzvalof{nodes width}}
- \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@x}{\r*\pgf@circ@Rlen + \pgf@circ@res@temp}
- }
- \savedanchor\northwest{%
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- % the magic number is 0.25/cos(35)
- % try to recalculate it for the actual switch
- \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@Rlen
- \pgf@circ@res@temp=.3052\pgf@circ@res@temp
- \edef\a{\ctikzvalof{multipoles/rotary/angle}}
- \edef\r{\ctikzvalof{nodes width}}
- \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@x}{-\r*\pgf@circ@Rlen - (\a<90 ? 1 : 1-2*cos(\a))*\pgf@circ@res@temp}
- }
- \savedanchor\central{%
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- % the magic number is 0.25/cos(35)
- % try to recalculate it for the actual switch
- \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@Rlen
- \pgf@circ@res@temp=.3052\pgf@circ@res@temp
- \edef\a{\ctikzvalof{multipoles/rotary/angle}}
- \edef\r{\ctikzvalof{nodes width}}
- \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@x}{(\a<90 ? 0 : cos(\a))*\pgf@circ@res@temp}
- }
- % external square limits
- \savedanchor\extnorthwest{%
- \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@Rlen
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- \pgf@x=.3052\pgf@x % the magic number is 0.25/cos(35)
- \pgf@x=2.5\pgf@x % external square size
- \pgf@y=-\pgf@x %square thing when angle=180?
- }
- \saveddimen{\width}{\pgfmathsetlength\pgf@x{0.3052*\pgf@circ@Rlen*\ctikzvalof{tripoles/spdt/width}}}
- % radius of the connector
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % shape type
- \savedmacro{\cshape}{\def\cshape{\ctikzvalof{multipoles/rotary/shape}}}
- \savedmacro{\channels}{\def\channels{\ctikzvalof{multipoles/rotary/channels}}}
- \savedmacro{\angle}{\def\angle{\ctikzvalof{multipoles/rotary/angle}}}
- \savedmacro{\wiper}{\def\wiper{\ctikzvalof{multipoles/rotary/wiper}}}
- \savedmacro{\stepa}{\pgfmathsetmacro{\stepa}{2*\ctikzvalof{multipoles/rotary/angle}/(\ctikzvalof{multipoles/rotary/channels}-1)}}
- % mid of the lever, to stack switches
- %\anchor{mid}{\midlever}
- \anchor{mid}{\northwest
- \pgf@circ@res@temp=-\pgf@x
- \pgfmathsetlength{\pgf@x}{\pgf@circ@res@temp*(-1+cos(\wiper))}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp*sin(\wiper)}
- }
- % center anchors
- \anchor{cin}{ \northwest \pgf@y=0pt\advance\pgf@x by \radius}
- % horizontal angles
- \anchor{in}{ \northwest \pgf@y=0pt}
- \anchor{ain}{ \northwest \pgf@y=0pt}
-
- \anchor{center}{ \central \pgf@y=0pt }
- \anchor{east}{ \northeast \pgf@y=0pt }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \central \pgf@y=-\pgf@y }
- \anchor{north}{ \central }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northeast }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northeast \pgf@y=-\pgf@y }
-
- \anchor{ext center}{ \pgf@y=0pt \pgf@x=0pt \advance\pgf@x by -\width}
- \anchor{ext east}{ \extnorthwest \pgf@y=0pt \pgf@x=-\pgf@x \advance\pgf@x by -\width}
- \anchor{ext west}{ \extnorthwest \pgf@y=0pt \advance\pgf@x by -\width}
- \anchor{ext south}{ \extnorthwest \pgf@x=0pt \pgf@y=-\pgf@y \advance\pgf@x by -\width}
- \anchor{ext north}{ \extnorthwest \pgf@x=0pt \advance\pgf@x by -\width}
- \anchor{ext south west}{ \extnorthwest \pgf@y=-\pgf@y \advance\pgf@x by -\width}
- \anchor{ext north east}{ \extnorthwest \pgf@x=-\pgf@x \advance\pgf@x by -\width}
- \anchor{ext north west}{ \extnorthwest \advance\pgf@x by -\width}
- \anchor{ext south east}{ \extnorthwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y \advance\pgf@x by -\width}
-
- \backgroundpath{
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgf@circ@res@right = \width
- \pgf@circ@res@left = -\width
-
- \pgfscope %wiper
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \pgf@circ@res@temp=\radius\relax
- \pgf@circ@res@temp=\ctikzvalof{multipoles/rotary/thickness}\pgf@circ@res@temp
- \pgfsetlinewidth{2\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\wiper}{2\pgf@circ@res@right}}}
- \pgfsetroundcap\pgfusepath{draw}
- \endpgfscope
-
- \ifpgf@circ@rotaryarrow
- \pgfscope % arrow
- \ifpgf@circ@rotaryarrow@ccw\pgfsetarrowsstart{latexslim}\fi
- \pgfsetlinewidth{\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % center of cin node
- \pgftransformrotate{\wiper}
- \pgfpathmoveto{\pgfpointpolar{50}{1.0\pgf@circ@res@right}}
- \pgfpatharc{50}{-50}{1.0\pgf@circ@res@right}
- \ifpgf@circ@rotaryarrow@cw\pgfsetarrowsend{latexslim}\fi
- \pgfusepath{draw}
- \endpgfscope
- \fi
-
- % \typeout{CHANNELS\space\channels\space ANGLE\space\angle STEPA\space\stepa}
- \pgf@circ@count@a=\channels\relax
- \pgfmathsetmacro{\currenta}{-\angle}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % \typeout{LOOPIN\space\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
- \pgfscope
- \pgftransformshift{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\currenta}{2\pgf@circ@res@right}}}
- \pgfnode{\cshape}{center}{}{\thisshape-out \the\pgf@circ@count@a}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfmathsetmacro{\currenta}{\currenta+\stepa}
- % \typeout{LOOPOUT\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
-
- \pgfscope % input
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
- \endpgfscope
- }
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@rotaryswitch{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\channels\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@out\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{1}{0}%
- }
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@cout\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{0}%
- }
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@aout\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@sqout\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotarysqanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
-}
-
-\def\pgf@circ@rotaryanchor#1#2#3{% #1: numero del pin; #2: 1 - x pos, 0 - center; #3 0: inner, 1 outer
- \pgf@circ@res@temp=\width
- \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
- \pgfmathsetlength{\pgf@x}{2*(\pgf@circ@res@temp+#3*\radius/2)*cos(\myangle))+#2*\radius}
- \pgfmathsetlength{\pgf@y}{2*(\pgf@circ@res@temp+#3*\radius/2)*sin(\myangle)}
- \advance\pgf@x by -\pgf@circ@res@temp
-}
-
-\def\pgf@circ@rotarysqanchor#1{% external square anchors
- \pgf@circ@res@temp=\width
- \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
- \pgfpointborderrectangle{\pgfpointpolar{\myangle}{1pt}}{\pgfpoint{2.5\pgf@circ@res@temp}{2.5\pgf@circ@res@temp}}
- \advance\pgf@x by -\pgf@circ@res@temp
-}
-
-% Seven segments displays
-
-\pgfdeclareshape{bare7seg}{
- \savedmacro{\dotstatus}{\edef\dotstatus{\pgf@circ@sevenseg@dotstate}}
- \saveddimen{\dotspace}{% the dot is on the right, and occupy the same as the thickness
- \ifpgf@circ@sevenseg@dot
- \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/thickness}}
- \else
- \pgf@x=0pt
- \fi
- }
- % The object extension is more or less (-width/2,-width) to (width/2,width)
- % and adjusted for line thickness (both sides) and eventually the dot
- \saveddimen{\width}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/width}*\pgf@circ@Rlen}}
- \saveddimen{\gap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/segment sep}}}
- \saveddimen{\boxgap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/box sep}}}
- \savedanchor{\southwest}{% both negative
- \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{seven seg/width}*\pgf@circ@Rlen
- -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
- \pgfmathsetlength{\pgf@y}{-\ctikzvalof{seven seg/width}*\pgf@circ@Rlen
- -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
- }
- \savedanchor{\northeast}{% both positive
- \ifpgf@circ@sevenseg@dot
- \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{seven seg/thickness}}
- \else
- \pgf@circ@res@other=0pt
- \fi
- \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@Rlen
- +0.5*\ctikzvalof{seven seg/thickness}+\pgf@circ@res@other+\ctikzvalof{seven seg/box sep}}
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@Rlen
- +0.5*\ctikzvalof{seven seg/thickness}+\ctikzvalof{seven seg/box sep}}
- }
- \savedanchor{\topright}{% anchor without the box sep and the thickness
- \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@Rlen}
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{north west}{\southwest\pgf@y=-\pgf@y}
- \anchor{north east}{\northeast}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\southwest}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0pt}
- \anchor{south}{\southwest\pgf@x=0pt}
- \anchor{west}{\southwest\pgf@y=0pt}
- \anchor{a}{\topright\pgf@x=0pt}
- \anchor{b}{\topright\pgf@y=0.5\pgf@y}
- \anchor{c}{\topright\pgf@y=-0.5\pgf@y}
- \anchor{d}{\topright\pgf@y=-\pgf@y\pgf@x=0pt}
- \anchor{e}{\topright\pgf@x=-\pgf@x\pgf@y=-0.5\pgf@y}
- \anchor{f}{\topright\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{g}{\pgfpointorigin}
- \anchor{dot}{\topright\pgf@y=-\pgf@y\advance\pgf@x by \dotspace}
- \behindbackgroundpath{%
- \southwest % I do not want the dot here, it will stick out
- \pgf@circ@res@up = -\pgf@y
- \pgf@circ@res@down = \pgf@y
- \pgf@circ@res@right = \pgf@x
- \pgf@circ@res@left = -\pgf@x
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{multipoles/thickness}\pgflinewidth}
- \pgfsetcolor{\pgfkeysvalueof{/tikz/circuitikz/color}}
- \pgfpathrectanglecorners%
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@left+\dotspace}{\pgf@circ@res@up}}
- \ifpgf@circ@sevenseg@box
- \pgf@circ@draworfill
- \else
- \pgf@circ@maybefill
- \fi
- \endpgfscope
- \edef\bits{\ctikzvalof{seven seg/bits}}
- \pgfscope
- \pfg@circ@sseg@drawbits{\bits}
- \endpgfscope
- \pgfscope
- \ifpgf@circ@sevenseg@dot
- \pgf@circ@sseg@drawdots
- \fi
- \endpgfscope
- }
-}
-
-\def\pgf@circ@sseg@splitbits#1#2#3#4#5#6#7\relax{%split the seven bits
- \edef\@@a{#1}\edef\@@b{#2}\edef\@@c{#3}\edef\@@d{#4}\edef\@@e{#5}\edef\@@f{#6}\edef\@@g{#7}%
-}
-\def\pgf@circ@sseg@drawone#1#2#3#4#5{% #1 on off the x1, y1, x2 , y2
- \ifnum #1 > 0\relax
- \pgfsetcolor{\ctikzvalof{seven seg/color on}}
- \else
- \pgfsetcolor{\ctikzvalof{seven seg/color off}}
- \fi
- \pgfpathmoveto{\pgfpoint{#2}{#3}}
- \pgfpathlineto{\pgfpoint{#4}{#5}}
- \pgfusepath{draw}
-}
-\def\pfg@circ@sseg@drawbits#1{% #1 must be 7 bits
- \expandafter\pgf@circ@sseg@splitbits#1\relax% a bit of magic...
- \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
- \pgfsetlinewidth{\ctikzvalof{seven seg/thickness}}
- % \pgfsetroundcap
- \pgfsetarrowsstart{Triangle Cap[]}
- \pgfsetarrowsend{Triangle Cap[]}
- % segments
- \pgf@circ@sseg@drawone{\@@a}{-\width/2+\gap}{\width}{\width/2-\gap}{\width}
- \pgf@circ@sseg@drawone{\@@b}{\width/2}{\width-\gap}{\width/2}{0pt+\gap}
- \pgf@circ@sseg@drawone{\@@c}{\width/2}{0pt-\gap}{\width/2}{-\width+\gap}
- \pgf@circ@sseg@drawone{\@@d}{\width/2-\gap}{-\width}{-\width/2+\gap}{-\width}
- \pgf@circ@sseg@drawone{\@@e}{-\width/2}{-\width+\gap}{-\width/2}{0pt-\gap}
- \pgf@circ@sseg@drawone{\@@f}{-\width/2}{0pt+\gap}{-\width/2}{\width-\gap}
- \pgf@circ@sseg@drawone{\@@g}{-\width/2+\gap}{0pt}{\width/2-\gap}{0pt}
-}
-\def\pgf@circ@sseg@drawdots{% dots
- \edef\what{empty}
- \ifx\what\pgf@circ@sevenseg@dotstate
- % do nothing
- \else
- \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
- \edef\what{off}
- \ifx\what\pgf@circ@sevenseg@dotstate
- % dot off
- \pgfsetfillcolor{\ctikzvalof{seven seg/color off}}
- \pgfsetcolor{\ctikzvalof{seven seg/color off}}
- \else
- % dot on
- \pgfsetfillcolor{\ctikzvalof{seven seg/color on}}
- \pgfsetcolor{\ctikzvalof{seven seg/color on}}
- \fi
- \pgfpathcircle{\pgfpoint{\width/2+2*\pgf@circ@res@other}{-\width}}{\pgf@circ@res@other}
- \pgfusepath{draw,fill}
- \fi
-}
-%%%---------- close: tex/pgfcircmultipoles
-
-%%%%%%%%%%% Springe nach tex/pgfcirclabel
-%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Bipole label positioning
-
-%% Options
-\ctikzset{label/.style = { l=#1 } }
-\ctikzset{l/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
- \ctikzsetvalof{bipole/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-
-\ctikzset{label above/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-
-\ctikzset{l^/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-
-\ctikzset{label below/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-\ctikzset{l_/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-\ctikzset{annotation/.style = { a=#1 } }
-\ctikzset{a/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/annotation/name=#1}
- \ctikzsetvalof{bipole/annotation/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/annotation/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/annotation/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-
-\ctikzset{annotation above/.code = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=90 }
-}
-
-\ctikzset{a^/.style = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=90 }
-}
-
-\ctikzset{annotation below/.code = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=-90 }
-}
-\ctikzset{a_/.style = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=-90 }
-}
-
-% This is to adjust spacing for the labels so that they are not cramped on components
-\def\pgf@circ@ls{.75ex} % labelspace to have just one point to change
-
-\def\pgf@circ@drawlabels#1{
- \pgfextra{
- % This function will be called with argument #1 equal
- % to "label" or "annotation" form pgfcircpath.tex.
- % pgf@circ@direction is the direction of the path,
- % its value is set in pgfcircpath.tex
- \pgfmathsubtract{\pgf@circ@direction}{90}
- \pgfmathround{\pgfmathresult} % avoid precision loss errors
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
-
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/position}}
- \ifnum \pgf@circ@temp < 0
- \pgfmathadd{\pgf@circ@labanc}{180}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- % \typeout{INI: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
- %
- % normalize the angle values
- %
- \pgfmathmod{\pgf@circ@labanc}{360}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- %
- \ifpgf@circuit@bipole@inverted
- \pgfmathadd{\pgf@circ@temp}{180} %If shape is inverted, use opposite anchor
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- %
- \ifnum \ctikzvalof{mirror value} = -1
- \pgfmathadd{\pgf@circ@temp}{180} %If shape is mirrored, use opposite anchor
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- % \typeout{FIN: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
- }
- %Firstly, place a coordinate directly at the edge of the shape
- (\ctikzvalof{bipole/name}.\pgf@circ@temp) coordinate (labelcoor)
- %now decide, which labels should be drawn
- \pgfextra{
- \edef\pgf@temp{\ctikzvalof{label/align}}
- \def\pgf@circ@temp{straight}
- }
- \ifx\pgf@temp\pgf@circ@temp %straight
- \pgf@circ@drawreglabels{#1}
- \else
- \pgfextra{\def\pgf@circ@temp{rotate}}
- \ifx\pgf@temp\pgf@circ@temp %rotate
- \pgf@circ@drawrotlabels{#1}
- \else% smart
- \pgf@circ@drawsmartlabels{#1}
- \fi
- \fi
-}
-
-
-\def\pgf@circ@drawsmartlabels#1{
- \pgfextra{
- \pgfmathmod{\pgf@circ@direction}{90}
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- \ifnum \pgfcircmathresult > 20
- \ifnum \pgfcircmathresult < 70
- \pgf@circ@drawrotlabels{#1}
- \else
- \pgf@circ@drawreglabels{#1}
- \fi
- \else
- \pgf@circ@drawreglabels{#1}
- \fi
- }
-
-
-\def\pgf@circ@drawrotlabels#1{
- \pgfextra{
- % scale the distances in function of zoom, so that they are not
- % dependent on it but on font size. Thanks to @marmot
- % https://tex.stackexchange.com/a/476018/38080
- % the coeffcient is adjusted so that the distance is more or less
- % the same for rotated labels and straight ones (although it will
- % depend on the font, so it's not exact).
- \pgfgettransformentries{\tmp}{\tmp}{\tmp}{\myscale}{\tmp}{\tmp}
- \pgfmathsetlength\pgf@circ@res@temp{1.5*\pgf@circ@ls/\myscale}
- \ifnum \ctikzvalof{bipole/#1/position}>0
- %we need some more space for placement below, due to mid-anchor
- \else % we do not have <= in \ifnum...
- \pgf@circ@res@temp=1.5\pgf@circ@res@temp
- \fi
- %Calculate rotation of the label from direction and strip decimals
- \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- % rotate the label at second or third quadrant:
- \ifnum \pgfcirclabrot > 90 \ifnum \pgfcirclabrot < 270
- \pgfmathsubtract{\pgf@circ@direction}{180}
- \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- %invert the space relationships due to rotated strings
- \ifnum \ctikzvalof{bipole/#1/position}>0
- \pgf@circ@res@temp=1.5\pgf@circ@res@temp
- \fi
- \fi\fi
- \pgfmathparse{\ctikzvalof{bipole/#1/position}>0?\pgf@circ@direction+90:\pgf@circ@direction-90}
- \edef\pgf@circ@labposangle{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- % reset cm is not working correctly here
- (labelcoor)++(\pgf@circ@labposangle:\the\pgf@circ@res@temp) coordinate(labelcoor)
- node[anchor=mid, rotate=\pgfcirclabrot](\ctikzvalof{bipole/name}#1){\pgf@circ@finallabels{#1}}
-}
-
-\def\pgf@circ@drawreglabels#1{
- %Now calculate all shape positions
- %Use mid-anchor at x-axis and base-anchor at y-axis, respectively.
- %All points between will be addressed by angled-anchors:
- \pgfextra{
- % scale ex-distance to make it independent on scale
- % thanks @marmot see https://tex.stackexchange.com/a/476018/38080
- \pgfgettransformentries{\tmp}{\tmp}{\tmp}{\myscale}{\tmp}{\tmp}
- \pgfmathsetlength\pgf@circ@res@temp{\pgf@circ@ls/\myscale}
- \pgfmathadd{\pgf@circ@labanc}{90}
- \pgfmathround{\pgfmathresult}
- \def\pgf@circ@labanctext{\pgf@circ@labanc}
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \pgfmathparse{mod(\pgf@circ@temp,180)>135?mod(\pgf@circ@temp,180)-180:mod(\pgf@circ@temp,180)}
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- %Values around 90 are at both y-axis
- \ifnum \pgfcircmathresult > 84 \ifnum \pgfcircmathresult< 96
- \pgfextra{\edef\pgf@circ@labpos{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}}
- \ifnum \pgf@circ@labpos > 180
- \ifnum \ctikzvalof{bipole/#1/position} > 0
- \pgfextra{\def\pgf@circ@labanctext{mid west}}
- \else
- \pgfextra{\def\pgf@circ@labanctext{mid east}}
- \fi
- \else
- \ifnum \ctikzvalof{bipole/#1/position} > 0
- \pgfextra{\def\pgf@circ@labanctext{mid east}}
- \else
- \pgfextra{\def\pgf@circ@labanctext{mid west}}
- \fi
- \fi
- \fi\fi
- %Values between -5 and 5 are at pos /neg x-axis
- \pgfextra{\def\uffa{}\newdimen\realshift\realshift=\dimexpr1pt\relax}
- \ifnum \pgfcircmathresult <6 \ifnum \pgfcircmathresult > -6
- \ifnum \ctikzvalof{bipole/#1/position} < 0
- \ifnum \pgf@circ@labanc > 90
- % using base coordinate instead of south to naturally align
- % symbols with descendants; but this invalidate the effect of
- % the inner sep, so recover it by shifting the anchor
- % reset cm is not working sometime, use @marmot solution
- % see https://tex.stackexchange.com/a/476018/38080
- (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
- \pgfextra{\def\pgf@circ@labanctext{base}}%base
- \else
- \pgfextra{\def\pgf@circ@labanctext{north}}%north
- \fi
- \else
- \ifnum \pgf@circ@labanc < 90
- % shift, as above
- (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
- \pgfextra{\def\pgf@circ@labanctext{base}}%base
- \else
- \ifnum \pgf@circ@labanc > 180
- % this shouldn't happen, but somehow it does (270 degree anchors)
- % shift, as above
- (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
- \pgfextra{\def\pgf@circ@labanctext{base}}%base
- \else
- \pgfextra{\def\pgf@circ@labanctext{north}}%north
- \fi
- \fi
- \fi
- \fi\fi
- (labelcoor) node[anchor=\pgf@circ@labanctext,
- inner sep=0.5\pgf@circ@res@temp, outer sep=0pt,
- ](\ctikzvalof{bipole/name}#1){\strut\pgf@circ@finallabels{#1}%
- }
-}
-
-\def\pgf@circ@finallabels#1{%
- \edef\pgf@temp{}%
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/unit}}%
- \ifx\pgf@temp\pgf@circ@temp%
- \ctikzvalof{bipole/#1/name}%
- \else%
- $\SI{\ctikzvalof{bipole/#1/name}}{\ctikzvalof{bipole/#1/unit}}$%
- \fi%
-}
-
-\ctikzset{text/.style = { t=#1 } }
-\ctikzset{t/.code = {
- \ctikzsetvalof{bipoles/twoport/text}{#1}
-}}
-
-%%%% Stacked labels
-%
-% stacked labels by Romano Giannetti romano@rgtti.com
-% heavily based on Claudo Fiandrinos's https://tex.stackexchange.com/a/65792/38080
-% \expandafter trick inspired by Matthew Leingang's https://tex.stackexchange.com/a/12272/38080
-%
-% labels are in a tabular, globally aligned:
-% vertically with key l2 valign (default c)
-% c: center t: top b: bottom
-% horizontally with key l2 align (default l)
-% l: left c: centered r: right
-% you can switch sides using l2_=... and l2^=...
-% syntax is l2_ = line1 and line2 (same for l2^)
-%
-\ctikzset{%
- l2 valign/.store in=\ltwo@valign, l2 valign=c,
- l2 halign/.store in=\ltwo@halign, l2 halign=l,
-}
-\ctikzset{l2base/.code n args={2}{
- \pgfkeys{/tikz/circuitikz/bipole/label/name=%
- \bgroup
- \setlength{\tabcolsep}{2pt}%
- \def\ltwo@tabu{\tabular[\ltwo@valign]}%
- \expandafter\ltwo@tabu\expandafter{\ltwo@halign}%
- #1\\ #2%
- \endtabular
- \egroup
- }%
- \ctikzsetvalof{bipole/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#2}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-\ctikzset{l2/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l2 above/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l2^/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l2 below/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-\ctikzset{l2_/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-%%%---------- close: tex/pgfcirclabel
-%%%%%%%%%%% Springe nach tex/pgfcircvoltage
-%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Voltage management
-
-
-\ctikzset{v^>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v^</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v_>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-\ctikzset{v_</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
-\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
-\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
-\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
-
-% Default position varies whether the component is a voltage source
-% or not
-\ctikzset{v/.code = {
- \ifpgf@circuit@bipole@isvoltage
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \ifpgf@circ@oldvoltagedirection
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \fi
- \fi
- \ifpgf@circ@oldvoltagedirection
- \ifpgf@circuit@bipole@iscurrent\ifpgf@circ@fixbatteries
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \fi\fi
- \else
- \ifpgf@circuit@bipole@iscurrent
- \ifpgf@circuit@bipole@current@backward
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \fi\fi\fi
- \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
- \ctikzsetvalof{bipole/voltage/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- }
-}
-
-% american voltage font selection and symbol definition
-% the default font command is {} --- nothing
-\def\pgf@circ@avfont{\ctikzvalof{voltage/american font}}
-%
-% plus and minus symbols (default is $+$ and $-$, see pgfcirc.defines.tex)
-% notice that the double braces are needed to be able
-% to use \boldmath in the font (although it is semi-deprecated...)
-%
-\def\pgf@circ@avplus{\ctikzvalof{voltage/american plus}}
-\def\pgf@circ@avminus{\ctikzvalof{voltage/american minus}}
-
-%% Output routine for generic bipoles
-
-\def\pgf@circ@drawvoltagegeneric{
- \pgfextra{
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/straight label distance}
- \pgfkeysifdefined{\pgf@temp}
- {
- \edef\partheight{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/straight label distance}}
- \edef\tmpdistfromline{(\partheight\pgf@circ@Rlen)}
- }
- {
- \pgfkeysifdefined{/tikz/circuitikz/bipoles/voltage/straight label distance}
- {
- \edef\partheight{\ctikzvalof{bipoles/voltage/straight label distance}}
- \edef\tmpdistfromline{(\partheight\pgf@circ@Rlen)}
- }
- {%calculate default value from part height
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/height}
- \pgfkeysifdefined{\pgf@temp}
- {
- \edef\partheight{0.5*\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/height}}
- \edef\tmpdistfromline{(\partheight\pgf@circ@Rlen+0.2\pgf@circ@Rlen)}
- }
- {
- \edef\tmpdistfromline{(.5\pgf@circ@Rlen)} %fallback to fixed value
- }
- }
- }
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{\tmpdistfromline}
- \else
- \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{-\tmpdistfromline}
- \else
- \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
- \fi
- \fi
- \else
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{-\tmpdistfromline}
- \else
- \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{\tmpdistfromline}
- \else
- \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@Rlen}
- \fi
- \fi
- \fi
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@voltage@angle{90}
- \else
- \def\pgf@circ@voltage@angle{-90}
- \fi
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\distacefromnode{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/distance from node}} }
- { \edef\distacefromnode{\ctikzvalof{voltage/distance from node}} }
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\bumpb{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/bump b}} }
- { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
- \edef\shiftv{\ctikzvalof{voltage/shift}}
- \pgfmathsetmacro{\bumpb}{\bumpb + \shiftv} %% adjust the bump is shift
- \ifpgf@circuit@bipole@inverted
- \pgfmathsetmacro{\shiftv}{-\shiftv}
- \fi
- \ifnum \ctikzvalof{mirror value} = -1
- \pgfmathsetmacro{\shiftv}{-\shiftv}
- \fi
- }
- % %\pgf@circ@Rlen/\pgfkeysvalueof{/tikz/circuitikz/current arrow scale} is equal to the length of the currarrow
- coordinate (pgfcirc@midtmp) at ($(\tikztostart) ! \pgf@circ@Rlen/\pgfkeysvalueof{/tikz/circuitikz/current arrow scale} ! (anchorstartnode)$) %absolute move, minimum space is length of arrowhead
- coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distacefromnode ! (anchorstartnode)$)
-
- coordinate (pgfcirc@Vfrom) at ($(pgfcirc@midtmp) ! -\distfromline ! \pgf@circ@voltage@angle:(anchorstartnode)$)
- coordinate (pgfcirc@midtmp) at ($(\tikztotarget) ! \pgf@circ@Rlen/\pgfkeysvalueof{/tikz/circuitikz/current arrow scale} ! (anchorendnode)$)%absolute move, minimum space is length of arrowhead
- coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distacefromnode ! (anchorendnode)$)
-
- coordinate (pgfcirc@Vto) at ($(pgfcirc@midtmp) ! \distfromline ! \pgf@circ@voltage@angle : (anchorendnode)$)
-
- \ifpgf@circuit@bipole@voltage@below
- coordinate (pgfcirc@Vto) at ($(pgfcirc@Vto) ! \shiftv!90 : (anchorendnode)$)
- coordinate (pgfcirc@Vfrom) at ($(pgfcirc@Vfrom) ! \shiftv!-90 : (anchorstartnode)$)
- coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
- coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
- \else
- coordinate (pgfcirc@Vto) at ($(pgfcirc@Vto) ! -\shiftv!90 : (anchorendnode)$)
- coordinate (pgfcirc@Vfrom) at ($(pgfcirc@Vfrom) ! -\shiftv!-90 : (anchorstartnode)$)
- coordinate (pgfcirc@Vcont1) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
- coordinate (pgfcirc@Vcont2) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
- \fi
-
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@straight
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) --(pgfcirc@Vfrom) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
- \else
- (pgfcirc@Vfrom) --(pgfcirc@Vto) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
- node[currarrow, sloped, allow upside down, pos=1] {}
- (pgfcirc@Vfrom)
- \else
- (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
- node[currarrow, sloped, allow upside down, pos=1] {}
- (pgfcirc@Vto)
- \fi
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- \else
- (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- \fi
- \else
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- \else
- (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- \fi
- \fi
- \fi
-}
-
-%% Output routine for voltage sources
-\def\pgf@circ@drawvoltagegenerator{
- % the following is affected indirectly by voltage/shift, you can move the arrow with voltage/bump a.
- % it's not perfect, but I can't find the way to do it correctly...
- \pgfextra{
- \edef\shiftv{\ctikzvalof{voltage/shift}}
- \edef\bumpa{\ctikzvalof{voltage/bump a}}
- \pgfmathsetmacro{\bumpaplus}{\bumpa + \shiftv}
- }
- \ifpgf@circuit@bipole@voltage@below
- coordinate (pgfcirc@Vfrom) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-120)$)
- coordinate (pgfcirc@Vto) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-60)$)
- \else
- coordinate (pgfcirc@Vfrom) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.120)$)
- coordinate (pgfcirc@Vto) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.60)$)
- \fi
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vfrom)
- \else
- (pgfcirc@Vfrom) -- node[currarrow, sloped, allow upside down, pos=1] {} (pgfcirc@Vto)
- \fi
- \else% american voltage
- \ifpgf@circuit@bipole@voltageoutsideofsymbol
- % if it is a battery, must put + and -
-
- \ifpgf@circ@fixbatteries
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- \else
- (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- \else
- (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- \fi
- \fi
- \fi
- \fi
-}
-
-%% Output routine
-\def\pgf@circ@drawvoltage{% node name
- \pgfextra{ %WARNING: indentation is probably wrong
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north west}
- \else
- \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{west}
- \else
- \def\pgf@circ@bipole@voltage@label@anchor{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{east}
- \else \def\pgf@circ@bipole@voltage@label@anchor{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
-
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@voltage@below
- \pgf@circuit@bipole@voltage@belowfalse
- \else
- \pgf@circuit@bipole@voltage@belowtrue
- \fi
- \fi
-
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@below
- \pgf@circuit@bipole@voltage@belowfalse
- \else
-
- \pgf@circuit@bipole@voltage@belowtrue
- \fi
- \fi
-
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@where{-90}
- \else
- \def\pgf@circ@bipole@voltage@label@where{90}
- \fi
-
-
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\eudist{\ctikzvalof{bipoles/\pgfkeysvalueof{/tikz/circuitikz/bipole/kind}/voltage/european label distance}} }
- { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
- \edef\shiftv{\ctikzvalof{voltage/shift}}
- % adjust the label distance to the shift.
- \pgfmathsetmacro{\eudistplus}{\eudist+\shiftv}
-
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- }%end pgfextra
-
- \ifpgf@circuit@bipole@isvoltage
- \pgf@circ@drawvoltagegenerator
- \else
- \pgf@circ@drawvoltagegeneric
- \fi
-
- % (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where) %Zeile sinnlos!?
- \ifpgf@circuit@bipole@voltage@straight
- coordinate (Vlab) at ($(pgfcirc@Vto)!0.5!(pgfcirc@Vfrom) $)
- node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt]
- at (Vlab) { \pgf@circ@finallabels{voltage/label} }
- \else
- coordinate (Vlab) at ($(\ctikzvalof{bipole/name}.center) !
- \ifpgf@circuit@europeanvoltage
- \eudistplus
- \else
- \ctikzvalof{voltage/american label distance}
- \fi !
- (\ctikzvalof{bipole/name}.\pgf@circ@bipole@voltage@label@where)$)
- node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt] at (Vlab) { \pgf@circ@finallabels{voltage/label} }
- \fi
-}%end drawvoltages
-%%%---------- close: tex/pgfcircvoltage
-%%%%%%%%%%% Springe nach tex/pgfcirccurrent
-%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Current handling
-
-%% Options
-\ctikzset{i^>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i>^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i>_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i^</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i<^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i<_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i/.code = {
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above }
- \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
- \ctikzsetvalof{bipole/current/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- %reverse current direction for voltage sources
- \ifpgf@circ@oldvoltagedirection\else
- \ifpgf@circuit@bipole@isvoltage
- \ifpgf@circuit@bipole@voltage@backward
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below }
- \else
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above }
- \fi\fi\fi
- }
-}
-
-\ifpgf@circ@oldvoltagedirection
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
-\else
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
-\fi
-\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
-\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
-\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
-
-%% Output routine
-\def\pgf@circ@drawcurrent{
- \pgfextra{
- \edef\pgf@circ@ffffff{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- \ifnum\pgfcircmathresult >355
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
-
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@bipole@current@label@where{-90}
- \else
- \def\pgf@circ@bipole@current@label@where{+90}
- \fi
- }
-
- \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
- \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line
- (\tikztostart)--(\tikztotarget)
- \else% normal bipole or source
- \ifpgf@circuit@bipole@current@before
- (\tikztostart)--(anchorstartnode)
- \else
- (anchorendnode)--(\tikztotarget)
- \fi
- \fi
- \ifpgf@circuit@bipole@current@backward
- \pgfextra{
- \pgfmathsubtract{\pgf@circ@ffffff}{180}
- \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- \fi
- coordinate[currarrow,pos=\ctikzvalof{current/distance},rotate=\pgf@circ@ffffff](Iarrow)
- (Iarrow.\pgf@circ@bipole@current@label@where) node[anchor=\pgf@circ@dir]{\pgf@circ@finallabels{current/label}}
-}
-
-%%%---------- close: tex/pgfcirccurrent
-%%%%%%%%%%% Springe nach tex/pgfcircflow
-%%%---------- open: tex/pgfcircflow.tex
-% Copyright 2007-2009 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% flow handling
-
-%% Options
-\ctikzset{f^>/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/curflowrent/y position = above
- }
-}
-
-\ctikzset{f_>/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f>^/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f>_/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f^</.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f_</.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f<^/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f<_/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f</.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = backward} }
-\ctikzset{f_/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = below } }
-\ctikzset{f>/.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = forward } }
-\ctikzset{f^/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = above } }
-
-\ctikzset{f/.code = {
- \pgfkeys{\circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = above }
- \pgfkeys{/tikz/circuitikz/bipole/flow/label/name=#1}
- \ctikzsetvalof{bipole/flow/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}
-}
-
-%% Output routine
-\def\pgf@circ@drawflow{
- \pgfextra{
- \edef\pgf@circ@ffffff{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- \ifnum\pgfcircmathresult >355
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
-
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@bipole@flow@label@where{-90}
- \else
- \def\pgf@circ@bipole@flow@label@where{+90}
- \fi
- }
-
- \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
- \ifx\pgf@circ@temp\pgf@temp%draw flow at a short at middle of the line
- (\tikztostart)--(\tikztotarget)
- \else% normal bipole or source
- \ifpgf@circuit@bipole@flow@before
- (\tikztostart)--(anchorstartnode)
- \else
- (anchorendnode)--(\tikztotarget)
- \fi
- \fi
- \pgfextra{
- \ifpgf@circuit@bipole@flow@backward
- \ifpgf@circuit@bipole@flow@below
- \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \else
- \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \fi
- \pgfmathsubtract{\pgf@circ@ffffff}{180}
- \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \else
- \ifpgf@circuit@bipole@flow@below
- \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \else
- \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \fi
- \fi
- }
- coordinate[flowarrow,pos=\ctikzvalof{flow/distance},rotate=\pgf@circ@ffffff,yshift=\flow@offset](Farrowpos)
- (Farrowpos.\pgf@circ@bipole@flow@label@where) node[anchor=\pgf@circ@dir]{ \pgf@circ@finallabels{flow/label}}
-}
-
-%%%---------- close: tex/pgfcircflow
-
-% notice that the default is nooldvoltagedirection; it's not explicitly set to allow for the warning
-\ExecuteOptions{nofetbodydiode, nofetsolderdot, europeancurrents, europeanvoltages,americanports, americanresistors, cuteinductors ,europeangfsurgearrester, nosiunitx, noarrowmos, smartlabels}
-
-\ProcessOptions\relax
-
-%%%%%%%%%%% Springe nach tex/pgfcircpath
-%%%---------- open: tex/pgfcircpath.tex
-
-\def\pgf@circ@direction{0.0}
-
-% Names
-\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
-\ctikzset{n/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/name=#1}
-}}
-
-% Reflect the node along
-\ctikzset{mirrored/.is choice}
-\ctikzset{mirror value/.initial=1}
-\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
-\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
-\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
-
-% Invert node along path
-\ctikzset{inverted/.is choice}
-\ctikzset{invert value/.initial=1}
-\ctikzset{inverted/true/.code = {\ctikzsetvalof{invert value}{-1}\pgf@circuit@bipole@invertedtrue}}
-\ctikzset{inverted/false/.code = {\ctikzsetvalof{invert value}{1}\pgf@circuit@bipole@invertedfalse}}
-\ctikzset{invert/.style = {/tikz/circuitikz/inverted=true}}
-\newif\ifpgf@circuit@bipole@inverted
-\ctikzset{bipole/inverted/.is if=pgf@circuit@bipole@inverted}
-
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-
-% Initialize paths
-\def\pgfcircresetpath{
- \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90, ,bipole/annotation/name=, bipole/annotation/position=-90,
- bipole/inverted=false, bipole/kind=,
- bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
- bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
- bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
- bipole/current/y position=above, bipole/current/direction=forward,
- mirrored=false
- }
-}
-
-%% Helper function for path-function to ensure using anchors between nodes
-\def\set@explicit@center@anchor#1{
- \pgfutil@ifundefined{pgf@sh@ns@#1}
- {
- %This coordinate is no node(but a relative position or a coordinate), no further handling needed
- }{
- \pgfutil@in@.{#1}
- \ifpgfutil@in@
- % Anchor is used, do nothing!
- \else%
- \let\tikz@moveto@waiting=\relax
- \pgfpathmoveto{\tikz@last@position}%force movement, because tikz@moveto@waiting
- \edef#1{#1.center}%ensure using center anchor
- \fi
-}
-}
-
-
-%% Generic bipole path
-\def\pgf@circ@bipole@path#1#2{
-
- \pgfextra{
- \set@explicit@center@anchor{\tikztostart}
- \set@explicit@center@anchor{\tikztotarget}
- \pgfsyssoftpath@getcurrentpath{\myp@th}%% save current path to extend after calculation of correct start/end coordinates
- \ctikzset{bipole/kind = #1}
- \edef\pgf@temp{\ctikzvalof{bipole/name}}
- \def\pgf@circ@temp{}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = #2\pgf@circ@rand} % create it
- \fi
- }
-
- (\tikztostart) coordinate (\ctikzvalof{bipole/name}start)%necessary to get correct coordinates in the case of relative start/end or constructions like ((node1)-|(node2))
- (\tikztotarget) coordinate (\ctikzvalof{bipole/name}end)
- \pgfextra{
- \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \pgfmathround{\pgfmathresult}
- \edef\pgf@circ@direction{\pgfmathresult}%Calculate direction(angle) of path
- \pgfsyssoftpath@setcurrentpath{\myp@th}
- }
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- \else
- --($(\ctikzvalof{bipole/name}start) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}end)$) %ugly workaround to get correct linejoins(node breaks path?)
- \fi
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)%%positio of middle node
- node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}, xscale=\ctikzvalof{invert value}]
- (\ctikzvalof{bipole/name}) {}
- \ifpgf@circuit@bipole@inverted
- \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathend)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathstart)
- \else
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.right)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.left)
- \fi
- \else
- \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathstart)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathend)
- \else
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.left)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.right)
- \fi
- \fi
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- \else
- (\ctikzvalof{bipole/name}start.center) -- (anchorstartnode)
- (anchorendnode) -- (\ctikzvalof{bipole/name}end.center)
- \fi
-
- \drawpoles
- \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabels{label}\fi
- \pgf@circ@ifkeyempty{bipole/annotation/name}\else\pgf@circ@drawlabels{annotation}\fi
- \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
- \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
- \pgf@circ@ifkeyempty{bipole/flow/label/name}\else\pgf@circ@drawflow\fi
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- (\ctikzvalof{bipole/name}end)%Move to end of path
- \else
- ($(\ctikzvalof{bipole/name}end) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}start)$) -- (\ctikzvalof{bipole/name}end)%ugly workaround to get correct linejoins(node breaks path?)
- %tikztostart and tikztotarget could not be used, because it would break if target coordinate is something like (node1-|node2)
-
- \fi
- % reset
- \pgfextra{
- \pgfcircresetpath
- }
- \tikztonodes%draw pending nodes an path
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Handling of terminals
-
-\ctikzset{bipole/nodes/.is family}
-\ctikzset{bipole/nodes/left/.initial=none}
-\ctikzset{bipole/nodes/right/.initial=none}
-\tikzset{bipole nodes/.style n args={2}{%
- \circuitikzbasekey/bipole/nodes/left=#1,
- \circuitikzbasekey/bipole/nodes/right=#2
- }
-}
-
-%% Easily usable styles
-
-\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-
-% rectjoinfill workarounds
-
-\ctikzset{.-/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{.-*/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{.-o/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{.-d/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{-./.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{o-./.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{*-./.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{d-./.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{.-./.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-
-\tikzset{reversed/.style = {\circuitikzbasekey/bipole/inverted=true}}
-
-\def\drawpoles{
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{none}}
- \ifx\pgf@temp\pgf@circ@temp\else(\tikztostart) node[\pgf@circ@temp] {}\fi
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} }
- \ifx\pgf@temp\pgf@circ@temp\else(\tikztotarget) node[\pgf@circ@temp] {}\fi
-}
-
-%% Path definitions
-\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
-\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
-\def\pgf@circ@sresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{thermistor}{#1}\else\pgf@circ@bipole@path{resistivesens}{#1}\fi}
-\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
-\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
-\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
-\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
-\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
-\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
-\def\pgf@circ@capacitivesens@path#1{\pgf@circ@bipole@path{capacitivesens}{#1}}
-\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
-\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
-\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
-\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
-\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
-\def\pgf@circ@batteryone@path#1{\pgf@circ@bipole@path{battery1}{#1}}
-\def\pgf@circ@batterytwo@path#1{\pgf@circ@bipole@path{battery2}{#1}}
-\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
-\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
-\def\pgf@circ@cutechoke@path#1{\pgf@circ@bipole@path{cutechoke}{#1}}
-\def\pgf@circ@inductor@path#1{%
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@europeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@cuteinductor@path{#1}%
- \else%
- \pgf@circ@americaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@vinductor@path#1{
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@veuropeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@vcuteinductor@path{#1}%
- \else%
- \pgf@circ@vamericaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@inductivesens@path#1{%
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@europeaninductivesens@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@cuteinductivesens@path{#1}%
- \else%
- \pgf@circ@americaninductivesens@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
-\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
-\def\pgf@circ@europeaninductivesens@path#1{\pgf@circ@bipole@path{sfullgeneric}{#1}}
-\def\pgf@circ@americaninductivesens@path#1{\pgf@circ@bipole@path{samericaninductor}{#1}}
-\def\pgf@circ@cuteinductivesens@path#1{\pgf@circ@bipole@path{scuteinductor}{#1}}
-\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
-\def\pgf@circ@bulb@path#1{\pgf@circ@bipole@path{bulb}{#1}}
-\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
-\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
-\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
-\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
-\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
-\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
-\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
-\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
-\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
-\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
-\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
-\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
-\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
-\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
-\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
-\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
-\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
-\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
-\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
-\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
-\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
-\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
-\def\pgf@circ@nos@path#1{\pgf@circ@bipole@path{nos}{#1}}
-\def\pgf@circ@ncs@path#1{\pgf@circ@bipole@path{ncs}{#1}}
-\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
-\def\pgf@circ@ncpushbutton@path#1{\pgf@circ@bipole@path{ncpushbutton}{#1}}
-\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
-\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
-\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
-\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
-\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
-\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
-\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
-\def\pgf@circ@oscope@path#1{\pgf@circ@bipole@path{oscope}{#1}}
-\def\pgf@circ@empty@path#1{}
-\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
-\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
-\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
-\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
-\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
-\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
-\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
-\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
-\def\pgf@circ@mstline@path#1{\pgf@circ@bipole@path{mstline}{#1}}
-\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
-\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
-\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
-\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
-\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
-
-\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
-\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
-\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
-
-\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
-\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
-\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
-\def\pgf@circ@bandstop@path#1{\pgf@circ@bipole@path{bandstop}{#1}}
-\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
-\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
-\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
-\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
-\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
-\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
-\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
-\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
-\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
-\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
-\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
-\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
-\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
-\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
-\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
-
-%%Mechanical
-\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
-\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
-\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
-\def\pgf@circ@viscoe@path#1{\pgf@circ@bipole@path{viscoe}{#1}}
-
-%% Styles
-
-\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
-\def\compattikzset#1{\tikzset{\comnpatname#1}}
-
-%\def\ctikzsetbipole#1#2{%
-% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
-%}
-
-\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
-\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
-\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
-\compattikzset{viscoe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@viscoe@path, l=#1}}
-\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
-\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
-\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
-\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
-\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
-\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
-\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
-\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
-\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
-\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
-\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
-\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
-\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
-\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
-\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
-\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
-\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
-\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
-\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batteryone@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{battery2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batterytwo@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
-\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
-\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
-\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
-\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
-\compattikzset{cute choke/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cutechoke@path, l=#1}}
-\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
-\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
-\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
-\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
-\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
-\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
-\compattikzset{transmission line/.style = {tline = #1}}
-\compattikzset{TL/.style = {tline = #1}}
-\compattikzset{mstline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mstline@path, l=#1}}
-\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-
-\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source = #1, \circuitikzbasekey/bipole/is current=true}}
-\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source = #1, \circuitikzbasekey/bipole/is current=true}}
-
-
-\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
-\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
-\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
-\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
-\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
-\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
-\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
-
-\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
-\compattikzset{bulb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bulb@path, l=#1}}
-
-\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
-\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
-\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
-\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
-\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
-
-\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
-\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
-\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
-\compattikzset{bandstop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandstop@path}}
-\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
-\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
-\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
-\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
-\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
-\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
-\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
-\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
-\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
-\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
-\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
-\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
-\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
-\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
-\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
-
-% % % % % %
-% % Begin of Diodes
-% % % % % %
-
-\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
-\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
-\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
-\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
-\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
-\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
-\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
-\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
-\def\pgf@circ@fullbidirectionaldiode@path#1{\pgf@circ@bipole@path{fullbidirectionaldiode}{#1}}
-\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
-\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
-\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
-\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
-\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
-\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
-\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
-\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
-\def\pgf@circ@emptybidirectionaldiode@path#1{\pgf@circ@bipole@path{emptybidirectionaldiode}{#1}}
-
-\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
-\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
-\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
-\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
-\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
-\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
-\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
-\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
-\compattikzset{full bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullbidirectionaldiode@path}}
-\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
-\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
-
-\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{empty bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptybidirectionaldiode@path}}
-\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
-\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
-%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
-
-\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
-\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
-\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
-\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
-\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
-\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
-\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
-\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
-\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
-\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
-\compattikzset{bidirectionaldiode/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
-
-%% Define Shortcuts
-\compattikzset{Do/.style = {\comnpatname empty diode}}
-\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
-\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
-\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
-\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
-\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
-\compattikzset{leDo/.style = {\comnpatname empty led}}
-\compattikzset{VCo/.style = {\comnpatname empty varcap}}
-\compattikzset{biDo/.style = {\comnpatname empty bidirectionaldiode}}
-\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
-\compattikzset{Tro/.style = {\comnpatname empty triac}}
-
-\compattikzset{D*/.style = {\comnpatname full diode}}
-\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
-\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
-\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
-\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
-\compattikzset{pD*/.style = {\comnpatname full photodiode}}
-\compattikzset{leD*/.style = {\comnpatname full led}}
-\compattikzset{VC*/.style = {\comnpatname full varcap}}
-\compattikzset{biD*/.style = {\comnpatname full bidirectionaldiode}}
-\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
-\compattikzset{Tr*/.style = {\comnpatname full triac}}
-
-\compattikzset{D/.style = {\comnpatname diode}}
-\compattikzset{tD/.style = {\comnpatname tunnel diode}}
-\compattikzset{zD/.style = {\comnpatname Zener diode}}
-\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
-\compattikzset{sD/.style = {\comnpatname Schottky diode}}
-\compattikzset{pD/.style = {\comnpatname photodiode}}
-\compattikzset{leD/.style = {\comnpatname led}}
-\compattikzset{VC/.style = {\comnpatname varcap}}
-\compattikzset{biD/.style = {\comnpatname bidirectionaldiode}}
-\compattikzset{Ty/.style = {\comnpatname thyristor}}
-\compattikzset{Tr/.style = {\comnpatname triac}}
-
-\compattikzset{D-/.style = {\comnpatname stroke diode}}
-\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
-\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
-\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
-\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
-\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
-\compattikzset{leD-/.style = {\comnpatname stroke led}}
-\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
-\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
-\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
-\compattikzset{biD-/.style = {\comnpatname empty bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
-
-% % % % % %
-% % End of Diodes
-% % % % % %
-
-
-\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
-\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
-\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
-\compattikzset{ncs/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
-\compattikzset{nos/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
-\compattikzset{normal closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
-\compattikzset{normal open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
-\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
-\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{nopb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{normally open push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{ncpb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
-\compattikzset{normally closed push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
-\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
-
-\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
-\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
-\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
-\tikzset{oscope/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@oscope@path, l=#1}}
-
-% cute switches
-%% closed cute switch
-\def\pgf@circ@cuteclosedswitch@path#1{\pgf@circ@bipole@path{cuteclosedswitch}{#1}}
-\compattikzset{cute closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosedswitch@path, l=#1}}
-\compattikzset{ccsw/.style= {\comnpatname cute closed switch= #1}}
-
-%% open cute switch
-\def\pgf@circ@cuteopenswitch@path#1{\pgf@circ@bipole@path{cuteopenswitch}{#1}}
-\compattikzset{cute open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopenswitch@path, l=#1}}
-\compattikzset{cosw/.style= {\comnpatname cute open switch= #1}}
-
-%% closing cute switch
-\def\pgf@circ@cuteclosingswitch@path#1{\pgf@circ@bipole@path{cuteclosingswitch}{#1}}
-\compattikzset{cute closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosingswitch@path, l=#1}}
-\compattikzset{ccgsw/.style= {\comnpatname cute closing switch= #1}}
-
-%% opening cute switch
-\def\pgf@circ@cuteopeningswitch@path#1{\pgf@circ@bipole@path{cuteopeningswitch}{#1}}
-\compattikzset{cute opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopeningswitch@path, l=#1}}
-\compattikzset{cogsw/.style= {\comnpatname cute opening switch= #1}}
-
-
-% short forms
-\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, l=#1}}
-
-\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path, i=#1}}
-\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosource@path, v=#1}}
-
-\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
-\compattikzset{isource/.style = {\comnpatname current source = #1}}
-\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
-\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-
-\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-
-\compattikzset{R/.style= {\comnpatname resistor = #1}}
-\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
-\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
-\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
-\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
-\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
-\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
-\compattikzset{C/.style = {\comnpatname capacitor = #1}}
-\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
-\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
-\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
-\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
-\compattikzset{L/.style = {\comnpatname inductor = #1}}
-\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
-\compattikzset{V/.style = {\comnpatname voltage source = #1}}
-\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
-\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\def\pgf@temp#1{
- \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
- \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
- \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
- \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-
-%current sources
-\compattikzset{I/.style = {\comnpatname current source = #1}}
-\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\def\pgf@temp#1{
- \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
- \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
- \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
- \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-
-% cute sources
-\def\pgf@circ@vsourceC@path#1{\pgf@circ@bipole@path{vsourceC}{#1}}
-\compattikzset{cute european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{vsourceC/.style= {\comnpatname cute european voltage source= #1}}
-\compattikzset{ceV/.style= {\comnpatname cute european voltage source= #1}}
-
-\def\pgf@circ@isourceC@path#1{\pgf@circ@bipole@path{isourceC}{#1}}
-\compattikzset{cute european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{isourceC/.style= {\comnpatname cute european current source= #1}}
-\compattikzset{ceI/.style= {\comnpatname cute european current source= #1}}
-
-\def\pgf@circ@cvsourceC@path#1{\pgf@circ@bipole@path{cvsourceC}{#1}}
-\compattikzset{cute european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{cvsourceC/.style= {\comnpatname cute european controlled voltage source= #1}}
-\compattikzset{cceV/.style= {\comnpatname cute european controlled voltage source= #1}}
-
-\def\pgf@circ@cisourceC@path#1{\pgf@circ@bipole@path{cisourceC}{#1}}
-\compattikzset{cute european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{cisourceC/.style= {\comnpatname cute european controlled current source= #1}}
-\compattikzset{cceI/.style= {\comnpatname cute european controlled current source= #1}}
-
-% noise sources
-\def\pgf@circ@vsourceN@path#1{\pgf@circ@bipole@path{vsourceN}{#1}}
-\compattikzset{noise voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceN@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{vsourceN/.style= {\comnpatname noise voltage source= #1}}
-\compattikzset{nV/.style= {\comnpatname noise voltage source= #1}}
-
-\def\pgf@circ@isourceN@path#1{\pgf@circ@bipole@path{isourceN}{#1}}
-\compattikzset{noise current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceN@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{isourceN/.style= {\comnpatname noise current source= #1}}
-\compattikzset{nI/.style= {\comnpatname noise current source= #1}}
-
-% resistive sensor american style
-\def\pgf@circ@resistivesens@path#1{\pgf@circ@bipole@path{resistivesens}{#1}}
-\compattikzset{american resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistivesens@path, l=#1}}
-\compattikzset{european resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
-\compattikzset{resistive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@sresistor@path, l=#1}}
-\compattikzset{sR/.style= {\comnpatname resistive sensor= #1}}
-
-\compattikzset{capacitive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitivesens@path, l=#1}}
-\compattikzset{sC/.style= {\comnpatname capacitive sensor= #1}}
-
-\compattikzset{cute inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductivesens@path, l=#1}}
-\compattikzset{european inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductivesens@path, l=#1}}
-\compattikzset{american inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductivesens@path, l=#1}}
-\compattikzset{inductive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductivesens@path, l=#1}}
-\compattikzset{sL/.style= {\comnpatname inductive sensor= #1}}
-
-\compattikzset{Mr/.style = {\comnpatname memristor}}
-
-\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
-\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
-\compattikzset{spst/.style = {\comnpatname switch = #1}}
-
-\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
-
-\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
-\compattikzset{vss/.style = {\comnpatname vee = #1}}
-
-% activate the to-style crossing
-\def\pgf@circ@crossing@path#1{\pgf@circ@bipole@path{crossing}{#1}}
-\compattikzset{crossing/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@crossing@path, l=#1}}
-\compattikzset{xing/.style= {\comnpatname crossing= #1}}
-
-%% loudspeaker and microphone
-
-\def\pgf@circ@loudspeaker@path#1{\pgf@circ@bipole@path{loudspeaker}{#1}}
-\compattikzset{loudspeaker/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@loudspeaker@path, l=#1}}
-
-\def\pgf@circ@mic@path#1{\pgf@circ@bipole@path{mic}{#1}}
-\compattikzset{mic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mic@path, l=#1}}
-
-% more instrument
-\def\pgf@circ@rmeter@path#1{\pgf@circ@bipole@path{rmeter}{#1}}
-\compattikzset{rmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeter@path, l=#1}}
-\def\pgf@circ@rmeterwa@path#1{\pgf@circ@bipole@path{rmeterwa}{#1}}
-\compattikzset{rmeterwa/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeterwa@path, l=#1}}
-\def\pgf@circ@smeter@path#1{\pgf@circ@bipole@path{smeter}{#1}}
-\compattikzset{smeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@smeter@path, l=#1}}
-% current loop probes
-\def\pgf@circ@iloop@path#1{\pgf@circ@bipole@path{iloop}{#1}}
-\compattikzset{iloop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop@path, l=#1}}
-\def\pgf@circ@iloop2@path#1{\pgf@circ@bipole@path{iloop2}{#1}}
-\compattikzset{iloop2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop2@path, l=#1}}
-% qucs-style probes
-\def\pgf@circ@qiprobe@path#1{\pgf@circ@bipole@path{qiprobe}{#1}}
-\compattikzset{qiprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qiprobe@path, l=#1}}
-\def\pgf@circ@qvprobe@path#1{\pgf@circ@bipole@path{qvprobe}{#1}}
-\compattikzset{qvprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qvprobe@path, l=#1}}
-\def\pgf@circ@qpprobe@path#1{\pgf@circ@bipole@path{qpprobe}{#1}}
-\compattikzset{qpprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qpprobe@path, l=#1}}
-
-
-% Transistor like bipoles
-
-\def\pgf@circ@trans@path#1#2{
- \pgfextra{
- \edef\pgf@temp{\pgfkeysvalueof{/tikz/circuitikz/bipole/name}}
- \def\pgf@circ@temp{#2}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
- \fi
- }
- \ifpgf@circuit@bipole@inverted
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- \else
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- \fi
- \pgfextra{
- \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \pgfmathadd{\pgfmathresult}{-90}
- \pgfmathround{\pgfmathresult}
- \edef\pgf@circ@direction{\pgfmathresult}
- }
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)
- node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
- (\ctikzvalof{bipole/name}) {} node {\ctikzvalof{bipole/label/name}}
- \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
- (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
- \else
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
- (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
- \fi
- \pgfextra{
- \pgfcircresetpath
- }
- (\tikztotarget) \tikztonodes % e si continua
-}
-
-
-\def\pgf@circ@definetranspath#1{
- \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
-}
-
-\pgf@circ@definetranspath{elmech}
-\pgf@circ@definetranspath{nmos}
-\pgf@circ@definetranspath{pmos}
-\pgf@circ@definetranspath{hemt}
-\pgf@circ@definetranspath{npn}
-\pgf@circ@definetranspath{pnp}
-\pgf@circ@definetranspath{nfet}
-\pgf@circ@definetranspath{nigfete}
-\pgf@circ@definetranspath{nigfetd}
-\pgf@circ@definetranspath{nigfetebulk}
-\pgf@circ@definetranspath{pfet}
-\pgf@circ@definetranspath{pigfete}
-\pgf@circ@definetranspath{pigfetd}
-\pgf@circ@definetranspath{pigfetebulk}
-\pgf@circ@definetranspath{njfet}
-\pgf@circ@definetranspath{pjfet}
-\pgf@circ@definetranspath{pigbt}
-\pgf@circ@definetranspath{nigbt}
-\pgf@circ@definetranspath{Lpigbt}
-\pgf@circ@definetranspath{Lnigbt}
-%%%---------- close: tex/pgfcircpath
-
-\ifpgf@circ@siunitx
- \RequirePackage{xstring}[2009/03/13]
- %\expandafter\let\csname angstrom\endcsname\relax
- \RequirePackage{siunitx}
-\fi
-
-\ifpgf@circ@explicitvdir\else
- \PackageWarningNoLine{circuitikz}{%
- You did not specify one of the voltage directions:\MessageBreak
- \space\space oldvoltagedirection, nooldvoltagedirection, \MessageBreak
- \space\space RPvoltages or EFvoltages \MessageBreak
- Default directions may have changed, \MessageBreak
- please check the manual%
- }
-\fi
-
-\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
-%override (unused) circuitikz environment for compability to externalization)
-\let\circuitikz\tikzpicture
-\let\endcircuitikz\endtikzpicture
+\input{circuitikz-0.9.3-body.tex}
-\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.6.sty b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.6-body.tex
index 67198bcac7..3dc3efe3c2 100644
--- a/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.6.sty
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-0.9.6-body.tex
@@ -1,4 +1,7 @@
-% Copyright 2007-2019 by Massimo Redaelli
+% Copyright 2018-2021 by Romano Giannetti
+% Copyright 2015-2021 by Stefan Lindner
+% Copyright 2013-2021 by Stefan Erhardt
+% Copyright 2007-2021 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -7,13 +10,12 @@
%
% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
\NeedsTeXFormat{LaTeX2e}
\def\pgfcircversion{0.9.6}
\def\pgfcircversiondate{2019/11/09}
-\ProvidesPackage{circuitikz-0.9.6}
-[\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]
%% Version 3.0 of pgf/TikZ is required
\RequirePackage{tikz}
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.0-body.tex b/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.0-body.tex
new file mode 100644
index 0000000000..d9f205f86c
--- /dev/null
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.0-body.tex
@@ -0,0 +1,20152 @@
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+\NeedsTeXFormat{LaTeX2e}
+
+\def\pgfcircversion{1.0}
+\def\pgfcircversiondate{2020/02/04}
+
+%% Version 3.0 of pgf/TikZ is required
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+%
+% "arrows" library is deprecated, and behave badly with
+% arrows on short paths. Change to the new arrows.meta
+% In pfgcirc.define, we will add the old definition of
+% latex' which we have lost in the transition
+%
+\usetikzlibrary{arrows.meta, bending}
+
+% The options are listed in the manual in this order
+
+\DeclareOption{europeanvoltage}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{straightvoltages}{
+ \pgf@circuit@bipole@voltage@straighttrue
+}
+
+\DeclareOption{americanvoltage}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrent}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrent}{
+ \ctikzset{current = american}
+}
+
+
+
+\DeclareOption{americanresistor}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistor}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductor}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductor}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductor}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanport}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanport}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{european}{
+ \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
+ \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester choice = european}
+}
+
+\DeclareOption{american}{
+ \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester choice = american}
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{fulldiodes}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiodes}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{europeanvoltages}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{americanvoltages}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrents}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrents}{
+ \ctikzset{current = american}
+}
+
+\DeclareOption{americanresistors}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistors}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductors}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductors}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductors}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanports}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanports}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{americangfsurgearrester}{
+ \ctikzset{gas filled surge arrester choice = american}
+}
+
+\DeclareOption{europeangfsurgearrester}{
+ \ctikzset{gas filled surge arrester choice = european}
+}
+
+\DeclareOption{siunitx}{
+ \pgf@circ@siunitxtrue
+}
+
+\DeclareOption{nosiunitx}{
+ \pgf@circ@siunitxfalse
+}
+
+\DeclareOption{fulldiode}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiode}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{strokediode}{
+ \ctikzset{diode = stroke}
+}
+
+\DeclareOption{arrowmos}{
+ \pgf@circuit@mos@arrowstrue
+}
+
+\DeclareOption{noarrowmos}{
+ \pgf@circuit@mos@arrowsfalse
+}
+
+\DeclareOption{fetbodydiode}{
+ \pgf@circuit@fet@bodydiodetrue
+}
+
+\DeclareOption{nofetbodydiode}{
+ \pgf@circuit@fet@bodydiodefalse
+}
+
+\DeclareOption{fetsolderdot}{
+ \pgf@circuit@fet@solderdottrue
+}
+
+\DeclareOption{nofetsolderdot}{
+ \pgf@circuit@fet@solderdotfalse
+}
+
+\DeclareOption{emptypmoscircle}{
+ \pgf@circuit@pmos@emptycircletrue
+}
+
+
+\DeclareOption{lazymos}{
+ \ctikzset{tripoles/nmos/width=.5}
+ \ctikzset{tripoles/nmos/gate height=.35}
+ \ctikzset{tripoles/nmos/base height=.35}
+ \ctikzset{tripoles/nmos/height/.initial=1.2}
+ \ctikzset{tripoles/nmos/base width=.5}
+ \ctikzset{tripoles/nmos/gate width=.65}
+
+ \ctikzset{tripoles/pmos/width=.5}
+ \ctikzset{tripoles/pmos/gate height=.35}
+ \ctikzset{tripoles/pmos/base height=.35}
+ \ctikzset{tripoles/pmos/height/.initial=1.2}
+ \ctikzset{tripoles/pmos/base width=.5}
+ \ctikzset{tripoles/pmos/gate width=.65}
+
+ \pgf@circuit@pmos@emptycircletrue
+}
+
+\DeclareOption{straightlabels}{
+ \ctikzset{label/align = straight}
+}
+
+\DeclareOption{rotatelabels}{
+ \ctikzset{label/align = rotate}
+}
+
+\DeclareOption{smartlabels}{
+ \ctikzset{label/align = smart}
+}
+
+\DeclareOption{compatibility}{
+ \pgf@circuit@compattrue
+}
+
+\DeclareOption{oldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectiontrue
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriesfalse
+}
+\DeclareOption{nooldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectionfalse
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriesfalse
+}
+
+\DeclareOption{RPvoltages}{
+ \pgf@circ@oldvoltagedirectiontrue
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriestrue
+}
+\DeclareOption{EFvoltages}{
+ \pgf@circ@oldvoltagedirectionfalse
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriestrue
+}
+
+\DeclareOption{legacytransistorstext}{
+ \pgf@circuit@transisors@fixlabelsfalse
+}
+
+\DeclareOption{nolegacytransistorstext}{
+ \pgf@circuit@transisors@fixlabelstrue
+}
+
+\DeclareOption{centertransistorstext}{
+ \pgf@circuit@transisors@fixlabelstrue
+}
+
+\DeclareOption{betterproportions}{
+ \ctikzset{monopoles/ground/width/.initial=.15}
+
+ \ctikzset{bipoles/resistor/height/.initial=.23}
+ \ctikzset{bipoles/resistor/width/.initial=.6}
+ \ctikzset{bipoles/capacitor/height/.initial=.4}
+ \ctikzset{bipoles/capacitor/width/.initial=.1}
+ \ctikzset{bipoles/potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
+ \ctikzset{bipoles/photoresistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistor/main/.initial=.7}
+ \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
+ \ctikzset{bipoles/thermistorptc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorptc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/main/.initial=.7}
+ \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/width/.initial=.6}
+ \ctikzset{bipoles/vresistor/height/.initial=.45}
+ \ctikzset{bipoles/vresistor/width/.initial=.6}
+ \ctikzset{bipoles/generic/height/.initial=.23}
+ \ctikzset{bipoles/generic/width/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/ageneric/height/.initial=.23}
+ \ctikzset{bipoles/ageneric/width/.initial=.6}
+ \ctikzset{bipoles/memristor/height/.initial=.23}
+ \ctikzset{bipoles/memristor/wave height/.initial=.375}
+ \ctikzset{bipoles/memristor/width/.initial=.60}
+ \ctikzset{bipoles/tgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tgeneric/width/.initial=.6}
+ \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
+ \ctikzset{bipoles/fullgeneric/height/.initial=.23}
+ \ctikzset{bipoles/fullgeneric/width/.initial=.6}
+ \ctikzset{bipoles/diode/height/.initial=.3}
+ \ctikzset{bipoles/diode/width/.initial=.25}
+ \ctikzset{bipoles/bidirectionaldiode/height/.initial=.66}
+ \ctikzset{bipoles/bidirectionaldiode/width/.initial=.6}
+ \ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
+ \ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
+
+ \ctikzset{tripoles/thyristor/height/.initial=.66}
+ \ctikzset{tripoles/thyristor/height 2/.initial=.3}
+ \ctikzset{tripoles/thyristor/width/.initial=.6}
+ \ctikzset{tripoles/thyristor/diode height/.initial=.3}
+ \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+ \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+ \ctikzset{tripoles/triac/height/.initial=.66}
+ \ctikzset{tripoles/triac/width/.initial=.6}
+ \ctikzset{tripoles/triac/diode width left/.initial=.3}
+ \ctikzset{tripoles/triac/diode width right/.initial=.3}
+}
+
+% This is a nice hack that prints all the shapes declared
+% by the package. Very useful for coverage testing and debugging.
+%
+% \let\origpgfdeclareshape=\pgfdeclareshape
+% \def\pgfdeclareshape#1{%
+% \typeout{SHAPE:\space"#1"}%
+% \origpgfdeclareshape{#1}
+% }
+
+
+%%%%%%%%%
+%%%%%%%%%%% Springe nach tex/pgfcirc.defines
+%%%---------- open: tex/pgfcirc.defines.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%
+%% Key managements
+
+\long\def\pgf@circ@comment#1{}
+
+\def\circuitikzbasekey{/tikz/circuitikz}
+
+\pgfkeys{\circuitikzbasekey/.is family}
+
+\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
+\let\ctikzset\circuitikzset
+\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
+\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
+
+%% Temporary Counters
+
+\newcount\pgf@circ@count@a
+\newcount\pgf@circ@count@b
+\newcount\pgf@circ@count@c
+%%%%%%%%%%%%
+%% Dimensions
+
+% coordinates
+\newdimen\pgf@circ@res@up
+\newdimen\pgf@circ@res@down
+\newdimen\pgf@circ@res@zero
+\newdimen\pgf@circ@res@left
+\newdimen\pgf@circ@res@right
+\newdimen\pgf@circ@res@other
+\newdimen\pgf@circ@res@step
+\newdimen\pgf@circ@res@temp
+% inital thickness
+\newdimen \pgfstartlinewidth
+
+% arrow tips, ported over old arrows library (deprecated)
+% see https://tex.stackexchange.com/questions/234084/latex-arrow-tip-with-arrows-meta-library
+% this was the original definition of latex' tips, renamed to avoid clashes
+%
+\pgfarrowsdeclare{latexslim}{latexslim}
+{
+ \pgfutil@tempdima=0.28pt%
+ \advance\pgfutil@tempdima by.3\pgflinewidth%
+ \pgfarrowsleftextend{+-4\pgfutil@tempdima}
+ \pgfarrowsrightextend{+6\pgfutil@tempdima}
+}
+{
+ \pgfutil@tempdima=0.28pt%
+ \advance\pgfutil@tempdima by.3\pgflinewidth%
+ \pgfpathmoveto{\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
+ \pgfpathcurveto
+ {\pgfqpoint{3.5\pgfutil@tempdima}{.5\pgfutil@tempdima}}
+ {\pgfqpoint{-1\pgfutil@tempdima}{1.5\pgfutil@tempdima}}
+ {\pgfqpoint{-4\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
+ \pgfpathcurveto
+ {\pgfqpoint{-1.5\pgfutil@tempdima}{1\pgfutil@tempdima}}
+ {\pgfqpoint{-1.5\pgfutil@tempdima}{-1\pgfutil@tempdima}}
+ {\pgfqpoint{-4\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
+ \pgfpathcurveto
+ {\pgfqpoint{-1\pgfutil@tempdima}{-1.5\pgfutil@tempdima}}
+ {\pgfqpoint{3.5\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
+ {\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
+ \pgfpathclose
+ \pgfusepathqfill
+}
+
+\pgfarrowsdeclarereversed{latexslim reversed}{latexslim reversed}{latexslim}{latexslim}
+
+\def\pgf@circ@setifdefinedfill#1#2{%
+ % if \ctikzclass is defined and \ctikzclass/fill is defined and is not none:
+ % set the fill color and execute \pgfusepath{#1}, else execute \pgfusepath{#2}
+ \ifdefined\ctikzclass
+ \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/fill}%
+ {% yes, it's defined
+ \edef\@@tmp{\ctikzvalof{\ctikzclass/fill}}\edef\@@none{none}%
+ \ifx\@@tmp\@@none % but it's none
+ \pgfusepath{#2}%
+ \else
+ \pgfsetfillcolor{\@@tmp}%
+ \pgfusepath{#1}%
+ \fi
+ }{% the class is defined but the fill key not; use #2
+ \pgfusepath{#2}%
+ }
+ \else
+ \pgfusepath{#2}%
+ \fi
+}
+
+%% Macro to fill or draw
+
+\def\pgf@circ@draworfill{%
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgf@circ@setifdefinedfill{draw,fill}{draw}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{draw, fill}
+ \fi
+}
+
+\def\pgf@circ@draworfillandclip{%
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgf@circ@setifdefinedfill{draw, clip, fill}{draw, clip}
+ \pgfusepath{draw, clip}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{draw, clip, fill}
+ \fi
+}
+
+\def\pgf@circ@maybefill{%
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgf@circ@setifdefinedfill{fill}{discard}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{fill}
+ \fi
+}
+
+%% Macros for setting linewidth
+% #1 is the legacy class (bipoles, tripoles) etc
+% #2 is the reference linewidth
+\def\pgf@circ@setlinewidth#1#2{%
+ \ifdefined\ctikzclass
+ \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/thickness}%
+ {% yes, it's defined
+ \edef\@@tmp{\ctikzvalof{\ctikzclass/thickness}}\edef\@@none{none}%
+ \ifx\@@tmp\@@none % but it's none
+ \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}% passthrough legacy class
+ \else
+ \pgfsetlinewidth{\@@tmp #2}%
+ \fi
+ }{ % key not defined, do the legacy thing
+ \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
+ }% Ok, do nothing
+ \else % no class
+ \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
+ \fi
+}
+% use \pgf@circ@setlinewidth{none}{\pgflinewidth} if there is no legacy case
+\ctikzset{none/thickness/.initial=1.0} % do not touch
+
+%% font changes compatible with plain/LaTeX/ConTeXt
+%% thanks to Henri Menke https://github.com/circuitikz/circuitikz/issues/285#issuecomment-537224605
+
+\ifpgfutil@format@is@latex
+ \long\def\pgf@circ@font@tiny{\tiny}
+ \long\def\pgf@circ@font@small{\small}
+ \long\def\pgf@circ@font@bold{\textbf}
+ \long\def\pgf@circ@font@boldmath{\boldmath}
+ \long\def\pgf@circ@font@sixbm{\fontsize{6}{7}\selectfont\boldmath}
+ \long\def\pgf@circ@font@tenbm{\fontsize{10}{12}\selectfont\boldmath}
+ \long\def\pgf@circ@font@twelve{\fontsize{12}{14}\selectfont}
+\else\ifpgfutil@format@is@plain
+ \long\def\pgf@circ@font@tiny{\fiverm}
+ \long\def\pgf@circ@font@small{\sevenrm}
+ \long\def\pgf@circ@font@bold#1{{\bf#1}}
+ \long\def\pgf@circ@font@boldmath{\bf} % to be tested
+ \long\def\pgf@circ@font@sixbm{\sevenrm\bf} %
+ \long\def\pgf@circ@font@tenbm{\tenrm\bf} %
+ \long\def\pgf@circ@font@twelve{\twelverm} %
+\else\ifpgfutil@format@is@context
+ \long\def\pgf@circ@font@tiny{\tfxx}
+ \long\def\pgf@circ@font@small{\tfx}
+ \long\def\pgf@circ@font@bold{\bold}
+ \long\def\pgf@circ@font@boldmath{\bold} % to be tested
+ \long\def\pgf@circ@font@sixbm{\tfx\bold} %
+ \long\def\pgf@circ@font@tenbm{\normal\bold}%
+ \long\def\pgf@circ@font@twelve{\tfa} %
+\fi\fi\fi
+
+
+%
+% Thanks to Phelype Oleinik https://tex.stackexchange.com/a/520806/38080
+%
+% this is needed to avoid problems with \ConTeXt
+\ifcsname normalunexpanded\endcsname
+ \let\pgfcircutil@unexpanded\normalunexpanded
+\else
+ \let\pgfcircutil@unexpanded\unexpanded
+\fi
+% minimally expand a pgfkey to check if it's {}/undefined or filled.
+\def\unexpandedvalueof#1{%
+ \pgfcircutil@unexpanded\expandafter\expandafter
+ \expandafter\pgf@circ@valueof@chk\pgfkeysvalueof{#1}}
+\def\pgf@circ@valueof@chk#1{%
+ \ifx\relax#1%
+ \expandafter\pgfutil@firstoftwo
+ \else
+ \expandafter\pgfutil@secondoftwo
+ \fi
+ {{}}% #1 is \relax, so consider empty
+ {\expandafter{#1}}% otherwise, leave the key after one more expansion
+}%
+
+% voltage options
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circuit@compat
+\newif\ifpgf@circ@oldvoltagedirection % default false
+\newif\ifpgf@circ@explicitvdir
+\newif\ifpgf@circ@fixbatteries
+
+\ctikzset{voltage dir/.is choice}
+\ctikzset{voltage dir/old/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriesfalse}}
+\ctikzset{voltage dir/noold/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriesfalse}}
+\ctikzset{voltage dir/RP/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriestrue}}
+\ctikzset{voltage dir/EF/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriestrue}}
+\tikzset{voltage dir/.style={circuitikz/voltage dir=#1}}
+
+% Option ">" for twoports
+\newif\ifpgf@circuit@inputarrow
+\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/.is choice}
+\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
+
+% Option "boxed" for nodes and twoports
+\newif\ifpgf@circuit@boxed
+\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
+
+% Option "dashed" for nodes and twoports
+\newif\ifpgf@circuit@dashed
+\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
+\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}
+
+% Option "t=*" for nodes
+\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
+
+\ctikzset{current arrow scale/.initial=16}
+
+\ctikzset{bipoles/.is family}
+\ctikzset{bipoles/border margin/.initial=1.1}
+\ctikzset{bipoles/thickness/.initial=2}
+\ctikzset{tripoles/thickness/.initial=2}
+\ctikzset{quadpoles/thickness/.initial=2}
+\ctikzset{nodes width/.initial=.04}
+
+% Base len for all circuitikz
+\newdimen\pgf@circ@Rlen
+% scaled length for internal use in scalable shapes
+\newdimen\pgf@circ@scaled@Rlen
+\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}}
+\pgf@circ@Rlen = 1.4cm
+% by default scale is 1.0
+\pgf@circ@scaled@Rlen=\pgf@circ@Rlen
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% main style definitions
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+% load a style file: search ctikzstyle-NAME.tex in path
+\def\ctikzloadstyle#1{%
+ \pgfutil@InputIfFileExists{ctikzstyle-#1}{}{%
+ \tikzerror{I did not find the circuitikz style #1}}%
+}
+
+% load and enact a style
+\def\ctikzsetstyle#1{%
+ \ctikzloadstyle{#1}%
+ \tikzset{#1 circuit style}%
+}
+
+% global style parameters
+\ctikzset{default/scale/.initial=1.0} % do not touch
+\ctikzset{default/fill/.initial=none} % do not touch
+\ctikzset{default/thickness/.initial=none} % do not touch
+% default is use as the generic default style for bipoles
+
+% mostly bipoles:
+
+\ctikzset{resistors/scale/.initial=1.0}
+\ctikzset{resistors/fill/.initial=none}
+\ctikzset{resistors/thickness/.initial=none}
+
+\ctikzset{capacitors/scale/.initial=1.0}
+\ctikzset{capacitors/fill/.initial=none}
+\ctikzset{capacitors/thickness/.initial=none}
+
+\ctikzset{inductors/scale/.initial=1.0}
+\ctikzset{inductors/fill/.initial=none}
+\ctikzset{inductors/thickness/.initial=none}
+
+\ctikzset{diodes/scale/.initial=1.0}
+\ctikzset{diodes/fill/.initial=none}
+\ctikzset{diodes/thickness/.initial=none}
+
+\ctikzset{batteries/scale/.initial=1.0}
+\ctikzset{batteries/fill/.initial=none}
+\ctikzset{batteries/thickness/.initial=none}
+
+\ctikzset{sources/scale/.initial=1.0}
+\ctikzset{sources/fill/.initial=none}
+\ctikzset{sources/thickness/.initial=none}
+
+\ctikzset{csources/scale/.initial=1.0}
+\ctikzset{csources/fill/.initial=none}
+\ctikzset{csources/thickness/.initial=none}
+
+\ctikzset{instruments/scale/.initial=1.0}
+\ctikzset{instruments/fill/.initial=none}
+\ctikzset{instruments/thickness/.initial=none}
+
+\ctikzset{mechanicals/scale/.initial=1.0}
+\ctikzset{mechanicals/fill/.initial=none}
+\ctikzset{mechanicals/thickness/.initial=none}
+
+\ctikzset{misc/scale/.initial=1.0}
+\ctikzset{misc/fill/.initial=none}
+\ctikzset{misc/thickness/.initial=none}
+
+\ctikzset{blocks/scale/.initial=1.0}
+\ctikzset{blocks/fill/.initial=none}
+\ctikzset{blocks/thickness/.initial=none}
+
+% mostly nodes
+
+\ctikzset{grounds/scale/.initial=1.0}
+\ctikzset{grounds/fill/.initial=none}
+\ctikzset{grounds/thickness/.initial=none}
+
+\ctikzset{power supplies/scale/.initial=1.0}
+\ctikzset{power supplies/fill/.initial=none}
+\ctikzset{power supplies/thickness/.initial=none}
+
+\ctikzset{transistors/scale/.initial=1.0}
+\ctikzset{transistors/fill/.initial=none}
+\ctikzset{transistors/thickness/.initial=none}
+
+\ctikzset{tubes/scale/.initial=1.0}
+\ctikzset{tubes/fill/.initial=none}
+\ctikzset{tubes/thickness/.initial=none}
+
+\ctikzset{RF/scale/.initial=1.0}
+\ctikzset{RF/fill/.initial=none}
+\ctikzset{RF/thickness/.initial=none}
+
+\ctikzset{electromechanicals/scale/.initial=1.0}
+\ctikzset{electromechanicals/fill/.initial=none}
+\ctikzset{electromechanicals/thickness/.initial=none}
+
+% transformers go with inductors
+\ctikzset{amplifiers/scale/.initial=1.0}
+\ctikzset{amplifiers/fill/.initial=none}
+\ctikzset{amplifiers/thickness/.initial=none}
+
+\ctikzset{switches/scale/.initial=1.0}
+\ctikzset{switches/fill/.initial=none}
+\ctikzset{switches/thickness/.initial=none}
+
+\ctikzset{logic ports/scale/.initial=1.0}
+\ctikzset{logic ports/fill/.initial=none}
+\ctikzset{logic ports/thickness/.initial=none}
+
+\ctikzset{flipflops/scale/.initial=1.0}
+\ctikzset{flipflops/fill/.initial=none}
+\ctikzset{flipflops/thickness/.initial=none}
+
+\ctikzset{muxdemuxes/scale/.initial=1.0}
+\ctikzset{muxdemuxes/fill/.initial=none}
+\ctikzset{muxdemuxes/thickness/.initial=none}
+
+\ctikzset{chips/scale/.initial=1.0}
+\ctikzset{chips/fill/.initial=none}
+\ctikzset{chips/thickness/.initial=none}
+
+\ctikzset{displays/scale/.initial=1.0}
+\ctikzset{displays/fill/.initial=none}
+\ctikzset{displays/thickness/.initial=none}
+
+% grounds and power supplies
+
+\ctikzset{monopoles/.is family}
+\ctikzset{monopoles/ground/width/.initial=.25}
+\ctikzset{monopoles/ground/connectionthickness/.initial=1}
+\ctikzset{monopoles/ground/thickness/.initial=2}
+\ctikzset{monopoles/rground/thickness/.initial=2}
+\ctikzset{monopoles/tground/thickness/.initial=3}
+\ctikzset{monopoles/vcc/width/.initial=.2}
+\ctikzset{monopoles/vcc/arrow/.initial=legacy}
+\ctikzset{monopoles/vee/arrow/.initial=legacy}
+\ctikzset{monopoles/match/width/.initial=.4}
+\ctikzset{monopoles/chassis/width/.initial=.25}
+\ctikzset{monopoles/alternative chassis/width/.initial=.25}
+\ctikzset{monopoles/equipotentiality/width/.initial=.25}
+\ctikzset{monopoles/antenna/width/.initial=.25}
+\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/width/.initial=.25}
+\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/rxantenna/width/.initial=.25}
+\ctikzset{monopoles/bareantenna/width/.initial=.25}
+\ctikzset{monopoles/bareantenna/label/xanchor/.initial=1}
+\ctikzset{monopoles/bareantenna/label/yanchor/.initial=0.5}
+\ctikzset{monopoles/waves/width/.initial=0.5}
+
+% microstrips
+\ctikzset{bipoles/mstline/height/.initial=0.3}
+\ctikzset{bipoles/mstline/width/.initial=1.2}
+\pgfkeys{/tikz/mstlinelen/.add code={}{\ctikzset{bipoles/mstline/width=#1}}}
+\ctikzset{monopoles/msport/width/.initial=.5}
+\ctikzset{monopoles/msrstub/height/.initial=1.0}
+\ctikzset{monopoles/msrstub/width/.initial=0.6}
+
+% microphone and loudspeaker
+\ctikzset{bipoles/loudspeaker/height/.initial=.8}
+\ctikzset{bipoles/loudspeaker/depth/.initial=.3}
+\ctikzset{bipoles/loudspeaker/width/.initial=.8}
+\ctikzset{bipoles/mic/height/.initial=1.2}
+\ctikzset{bipoles/mic/depth/.initial=.0}
+\ctikzset{bipoles/mic/width/.initial=.8}
+
+% Zig Zag resistors
+\ctikzset{resistors/zigs/.initial=3}
+\ctikzset{resistors/width/.code={%
+ \ctikzset{bipoles/resistor/width=#1}%
+ \ctikzset{bipoles/vresistor/width=#1}%
+ \ctikzset{bipoles/potentiometer/width=#1}%
+ \ctikzset{bipoles/resistivesens/width=#1}%
+ \ctikzset{bipoles/photoresistor/width=#1}%
+ \ctikzset{bipoles/thermistor/width=#1}%
+ \ctikzset{bipoles/thermistorntc/width=#1}%
+ \ctikzset{bipoles/thermistorptc/width=#1}%
+ \ctikzset{bipoles/varistor/width=#1}%
+ \ctikzset{bipoles/generic/width=#1}%
+ \ctikzset{bipoles/generic potentiometer/width=#1}%
+ \ctikzset{bipoles/ageneric/width=#1}%
+ \ctikzset{bipoles/tgeneric/width=#1}%
+}}
+\ctikzset{wiper pos/.code={%
+ \ctikzset{bipoles/potentiometer/wiper pos=#1}%
+ \ctikzset{bipoles/generic potentiometer/wiper pos=#1}%
+}}
+% zigzag resistor
+\ctikzset{bipoles/resistor/height/.initial=.3}
+\ctikzset{bipoles/resistor/width/.initial=.8}
+\ctikzset{bipoles/potentiometer/height/.initial=.8}
+\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
+\ctikzset{bipoles/potentiometer/width/.initial=.8}
+\ctikzset{bipoles/potentiometer/wiper pos/.initial=.5}
+\ctikzset{bipoles/vresistor/height/.initial=.6}
+\ctikzset{bipoles/vresistor/width/.initial=.8}
+\ctikzset{bipoles/resistivesens/height/.initial=.6}
+\ctikzset{bipoles/resistivesens/width/.initial=.8}
+% square resistors
+\ctikzset{bipoles/photoresistor/height/.initial=.6}
+\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
+\ctikzset{bipoles/photoresistor/width/.initial=.8}
+\ctikzset{bipoles/thermistor/main/.initial=.7}
+\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/width/.initial=.8}
+\ctikzset{bipoles/thermistorntc/main/.initial=.7}
+\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistorptc/width/.initial=.8}
+\ctikzset{bipoles/thermistorptc/main/.initial=.7}
+\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistor/width/.initial=.8}
+\ctikzset{bipoles/varistor/main/.initial=.7}
+\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/varistor/width/.initial=.8}
+\ctikzset{bipoles/generic/height/.initial=.30}
+\ctikzset{bipoles/generic/width/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
+\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/wiper pos/.initial=.5}
+\ctikzset{bipoles/ageneric/height/.initial=.30}
+\ctikzset{bipoles/tgeneric/height/.initial=.70}
+\ctikzset{bipoles/tgeneric/width/.initial=.80}
+\ctikzset{bipoles/ageneric/width/.initial=.80}
+
+%% Capacitors
+\ctikzset{bipoles/capacitor/height/.initial=.6}
+\ctikzset{bipoles/capacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/height/.initial=.5}
+\ctikzset{bipoles/ecapacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/font/.initial=\pgf@circ@font@sixbm}
+%%% pcapacitor is deprecated
+\ctikzset{bipoles/pcapacitor/height/.initial=.6}
+\ctikzset{bipoles/pcapacitor/width/.initial=.2}
+\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
+\ctikzset{bipoles/ccapacitor/height/.initial=.6}
+\ctikzset{bipoles/ccapacitor/width/.initial=.12}
+\ctikzset{bipoles/ccapacitor/bend width/.initial=1.1}
+\ctikzset{bipoles/vcapacitor/height/.initial=.6}
+\ctikzset{bipoles/vcapacitor/width/.initial=.5}
+\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
+\ctikzset{bipoles/piezoelectric/height/.initial=.7}
+\ctikzset{bipoles/piezoelectric/width/.initial=.5}
+
+% Inductors
+\ctikzset{inductors/coils/.code={%
+ \ctikzset{bipoles/cuteinductor/coils=#1}%
+ \ctikzset{bipoles/cutechoke/coils=#1}%
+ \ctikzset{bipoles/americaninductor/coils=#1}%
+ \ctikzset{bipoles/vcuteinductor/coils=#1}%
+ \ctikzset{bipoles/vamericaninductor/coils=#1}%
+}}
+\ctikzset{inductors/width/.code={%
+ \ctikzset{bipoles/cuteinductor/width=#1}%
+ \ctikzset{bipoles/cutechoke/width=#1}%
+ \ctikzset{bipoles/americaninductor/width=#1}%
+ \ctikzset{bipoles/vcuteinductor/width=#1}%
+ \ctikzset{bipoles/vamericaninductor/width=#1}%
+ \ctikzset{bipoles/fullgeneric/width=#1}%
+ \ctikzset{bipoles/tfullgeneric/width=#1}%
+}}
+\ctikzset{bipoles/cuteinductor/height/.initial=.3}
+\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
+\ctikzset{bipoles/cuteinductor/width/.initial=.6}
+\ctikzset{bipoles/cuteinductor/coils/.initial=5}
+\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+%% Cute choke settings
+\ctikzset{bipoles/cutechoke/height/.initial=.3}
+\ctikzset{bipoles/cutechoke/lower coil height/.initial=.15}
+\ctikzset{bipoles/cutechoke/width/.initial=.6}
+\ctikzset{bipoles/cutechoke/coils/.initial=5}
+\ctikzset{bipoles/cutechoke/coil aspect/.initial=.5}%percentage of choke width, which is covered by lower coil
+\ctikzset{bipoles/cutechoke/cstep/.initial=.3}
+\ctikzset{bipoles/cutechoke/cdist/.initial=1.3}
+\ctikzset{bipoles/cutechoke/cthick/.initial=1}
+\newif\ifpgf@circuit@bipole@twolineschoke
+\pgf@circuit@bipole@twolineschokefalse
+\pgfkeys{/tikz/onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
+\ctikzset{onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
+\pgfkeys{/tikz/twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
+\ctikzset{twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
+%
+\ctikzset{bipoles/americaninductor/height/.initial=.3}
+\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
+\ctikzset{bipoles/americaninductor/width/.initial=.8}
+\ctikzset{bipoles/americaninductor/coils/.initial=4}
+\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
+\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
+\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
+\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
+\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
+\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
+\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
+\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
+\ctikzset{bipoles/fullgeneric/height/.initial=.30}
+\ctikzset{bipoles/fullgeneric/width/.initial=.80}
+
+% Sources
+
+\ctikzset{bipoles/esource/height/.initial=.60}
+\ctikzset{bipoles/esource/width/.initial=.60}
+\ctikzset{bipoles/pvsource/height/.initial=.60}
+\ctikzset{bipoles/pvsource/width/.initial=.60}
+\ctikzset{bipoles/isource/height/.initial=.60}
+\ctikzset{bipoles/isource/width/.initial=.60}
+\ctikzset{bipoles/oosource/height/.initial=.60}
+\ctikzset{bipoles/oosource/width/.initial=.60}
+\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/dcisource/angle/.initial=80}
+\ctikzset{bipoles/dcisource/height/.initial=.60}
+\ctikzset{bipoles/dcisource/width/.initial=.60}
+\ctikzset{bipoles/dcvsource/height/.initial=.60}
+\ctikzset{bipoles/dcvsource/width/.initial=.60}
+\ctikzset{bipoles/vsourcetri/height/.initial=.60}
+\ctikzset{bipoles/vsourcetri/width/.initial=.60}
+\ctikzset{bipoles/isourceam/height/.initial=.60}
+\ctikzset{bipoles/isourceam/width/.initial=.60}
+\ctikzset{bipoles/vsource/height/.initial=.60}
+\ctikzset{bipoles/vsource/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/height/.initial=.60}
+\ctikzset{bipoles/vsourceam/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/margin/.initial=.7}
+\ctikzset{bipoles/isourcesin/height/.initial=.60}
+\ctikzset{bipoles/isourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesin/height/.initial=.60}
+\ctikzset{bipoles/vsourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
+\ctikzset{bipoles/cisource/height/.initial=.7}
+\ctikzset{bipoles/cisource/width/.initial=.7}
+\ctikzset{bipoles/cisourceam/height/.initial=.7}
+\ctikzset{bipoles/cisourceam/width/.initial=.7}
+\ctikzset{bipoles/ecsource/height/.initial=.7}
+\ctikzset{bipoles/ecsource/width/.initial=.7}
+\ctikzset{bipoles/cvsource/height/.initial=.7}
+\ctikzset{bipoles/cvsource/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/height/.initial=.7}
+\ctikzset{bipoles/cvsourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
+\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
+\ctikzset{bipoles/cisourcesin/width/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
+\ctikzset{bipoles/battery/height/.initial=.6}
+\ctikzset{bipoles/battery/width/.initial=.3}
+\ctikzset{bipoles/battery1/height/.initial=.6}
+\ctikzset{bipoles/battery1/width/.initial=.3}
+\ctikzset{bipoles/battery2/height/.initial=.6}
+\ctikzset{bipoles/battery2/width/.initial=.3}
+
+% diodes
+
+\ctikzset{bipoles/diode/height/.initial=.50}
+\ctikzset{bipoles/diode/width/.initial=.40}
+\ctikzset{bipoles/bidirectionaldiode/height/.initial=1.1}
+\ctikzset{bipoles/bidirectionaldiode/width/.initial=1}
+\ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
+\ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
+\ctikzset{bipoles/varcap/height/.initial=.50}
+\ctikzset{bipoles/varcap/width/.initial=.45}
+
+% switches
+
+\ctikzset{bipoles/spst/height/.initial=.35}
+\ctikzset{bipoles/spst/width/.initial=.35}
+\ctikzset{bipoles/spst/depth/.initial=.2}
+\ctikzset{bipoles/nos/height/.initial=.3}
+\ctikzset{bipoles/nos/width/.initial=.35}
+\ctikzset{bipoles/nos/depth/.initial=.2}
+\ctikzset{bipoles/ncs/height/.initial=.35}
+\ctikzset{bipoles/ncs/width/.initial=.35}
+\ctikzset{bipoles/ncs/depth/.initial=.2}
+%%% reed switch
+\ctikzset{bipoles/reed/height/.initial=.4}
+\ctikzset{bipoles/reed/width/.initial=.8}% 0.35 in nos
+\ctikzset{bipoles/reed/depth/.initial=.4}
+
+% misc
+
+\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
+\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
+\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
+\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
+\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
+\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
+\ctikzset{bipoles/fuse/height/.initial=.20}
+\ctikzset{bipoles/fuse/width/.initial=.50}
+\ctikzset{bipoles/afuse/height/.initial=.20}
+\ctikzset{bipoles/afuse/width/.initial=.50}
+\ctikzset{bipoles/memristor/height/.initial=.30}
+\ctikzset{bipoles/memristor/wave height/.initial=.5}
+\ctikzset{bipoles/memristor/width/.initial=.80}
+\ctikzset{bipoles/open/height/.initial=.3} %necessary for curly voltages
+\ctikzset{bipoles/open/width/.initial=.3} %necessary for curly voltages
+\ctikzset{bipoles/open/voltage/straight label distance/.initial=0}
+\ctikzset{bipoles/open/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/short/height/.initial=0} %dummy height for voltage positioning
+\ctikzset{bipoles/short/width/.initial=0} %dummy width for voltage positioning
+%\ctikzset{bipoles/short/voltage/straight label distance/.initial=.2}
+%\ctikzset{bipoles/short/voltage/distance from node/.initial=.5}
+% multiwire
+\ctikzset{bipoles/multiwire/height/.initial=0.4}
+\ctikzset{bipoles/multiwire/width/.initial=0.2}
+\ctikzset{bipoles/multiwire/spacing/.initial=0.05}
+
+\ctikzset{bipoles/ammeter/height/.initial=.60}
+\ctikzset{bipoles/ammeter/width/.initial=.60}
+\ctikzset{bipoles/ohmmeter/height/.initial=.60}
+\ctikzset{bipoles/ohmmeter/width/.initial=.60}
+\ctikzset{bipoles/voltmeter/height/.initial=.60}
+\ctikzset{bipoles/voltmeter/width/.initial=.60}
+\ctikzset{bipoles/smeter/height/.initial=.60}
+\ctikzset{bipoles/smeter/width/.initial=.60}
+\ctikzset{bipoles/smeter/voltage/additional label shift/.initial=1}
+\ctikzset{bipoles/qmeter/depth/.initial=.40}
+\ctikzset{bipoles/qmeter/height/.initial=.80}
+\ctikzset{bipoles/qmeter/width/.initial=.60}
+% this must be specified for each one
+\ctikzset{bipoles/qvprobe/voltage/additional label shift/.initial=.5}
+\ctikzset{bipoles/qiprobe/voltage/additional label shift/.initial=.5}
+\ctikzset{bipoles/qpprobe/voltage/additional label shift/.initial=.5}
+\ctikzset{bipoles/iloop/width/.initial=.40}
+\ctikzset{bipoles/iloop/height/.initial=.60}
+
+\ctikzset{bipoles/oscope/height/.initial=.60}
+\ctikzset{bipoles/oscope/width/.initial=.60}
+\ctikzset{bipoles/oscope/voltage/additional label shift/.initial=1}
+
+
+% option to not rotate the new (Romano's) instruments
+\newif\ifpgf@circuit@straightinstruments\pgf@circuit@straightinstrumentstrue
+\pgfkeys{/tikz/straight instruments/.add code={}{\pgf@circuit@straightinstrumentstrue}}
+\ctikzset{straight instruments/.add code={}{\pgf@circuit@straightinstrumentstrue}}
+\pgfkeys{/tikz/rotated instruments/.add code={}{\pgf@circuit@straightinstrumentsfalse}}
+\ctikzset{rotated instruments/.add code={}{\pgf@circuit@straightinstrumentsfalse}}
+
+
+\ctikzset{bipoles/buffer/height/.initial=1}
+\ctikzset{bipoles/buffer/width/.initial=1}
+\ctikzset{bipoles/not port/width/.initial=1}
+\ctikzset{bipoles/not port/height/.initial=.8}
+\ctikzset{bipoles/not port/circle width/.initial=.15}
+\ctikzset{bipoles/lamp/height/.initial=.60}
+\ctikzset{bipoles/lamp/width/.initial=.60}
+\ctikzset{bipoles/bulb/height/.initial=.8}
+\ctikzset{bipoles/bulb/width/.initial=.8}
+\ctikzset{bipoles/tline/height/.initial=.3}
+\ctikzset{bipoles/tline/width/.initial=.8}
+\ctikzset{bipoles/squid/height/.initial=.60}
+\ctikzset{bipoles/squid/width/.initial=.60}
+\ctikzset{bipoles/barrier/height/.initial=.60}
+\ctikzset{bipoles/barrier/width/.initial=.60}
+\ctikzset{bipoles/thermocouple/height/.initial=.250}
+\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
+\ctikzset{bipoles/thermocouple/width/.initial=.140}
+\ctikzset{bipoles/pushbutton/height/.initial=.5}
+\ctikzset{bipoles/pushbutton/height 2/.initial=.2}
+\ctikzset{bipoles/pushbutton/width/.initial=.50}
+
+\ctikzset{bipoles/twoport/width/.initial=.7}
+\ctikzset{bipoles/twoport/height/.initial=.7}
+\ctikzset{bipoles/twoport/text/.initial=}
+\ctikzset{bipoles/vco/width/.initial=.7}
+\ctikzset{bipoles/bandpass/width/.initial=.7}
+\ctikzset{bipoles/bandstop/width/.initial=.7}
+\ctikzset{bipoles/highpass/width/.initial=.7}
+\ctikzset{bipoles/lowpass/width/.initial=.7}
+\ctikzset{bipoles/adc/width/.initial=.7}
+\ctikzset{bipoles/dac/width/.initial=.7}
+\ctikzset{bipoles/dsp/width/.initial=.7}
+\ctikzset{bipoles/fft/width/.initial=.7}
+\ctikzset{bipoles/amp/width/.initial=.7}
+\ctikzset{bipoles/vamp/width/.initial=.7}
+\ctikzset{bipoles/piattenuator/width/.initial=.7}
+\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
+\ctikzset{bipoles/tattenuator/width/.initial=.7}
+\ctikzset{bipoles/vtattenuator/width/.initial=.7}
+\ctikzset{bipoles/phaseshifter/width/.initial=.7}
+\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
+\ctikzset{bipoles/detector/width/.initial=.7}
+
+% crossing wires
+\ctikzset{bipoles/crossing/size/.initial=.2}
+
+% Transistors starts here
+
+\newif\ifpgf@circuit@trans@depletiontype
+\pgf@circuit@trans@depletiontypefalse
+
+\newif\ifpgf@circuit@mos@arrows
+\ctikzset{tripoles/mos style/.is choice}
+\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
+\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
+\pgfkeys{/tikz/arrowmos/.add code={}{\pgf@circuit@mos@arrowstrue}}
+\pgfkeys{/tikz/noarrowmos/.add code={}{\pgf@circuit@mos@arrowsfalse}}
+
+% Fixed label positions
+\newif\ifpgf@circuit@transisors@fixlabels
+\pgf@circuit@transisors@fixlabelstrue
+\pgfkeys{/tikz/center transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
+\ctikzset{fix transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
+\pgfkeys{/tikz/legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
+\ctikzset{legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
+
+% Option solderdot for fet
+\newif\ifpgf@circuit@fet@solderdot
+\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+
+% Option bodydiode for fet
+\newif\ifpgf@circuit@fet@bodydiode
+\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+
+% Option draw fet without gate connection
+\newif\ifpgf@circuit@bpt@drawgate
+\pgf@circuit@bpt@drawgatetrue
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+
+% Option draw bpt without base connection
+\newif\ifpgf@circuit@bpt@drawbase
+\pgf@circuit@bpt@drawbasetrue
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+
+% Option draw bpt with optical input
+\newif\ifpgf@circuit@bpt@drawphoto
+\pgf@circuit@bpt@drawphotofalse
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+
+% Option draw fet without bulk connection -- Added by Burak Kelleci
+\newif\ifpgf@circuit@bpt@drawbulk
+\pgfkeys{/tikz/bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
+\ctikzset{bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
+\pgfkeys{/tikz/nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
+\ctikzset{nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
+
+% Option draw pmos with empty circle
+\newif\ifpgf@circuit@pmos@emptycircle
+\pgf@circuit@pmos@emptycirclefalse
+\ctikzset{tripoles/pmos style/.is choice}
+\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+% Option draw pmos with no circle
+\newif\ifpgf@circuit@pmos@nocircle
+\pgf@circuit@pmos@nocirclefalse
+\pgfkeys{/tikz/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
+\ctikzset{tripoles/pmos style/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
+% back to normal
+\pgfkeys{/tikz/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
+\ctikzset{tripoles/pmos style/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
+% arrows at the end, the correct way
+\newif\ifpgf@circuit@trans@arrowatend
+\pgf@circuit@trans@arrowatendfalse
+\ctikzset{transistors/arrow pos/.is choice}
+\ctikzset{transistors/arrow pos/legacy/.code={\pgf@circuit@trans@arrowatendfalse}}
+\ctikzset{transistors/arrow pos/end/.code={\pgf@circuit@trans@arrowatendtrue}}
+
+\newif\ifpgf@circuit@trans@ntype
+\pgf@circuit@trans@ntypetrue %default true
+%\newif\ifpgf@circuit@trans@ptype
+%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
+\ctikzset{tripoles/nmos/width/.initial=.7}
+\ctikzset{tripoles/nmos/gate height/.initial=.35}
+\ctikzset{tripoles/nmos/base height/.initial=.5}
+\ctikzset{tripoles/nmos/conn height/.initial=0}
+\ctikzset{tripoles/nmos/height/.initial=1.1}
+\ctikzset{tripoles/nmos/base width/.initial=.5}
+\ctikzset{tripoles/nmos/gate width/.initial=.62}
+\ctikzset{tripoles/nmos/arrow pos/.initial=.6}
+\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nmos/curr direction/.initial=1}
+
+\ctikzset{tripoles/pmos/width/.initial=.7}
+\ctikzset{tripoles/pmos/gate height/.initial=.35}
+\ctikzset{tripoles/pmos/base height/.initial=.5}
+\ctikzset{tripoles/pmos/conn height/.initial=0}
+\ctikzset{tripoles/pmos/height/.initial=1.1}
+\ctikzset{tripoles/pmos/base width/.initial=.5}
+\ctikzset{tripoles/pmos/gate width/.initial=.62}
+\ctikzset{tripoles/pmos/arrow pos/.initial=.4}
+\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pmos/curr direction/.initial=-1}
+
+\ctikzset{tripoles/hemt/width/.initial=.7}
+\ctikzset{tripoles/hemt/gate height/.initial=.35}
+\ctikzset{tripoles/hemt/base height/.initial=.5}
+\ctikzset{tripoles/hemt/conn height/.initial=0}
+\ctikzset{tripoles/hemt/height/.initial=1.1}
+\ctikzset{tripoles/hemt/base width/.initial=.5}
+\ctikzset{tripoles/hemt/gate width/.initial=.62}
+\ctikzset{tripoles/hemt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/hemt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/hemt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/hemt/curr direction/.initial=1}
+
+\ctikzset{tripoles/nfet/width/.initial=.7}
+\ctikzset{tripoles/nfet/gate height/.initial=.35}
+\ctikzset{tripoles/nfet/base height/.initial=.5}
+\ctikzset{tripoles/nfet/conn height/.initial=0}
+\ctikzset{tripoles/nfet/height/.initial=1.1}
+\ctikzset{tripoles/nfet/base width/.initial=.5}
+\ctikzset{tripoles/nfet/gate width/.initial=.62}
+\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pfet/width/.initial=.7}
+\ctikzset{tripoles/pfet/gate height/.initial=.35}
+\ctikzset{tripoles/pfet/base height/.initial=.5}
+\ctikzset{tripoles/pfet/conn height/.initial=0}
+\ctikzset{tripoles/pfet/height/.initial=1.1}
+\ctikzset{tripoles/pfet/base width/.initial=.5}
+\ctikzset{tripoles/pfet/gate width/.initial=.62}
+\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigfete/width/.initial=.7}
+\ctikzset{tripoles/nigfete/gate height/.initial=.35}
+\ctikzset{tripoles/nigfete/base height/.initial=.5}
+\ctikzset{tripoles/nigfete/conn height/.initial=.35}
+\ctikzset{tripoles/nigfete/height/.initial=1.1}
+\ctikzset{tripoles/nigfete/base width/.initial=.5}
+\ctikzset{tripoles/nigfete/gate width/.initial=.62}
+\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfete/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetd/width/.initial=.7}
+\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetd/base height/.initial=.5}
+\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetd/height/.initial=1.1}
+\ctikzset{tripoles/nigfetd/base width/.initial=.5}
+\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
+
+\ctikzset{tripoles/pigfete/width/.initial=.7}
+\ctikzset{tripoles/pigfete/gate height/.initial=.35}
+\ctikzset{tripoles/pigfete/base height/.initial=.5}
+\ctikzset{tripoles/pigfete/conn height/.initial=.35}
+\ctikzset{tripoles/pigfete/height/.initial=1.1}
+\ctikzset{tripoles/pigfete/base width/.initial=.5}
+\ctikzset{tripoles/pigfete/gate width/.initial=.62}
+\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetd/width/.initial=.7}
+\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetd/base height/.initial=.5}
+\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetd/height/.initial=1.1}
+\ctikzset{tripoles/pigfetd/base width/.initial=.5}
+\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
+
+\ctikzset{tripoles/npn/width/.initial=.6}
+\ctikzset{tripoles/npn/base height/.initial=.45}
+\ctikzset{tripoles/npn/base height 2/.initial=.15}
+\ctikzset{tripoles/npn/base height/.initial=.4}
+\ctikzset{tripoles/npn/conn height/.initial=0}
+\ctikzset{tripoles/npn/height/.initial=1.1}
+\ctikzset{tripoles/npn/base width/.initial=.5}
+\ctikzset{tripoles/npn/arrow pos/.initial=.5}
+\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/npn/curr direction/.initial=1}
+
+\ctikzset{tripoles/pnp/width/.initial=.6}
+\ctikzset{tripoles/pnp/base height/.initial=.45}
+\ctikzset{tripoles/pnp/base height 2/.initial=.15}
+\ctikzset{tripoles/pnp/base height/.initial=.4}
+\ctikzset{tripoles/pnp/conn height/.initial=0}
+\ctikzset{tripoles/pnp/height/.initial=1.1}
+\ctikzset{tripoles/pnp/base width/.initial=.5}
+\ctikzset{tripoles/pnp/arrow pos/.initial=.5}
+\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pnp/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigbt/width/.initial=.6}
+\ctikzset{tripoles/pigbt/gate height/.initial=.45}
+\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/pigbt/base height/.initial=.4}
+\ctikzset{tripoles/pigbt/conn height/.initial=0}
+\ctikzset{tripoles/pigbt/height/.initial=1.1}
+\ctikzset{tripoles/pigbt/gate width/.initial=.62}
+\ctikzset{tripoles/pigbt/base width/.initial=.5}
+\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigbt/width/.initial=.6}
+\ctikzset{tripoles/nigbt/gate height/.initial=.45}
+\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/nigbt/base height/.initial=.4}
+\ctikzset{tripoles/nigbt/conn height/.initial=0}
+\ctikzset{tripoles/nigbt/height/.initial=1.1}
+\ctikzset{tripoles/nigbt/gate width/.initial=.62}
+\ctikzset{tripoles/nigbt/base width/.initial=.5}
+\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/Lpigbt/width/.initial=.6}
+\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/Lnigbt/width/.initial=.6}
+\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/njfet/width/.initial=.7}
+\ctikzset{tripoles/njfet/gate height/.initial=.5}
+\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/njfet/gate width/.initial=.5}
+\ctikzset{tripoles/njfet/conn height/.initial=.35}
+\ctikzset{tripoles/njfet/height/.initial=1.1}
+\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/njfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pjfet/width/.initial=.7}
+\ctikzset{tripoles/pjfet/gate height/.initial=.5}
+\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/pjfet/gate width/.initial=.5}
+\ctikzset{tripoles/pjfet/conn height/.initial=.35}
+\ctikzset{tripoles/pjfet/height/.initial=1.1}
+\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/isfet/width/.initial=1}
+\ctikzset{tripoles/isfet/gate height/.initial=.35}
+\ctikzset{tripoles/isfet/base height/.initial=.5}
+\ctikzset{tripoles/isfet/height/.initial=1.1}
+\ctikzset{tripoles/isfet/base width/.initial=.3}
+\ctikzset{tripoles/isfet/gate width/.initial=.5}
+\ctikzset{tripoles/isfet/conn height/.initial=0}
+\ctikzset{tripoles/isfet/wave width/.initial=.16}
+\ctikzset{tripoles/isfet/wave amp/.initial=.06}
+\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
+\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
+\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/isfet/curr direction/.initial=1}
+%
+% multi-emitter and multi-collector BJTs by Romano Giannetti
+%
+\ctikzset{tripoles/bjt/emitters/.initial=1}
+\ctikzset{tripoles/bjt/collectors/.initial=1}
+\pgfkeys{/tikz/emitters/.add code={}{\ctikzset{tripoles/bjt/emitters=#1}}}
+\pgfkeys{/tikz/collectors/.add code={}{\ctikzset{tripoles/bjt/collectors=#1}}}
+\ctikzset{tripoles/bjt/pins width/.initial=0.3}
+\pgfkeys{/tikz/bjt pins width/.add code={}{\ctikzset{tripoles/bjt/pins width=#1}}}
+\ctikzset{tripoles/bjt/multi height/.initial=.5}
+\pgfkeys{/tikz/bjt multi height/.add code={}{\ctikzset{tripoles/bjt/multi height/.initial=#1}}}
+%
+\ctikzset{tripoles/bjt/width/.initial=.3}
+\ctikzset{tripoles/bjt/base height 2/.initial=.4}
+\ctikzset{tripoles/bjt/base height/.initial=1.1}
+\ctikzset{tripoles/bjt/height/.initial=.4}
+\ctikzset{tripoles/bjt/base width/.initial=1}
+\ctikzset{tripoles/bjt/arrow pos/.initial=.5}
+% do NOT touch these two!
+\ctikzset{tripoles/bjt/npn/curr direction/.initial=1}
+\ctikzset{tripoles/bjt/pnp/curr direction/.initial=-1}
+
+%% transistors stop here
+
+%% Logic ports
+
+\newif\ifpgf@circuit@europeanlogicport
+\ctikzset{logic ports/.is choice}
+\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue
+ \tikzset{and port/.style={shape=european and port}}%
+ \tikzset{or port/.style={shape=european or port}}%
+ \tikzset{xor port/.style={shape=european xor port}}%
+ \tikzset{buffer port/.style={shape=european buffer port}}%
+ \tikzset{not port/.style={shape=european not port}}%
+ \tikzset{nand port/.style={shape=european nand port}}%
+ \tikzset{nor port/.style={shape=european nor port}}%
+ \tikzset{xnor port/.style={shape=european xnor port}}%
+}}
+\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse
+ \tikzset{and port/.style={shape=american and port}}%
+ \tikzset{or port/.style={shape=american or port}}%
+ \tikzset{xor port/.style={shape=american xor port}}%
+ \tikzset{buffer port/.style={shape=american buffer port}}%
+ \tikzset{not port/.style={shape=american not port}}%
+ \tikzset{nand port/.style={shape=american nand port}}%
+ \tikzset{nor port/.style={shape=american nor port}}%
+ \tikzset{xnor port/.style={shape=american xnor port}}%
+}}
+
+\ctikzset{logic ports origin/.is choice}
+\ctikzset{logic ports origin/legacy/.code={
+ \ctikzset{tripoles/american and port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american nand port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american nor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american or port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american xor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american xnor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european and port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european nand port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european or port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european nor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european xor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european xnor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european buffer port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european not port/origin/.initial=0.8}%
+ }%
+}
+\ctikzset{logic ports origin/center/.code={%
+ \ctikzset{tripoles/american and port/origin/.initial=0}%
+ \ctikzset{tripoles/american nand port/origin/.initial=0}%
+ \ctikzset{tripoles/american nor port/origin/.initial=0}%
+ \ctikzset{tripoles/american or port/origin/.initial=0}%
+ \ctikzset{tripoles/american xor port/origin/.initial=0}%
+ \ctikzset{tripoles/american xnor port/origin/.initial=0}%
+ \ctikzset{tripoles/european and port/origin/.initial=0}%
+ \ctikzset{tripoles/european nand port/origin/.initial=0}%
+ \ctikzset{tripoles/european or port/origin/.initial=0}%
+ \ctikzset{tripoles/european nor port/origin/.initial=0}%
+ \ctikzset{tripoles/european xor port/origin/.initial=0}%
+ \ctikzset{tripoles/european xnor port/origin/.initial=0}%
+ \ctikzset{tripoles/european buffer port/origin/.initial=0}%
+ \ctikzset{tripoles/european not port/origin/.initial=0}%
+ }%
+}
+
+\newif\ifpgfcirc@roundy@or@shapes\pgfcirc@roundy@or@shapesfalse
+\ctikzset{american or shape/.is choice}
+\ctikzset{american or shape/roundy/.code={\pgfcirc@roundy@or@shapestrue}}
+\ctikzset{american or shape/pointy/.code={\pgfcirc@roundy@or@shapesfalse}}
+
+\newif\ifpgfcirc@draw@leads\pgfcirc@draw@leadstrue
+\ctikzset{logic ports draw input leads/.is choice}
+\ctikzset{logic ports draw input leads/true/.code={\pgfcirc@draw@leadstrue}}
+\ctikzset{logic ports draw input leads/false/.code={\pgfcirc@draw@leadsfalse}}
+\tikzset{input leads/.code={\pgfcirc@draw@leadstrue}}
+\tikzset{no input leads/.code={\pgfcirc@draw@leadsfalse}}
+
+\ctikzset{tripoles/american and port/width/.initial=1.1}
+\ctikzset{tripoles/american and port/height/.initial=.8}
+\ctikzset{tripoles/american and port/port width/.initial=.7}
+\ctikzset{tripoles/american and port/input height/.initial=.5}
+\ctikzset{tripoles/american nand port/width/.initial=1.1}
+\ctikzset{tripoles/american nand port/height/.initial=.8}
+\ctikzset{tripoles/american nand port/port width/.initial=.7}
+\ctikzset{tripoles/american nand port/circle width/.initial=.15}
+\ctikzset{tripoles/american nand port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/width/.initial=1.1}
+\ctikzset{tripoles/american or port/height/.initial=.8}
+\ctikzset{tripoles/american or port/port width/.initial=.7}
+\ctikzset{tripoles/american or port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/input skip/.initial=.25}
+\ctikzset{tripoles/american or port/aaa/.initial=.6}
+\ctikzset{tripoles/american or port/bbb/.initial=.4}
+\ctikzset{tripoles/american or port/ccc/.initial=.5}
+\ctikzset{tripoles/american or port/ddd/.initial=.0}
+\ctikzset{tripoles/american nor port/width/.initial=1.1}
+\ctikzset{tripoles/american nor port/height/.initial=.8}
+\ctikzset{tripoles/american nor port/port width/.initial=.7}
+\ctikzset{tripoles/american nor port/input height/.initial=.5}
+\ctikzset{tripoles/american nor port/input skip/.initial=.25}
+\ctikzset{tripoles/american nor port/circle width/.initial=.15}
+\ctikzset{tripoles/american nor port/aaa/.initial=.6}
+\ctikzset{tripoles/american nor port/bbb/.initial=.4}
+\ctikzset{tripoles/american nor port/ccc/.initial=.5}
+\ctikzset{tripoles/american nor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xor port/width/.initial=1.1}
+\ctikzset{tripoles/american xor port/height/.initial=.8}
+\ctikzset{tripoles/american xor port/port width/.initial=.7}
+\ctikzset{tripoles/american xor port/input height/.initial=.5}
+\ctikzset{tripoles/american xor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xor port/distance/.initial=.1}
+\ctikzset{tripoles/american xnor port/width/.initial=1.1}
+\ctikzset{tripoles/american xnor port/height/.initial=.8}
+\ctikzset{tripoles/american xnor port/port width/.initial=.7}
+\ctikzset{tripoles/american xnor port/input height/.initial=.5}
+\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xnor port/distance/.initial=.1}
+\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
+\ctikzset{tripoles/american and port/origin/.initial=0.8}
+\ctikzset{tripoles/american and port/inputs/.initial=2}
+% variable number of inputs
+\ctikzset{tripoles/american nand port/origin/.initial=0.8}
+\ctikzset{tripoles/american nand port/inputs/.initial=2}
+\ctikzset{tripoles/american nor port/origin/.initial=0.8}
+\ctikzset{tripoles/american nor port/inputs/.initial=2}
+\ctikzset{tripoles/american nor port/angle/.initial=70}
+\ctikzset{tripoles/american nor port/inner/.initial=0.3}
+\ctikzset{tripoles/american or port/origin/.initial=0.8}
+\ctikzset{tripoles/american or port/inputs/.initial=2}
+\ctikzset{tripoles/american or port/angle/.initial=70}
+\ctikzset{tripoles/american or port/inner/.initial=0.3}
+\ctikzset{tripoles/american xor port/origin/.initial=0.8}
+\ctikzset{tripoles/american xor port/inputs/.initial=2}
+\ctikzset{tripoles/american xor port/angle/.initial=70}
+\ctikzset{tripoles/american xor port/inner/.initial=0.3}
+\ctikzset{tripoles/american xnor port/origin/.initial=0.8}
+\ctikzset{tripoles/american xnor port/inputs/.initial=2}
+\ctikzset{tripoles/american xnor port/angle/.initial=70}
+\ctikzset{tripoles/american xnor port/inner/.initial=0.3}
+
+\ctikzset{tripoles/european and port/width/.initial=1.4}
+\ctikzset{tripoles/european and port/height/.initial=.65}
+\ctikzset{tripoles/european and port/reserved/.initial=.6}
+\ctikzset{tripoles/european and port/input height/.initial=.6}
+\ctikzset{tripoles/european or port/width/.initial=1.4}
+\ctikzset{tripoles/european or port/height/.initial=.65}
+\ctikzset{tripoles/european or port/reserved/.initial=.6}
+\ctikzset{tripoles/european or port/input height/.initial=.6}
+\ctikzset{tripoles/european xor port/width/.initial=1.4}
+\ctikzset{tripoles/european xor port/height/.initial=.65}
+\ctikzset{tripoles/european xor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xor port/input height/.initial=.6}
+\ctikzset{tripoles/european nand port/width/.initial=1.4}
+\ctikzset{tripoles/european nand port/not height/.initial=.3}
+\ctikzset{tripoles/european nand port/not width/.initial=.8}
+\ctikzset{tripoles/european nand port/height/.initial=.65}
+\ctikzset{tripoles/european nand port/reserved/.initial=.6}
+\ctikzset{tripoles/european nand port/input height/.initial=.6}
+\ctikzset{tripoles/european buffer port/width/.initial=1.4}
+\ctikzset{tripoles/european buffer port/not height/.initial=.3}
+\ctikzset{tripoles/european buffer port/not width/.initial=.8}
+\ctikzset{tripoles/european buffer port/height/.initial=.65}
+\ctikzset{tripoles/european buffer port/reserved/.initial=.6}
+\ctikzset{tripoles/european buffer port/input height/.initial=0}
+\ctikzset{tripoles/european not port/width/.initial=1.4}
+\ctikzset{tripoles/european not port/not height/.initial=.3}
+\ctikzset{tripoles/european not port/not width/.initial=.8}
+\ctikzset{tripoles/european not port/height/.initial=.65}
+\ctikzset{tripoles/european not port/reserved/.initial=.6}
+\ctikzset{tripoles/european not port/input height/.initial=0}
+\ctikzset{tripoles/european xnor port/width/.initial=1.4}
+\ctikzset{tripoles/european xnor port/not height/.initial=.3}
+\ctikzset{tripoles/european xnor port/not width/.initial=.8}
+\ctikzset{tripoles/european xnor port/height/.initial=.65}
+\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xnor port/input height/.initial=.6}
+\ctikzset{tripoles/european nor port/width/.initial=1.4}
+\ctikzset{tripoles/european nor port/not height/.initial=.3}
+\ctikzset{tripoles/european nor port/not width/.initial=.8}
+\ctikzset{tripoles/european nor port/height/.initial=.65}
+\ctikzset{tripoles/european nor port/reserved/.initial=.6}
+\ctikzset{tripoles/european nor port/input height/.initial=.6}
+% variable number of inputs
+\ctikzset{tripoles/european and port/origin/.initial=0.8}
+\ctikzset{tripoles/european and port/inputs/.initial=2}
+\ctikzset{tripoles/european nand port/origin/.initial=0.8}
+\ctikzset{tripoles/european nand port/inputs/.initial=2}
+\ctikzset{tripoles/european or port/origin/.initial=0.8}
+\ctikzset{tripoles/european or port/inputs/.initial=2}
+\ctikzset{tripoles/european nor port/origin/.initial=0.8}
+\ctikzset{tripoles/european nor port/inputs/.initial=2}
+\ctikzset{tripoles/european xor port/origin/.initial=0.8}
+\ctikzset{tripoles/european xor port/inputs/.initial=2}
+\ctikzset{tripoles/european xnor port/origin/.initial=0.8}
+\ctikzset{tripoles/european xnor port/inputs/.initial=2}
+\ctikzset{tripoles/european buffer port/origin/.initial=0.8}
+\ctikzset{tripoles/european buffer port/inputs/.initial=1}%
+\ctikzset{tripoles/european not port/origin/.initial=0.8}
+\ctikzset{tripoles/european not port/inputs/.initial=1}%
+%%% parameters that are not used anymore after multi-input
+%%% gates --- left for compatibility of source code.
+\ctikzset{tripoles/american xor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
+% switches for logic gates
+%
+\pgfkeys{/tikz/number inputs/.initial=0}
+\pgfkeys{/tikz/number inputs/.default=0}
+
+%% flip-flop specific keys (most others are the same as chips)
+
+\ctikzset{multipoles/flipflop/font/.initial=\pgf@circ@font@small}
+\ctikzset{multipoles/flipflop/fontud/.initial=\pgf@circ@font@tiny}
+\ctikzset{multipoles/flipflop/width/.initial=1.2}
+\ctikzset{multipoles/flipflop/pin spacing/.initial=0.6}
+\ctikzset{multipoles/flipflop/clock wedge size/.initial=0.2}
+
+%% muxdemuxes keys
+
+\ctikzset{multipoles/muxdemux/base len/.initial=0.4}
+\ctikzset{multipoles/muxdemux/Lh/.initial=8.0}
+\ctikzset{multipoles/muxdemux/Rh/.initial=6.0}
+\ctikzset{multipoles/muxdemux/w/.initial=3.0}
+\ctikzset{multipoles/muxdemux/inset w/.initial=0.0}
+\ctikzset{multipoles/muxdemux/inset Lh/.initial=0.0}
+\ctikzset{multipoles/muxdemux/inset Rh/.initial=0.0}
+\ctikzset{multipoles/muxdemux/NL/.initial=8}
+\ctikzset{multipoles/muxdemux/NR/.initial=1}
+\ctikzset{multipoles/muxdemux/NB/.initial=3}
+\ctikzset{multipoles/muxdemux/NT/.initial=0}
+\ctikzset{multipoles/muxdemux/square pins/.initial=0}
+%
+% switches for op amps
+% changing input polarity
+%
+\newif\ifpgf@circuit@oa@iplusup\pgf@circuit@oa@iplusupfalse
+\pgfkeys{/tikz/noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
+\ctikzset{noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
+\pgfkeys{/tikz/noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
+\ctikzset{noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
+%
+% changing output polarity (for fully diff objects)
+%
+\newif\ifpgf@circuit@oa@oplusup\pgf@circuit@oa@oplusuptrue
+\pgfkeys{/tikz/noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
+\ctikzset{noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
+\pgfkeys{/tikz/noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
+\ctikzset{noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
+
+% Operational amplifier
+\ctikzset{tripoles/op amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/op amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/op amp/height/.initial=1.4} % Total height
+\ctikzset{tripoles/op amp/input height/.initial=.5} % Input port vertical separation
+\ctikzset{tripoles/op amp/up pos/.initial=.45} % Top and bottom anchor position
+\ctikzset{tripoles/op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Fully differential operational amplifier
+\ctikzset{tripoles/fd op amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/fd op amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/fd op amp/height/.initial=1.4} % Total height
+\ctikzset{tripoles/fd op amp/input height/.initial=.5} % Input port vertical separation
+\ctikzset{tripoles/fd op amp/output height/.initial=.5} % Output port vertical separation
+\ctikzset{tripoles/fd op amp/up pos/.initial=.45} % Top and bottom anchor position
+\ctikzset{tripoles/fd op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+\ctikzset{tripoles/en amp/width/.initial=1.7}
+\ctikzset{tripoles/en amp/port width/.initial=.7}
+\ctikzset{tripoles/en amp/height/.initial=1.6}
+\ctikzset{tripoles/en amp/input height/.initial=.3}
+\ctikzset{tripoles/en amp/up pos/.initial=.45}
+\ctikzset{tripoles/en amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+\ctikzset{tripoles/en amp/font2/.initial=\pgf@circ@font@twelve} % Absolute font size needed!
+\ctikzset{tripoles/en amp/text/.initial={$\mathstrut{\triangleright}\,{\infty}$}}
+\tikzset{
+ en amp text/.code = {%
+ \ctikzsetvalof{tripoles/en amp/text}{#1}%
+ },
+ en amp text A/.code = {%
+ \ctikzsetvalof{tripoles/en amp/text}{$\mathstrut{\triangleright}\,\mathrm{A}$}%
+ },
+}
+
+% Transconductance amplifier
+\ctikzset{tripoles/gm amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/gm amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/gm amp/height/.initial=1.4} % Left side of the trapezoid
+\ctikzset{tripoles/gm amp/height 2/.initial=0.5} % Right side of the trapezoid
+\ctikzset{tripoles/gm amp/input height/.initial=.5} % Input port vertical separation
+\ctikzset{tripoles/gm amp/up pos/.initial=.45} % Top and bottom anchor position
+\ctikzset{tripoles/gm amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Instrumentation amplifier
+\ctikzset{tripoles/inst amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/inst amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/inst amp/height/.initial=1.4} % Left side of the trapezoid
+\ctikzset{tripoles/inst amp/height 2/.initial=0.6} % Right side of the trapezoid
+\ctikzset{tripoles/inst amp/input height/.initial=.5} % Input ports vertical separation
+\ctikzset{tripoles/inst amp/up pos/.initial=.4} % Top and bottom anchor position
+\ctikzset{tripoles/inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
+\ctikzset{tripoles/inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Instrumentation amplifier with differential output
+\ctikzset{tripoles/fd inst amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/fd inst amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/fd inst amp/height/.initial=1.4} % Left side of the trapezoid
+\ctikzset{tripoles/fd inst amp/height 2/.initial=0.6} % Right side of the trapezoid
+\ctikzset{tripoles/fd inst amp/input height/.initial=.5} % Input ports vertical separation
+\ctikzset{tripoles/fd inst amp/output height/.initial=.5} % Output ports vertical separation
+\ctikzset{tripoles/fd inst amp/up pos/.initial=.4} % Top and bottom anchor position
+\ctikzset{tripoles/fd inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
+\ctikzset{tripoles/fd inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Instrumentation amplifier with gain resistor terminals
+\ctikzset{tripoles/inst amp ra/width/.initial=2.4} % Total width
+\ctikzset{tripoles/inst amp ra/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/inst amp ra/height/.initial=2.9} % Left side of the trapezoid
+\ctikzset{tripoles/inst amp ra/height 2/.initial=0.4} % Right side of the trapezoid
+\ctikzset{tripoles/inst amp ra/input height/.initial=.7} % Input ports vertical separation
+\ctikzset{tripoles/inst amp ra/up pos/.initial=.4} % Top and bottom anchor position
+\ctikzset{tripoles/inst amp ra/refv pos/.initial=.7} % Top and bottom voltage reference position
+\ctikzset{tripoles/inst amp ra/ra pos/.initial=.6} % Gain resistor terminals vertical separation
+\ctikzset{tripoles/inst amp ra/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Plain amplifier
+\ctikzset{tripoles/plain amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/plain amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/plain amp/height/.initial=1.4} % Total height
+\ctikzset{tripoles/plain amp/input height/.initial=.5} % Input ports vertical separation
+\ctikzset{tripoles/plain amp/up pos/.initial=.45} % Top and bottom anchor position
+
+% changing fonts and symbols of amplifiers
+\ctikzset{amplifiers/symbol font/.code={%
+ \ctikzset{tripoles/inst amp ra/font=#1}%
+ \ctikzset{tripoles/fd inst amp/font=#1}%
+ \ctikzset{tripoles/inst amp/font=#1}%
+ \ctikzset{tripoles/gm amp/font=#1}%
+ \ctikzset{tripoles/en amp/font=#1}%
+ \ctikzset{tripoles/fd op amp/font=#1}%
+ \ctikzset{tripoles/op amp/font=#1}%
+}}
+\ctikzset{amplifiers/plus/.initial={$+$}}
+\ctikzset{amplifiers/minus/.initial={$-$}}
+\tikzset{amp symbol font/.code={%
+ \ctikzset{amplifiers/symbol font={#1}}%
+ }
+}
+\tikzset{amp plus/.code={\ctikzsetvalof{amplifiers/plus}{#1}}}
+\tikzset{amp minus/.code={\ctikzsetvalof{amplifiers/minus}{#1}}}
+\def\pgf@circ@ampli@plus{\ctikzvalof{amplifiers/plus}}
+\def\pgf@circ@ampli@minus{\ctikzvalof{amplifiers/minus}}
+
+\ctikzset{tripoles/thyristor/height/.initial=1.10}
+\ctikzset{tripoles/thyristor/height 2/.initial=.5}
+\ctikzset{tripoles/thyristor/width/.initial=1.0}
+\ctikzset{tripoles/thyristor/diode height/.initial=.5}
+\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+\ctikzset{tripoles/triac/height/.initial=1.1}
+\ctikzset{tripoles/triac/width/.initial=1}
+\ctikzset{tripoles/triac/diode width left/.initial=.3}
+\ctikzset{tripoles/triac/diode width right/.initial=.3}
+
+%% Cute switches
+\ctikzset{bipoles/cuteswitch/shape/.initial={ocirc}}
+\ctikzset{bipoles/cuteswitch/height/.initial=.6}
+\ctikzset{bipoles/cuteswitch/height 2/.initial=.2}
+\ctikzset{bipoles/cuteswitch/width/.initial=.50}
+\ctikzset{bipoles/cuteswitch/thickness/.initial=1}
+
+\ctikzset{tripoles/spdt/width/.initial=.85}
+\ctikzset{tripoles/spdt/height/.initial=.45}
+\ctikzset{tripoles/spdt/margin/.initial=.45}
+
+\ctikzset{tripoles/toggleswitch/height/.initial=.8}
+\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
+\ctikzset{tripoles/toggleswitch/width/.initial=.80}
+
+\ctikzset{tripoles/mixer/width/.initial=0.7}
+\ctikzset{tripoles/adder/width/.initial=0.7}
+\ctikzset{tripoles/circulator/width/.initial=.7}
+\ctikzset{tripoles/oscillator/width/.initial=.7}
+
+
+\ctikzset{tripoles/wilkinson/height/.initial=1.3}
+\ctikzset{tripoles/wilkinson/width/.initial=1.3}
+
+\ctikzset{quadpoles/transformer/inner/.initial=0.4}
+\ctikzset{quadpoles/transformer/width/.initial=1.5}
+\ctikzset{quadpoles/transformer/width1/.initial=.4}
+\ctikzset{quadpoles/transformer/height/.initial=1.5}
+\ctikzset{quadpoles/transformer/height1/.initial=.8}
+\ctikzset{quadpoles/transformer core/inner/.initial=0.4}
+\ctikzset{quadpoles/transformer core/width/.initial=1.5}
+\ctikzset{quadpoles/transformer core/height/.initial=1.5}
+\ctikzset{quadpoles/transformer core/core height/.initial=.5}
+\ctikzset{quadpoles/transformer core/core width/.initial=.05}
+\ctikzset{quadpoles/gyrator/inner/.initial=0.4}
+\ctikzset{quadpoles/gyrator/width/.initial=1.5}
+\ctikzset{quadpoles/gyrator/height/.initial=1.5}
+\ctikzset{quadpoles/fourport/width/.initial=1.3}
+\ctikzset{quadpoles/fourport/height/.initial=1.3}
+\ctikzset{quadpoles/coupler/width/.initial=1.3}
+\ctikzset{quadpoles/coupler/height/.initial=1.3}
+\ctikzset{quadpoles/coupler2/width/.initial=1.3}
+\ctikzset{quadpoles/coupler2/height/.initial=1.3}
+
+\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
+
+\ctikzset{quadpoles style/.is choice}
+\ctikzset{quadpoles style/inward/.code={% default value
+ \ctikzset{quadpoles/transformer/inner=0.4}%
+ \ctikzset{quadpoles/transformer/width=1.5}%
+ \ctikzset{quadpoles/transformer core/inner=0.4}%
+ \ctikzset{quadpoles/transformer core/width=1.5}%
+ \ctikzset{quadpoles/gyrator/inner=0.4}%
+ \ctikzset{quadpoles/gyrator/width=1.5}%
+ }%
+}
+\ctikzset{quadpoles style/inline/.code={% now horizontal baffle
+ \ctikzset{quadpoles/transformer/inner=1}%
+ \ctikzset{quadpoles/transformer/width=0.6}%
+ \ctikzset{quadpoles/transformer core/inner=1}%
+ \ctikzset{quadpoles/transformer core/width=0.6}%
+ \ctikzset{quadpoles/gyrator/inner=1} % FIXME
+ \ctikzset{quadpoles/gyrator/width=0.6}%
+ }%
+}
+
+%
+% multipoles
+%
+\ctikzset{multipoles/thickness/.initial=2}
+\ctikzset{multipoles/font/.initial=\pgf@circ@font@tiny}
+% DIP (dual in line package) chips
+\ctikzset{multipoles/dipchip/width/.initial=1.2}
+\ctikzset{multipoles/dipchip/num pins/.initial=8}
+\ctikzset{multipoles/dipchip/pin spacing/.initial=0.4}
+\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/dipchip/num pins=#1}}}
+% QFP (quad flat package) chips
+\ctikzset{multipoles/qfpchip/num pins/.initial=8}
+\ctikzset{multipoles/qfpchip/pin spacing/.initial=0.4}
+\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/qfpchip/num pins=#1}}}
+% chip numbers
+\newif\ifpgf@circuit@chip@shownumbers\pgf@circuit@chip@shownumberstrue
+\pgfkeys{/tikz/show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
+\ctikzset{show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
+\pgfkeys{/tikz/hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
+\ctikzset{hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
+\newif\ifpgf@circuit@chip@straightnumbers\pgf@circuit@chip@straightnumberstrue
+\pgfkeys{/tikz/straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
+\ctikzset{straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
+\pgfkeys{/tikz/rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
+\ctikzset{rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
+% external chip pins
+\ctikzset{multipoles/external pins thickness/.initial=1}
+\ctikzset{multipoles/external pins width/.initial=0.2}
+\ctikzset{multipoles/external pad fraction/.initial=0}
+\pgfkeys{/tikz/external pins width/.add code={}{\ctikzset{multipoles/external pins width=#1}}}
+\pgfkeys{/tikz/external pad fraction/.add code={}{\ctikzset{multipoles/external pad fraction=#1}}}
+% topmarks
+\newif\ifpgf@circuit@chip@topmark\pgf@circuit@chip@topmarktrue
+\pgfkeys{/tikz/topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
+\ctikzset{topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
+\pgfkeys{/tikz/no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
+\ctikzset{no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
+
+% rotary switch by Romano
+\ctikzset{multipoles/rotary/thickness/.initial=1}
+\ctikzset{multipoles/rotary/shape/.initial=ocirc}
+\ctikzset{multipoles/rotary/channels/.initial=5}
+\ctikzset{multipoles/rotary/angle/.initial=60}
+\ctikzset{multipoles/rotary/wiper/.initial=20}
+\ctikzset{multipoles/rotary/arrow/.is choice}
+\newif\ifpgf@circ@rotaryarrow\pgf@circ@rotaryarrowfalse
+\newif\ifpgf@circ@rotaryarrow@cw\pgf@circ@rotaryarrow@cwfalse
+\newif\ifpgf@circ@rotaryarrow@ccw\pgf@circ@rotaryarrow@ccwfalse
+\ctikzset{multipoles/rotary/arrow/none/.code={\pgf@circ@rotaryarrowfalse\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwfalse}}
+\ctikzset{multipoles/rotary/arrow/both/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwtrue}}
+\ctikzset{multipoles/rotary/arrow/cw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwfalse}}
+\ctikzset{multipoles/rotary/arrow/ccw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwtrue}}
+
+\tikzset{%
+ rotary switch/.style args={#1in#2wiper#3}{%
+ shape=rotaryswitch,
+ /tikz/circuitikz/multipoles/rotary/channels=#1,
+ /tikz/circuitikz/multipoles/rotary/angle=#2,
+ /tikz/circuitikz/multipoles/rotary/wiper=#3,
+ },
+ rotary switch -/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=none,
+ },
+ rotary switch <-/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=ccw,
+ },
+ rotary switch ->/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=cw,
+ },
+ rotary switch <->/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=both,
+ },
+ % Notice that these should be the same as the initial values of the keys
+ rotary switch/.default={5 in 60 wiper 20},
+ rotary switch -/.default={5 in 60 wiper 20},
+ rotary switch <-/.default={5 in 60 wiper 20},
+ rotary switch ->/.default={5 in 60 wiper 20},
+ rotary switch <->/.default={5 in 60 wiper 20},
+}
+
+% %Mechanical section
+\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
+\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
+\ctikzset{bipoles/spring/height/.initial=.5}
+\ctikzset{bipoles/spring/width/.initial=.5}
+\ctikzset{bipoles/mass/height/.initial=.55}
+\ctikzset{bipoles/mass/box height/.initial=.4}
+\ctikzset{bipoles/mass/width/.initial=.5}
+
+\ctikzset{bipoles/damper/height/.initial=.35}
+\ctikzset{bipoles/damper/length/.initial=.3}
+\ctikzset{bipoles/damper/width/.initial=.4}
+
+
+\ctikzset{bipole/.is family}
+\ctikzset{bipole/kind/.initial=}
+\ctikzset{bipole/name/.initial=}
+\newif\ifpgf@circuit@bipole@isvoltage
+\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
+\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
+\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
+\newif\ifpgf@circuit@bipole@strokedsymbol
+\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
+\newif\ifpgf@circuit@bipole@iscurrent
+\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
+
+\ctikzset{bipole/voltage/.is family}
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+\newif\ifpgf@circuit@bipole@voltage@below
+\ctikzset{bipole/voltage/position/.is choice}
+\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
+\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
+
+\ctikzset{bipole/voltage/label/unit/.initial=}
+\ctikzset{bipole/voltage/label/name/.initial=}
+
+\ctikzset{bipole/current/.is family}
+\newif\ifpgf@circuit@bipole@current@backward
+\ctikzset{bipole/current/direction/.is choice}
+\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
+\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
+\newif\ifpgf@circuit@bipole@current@before
+\ctikzset{bipole/current/x position/.is choice}
+\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
+\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
+\newif\ifpgf@circuit@bipole@current@below
+\ctikzset{bipole/current/y position/.is choice}
+\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
+\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
+\ctikzset{bipole/current/label/unit/.initial=}
+\ctikzset{bipole/current/label/name/.initial=}
+
+\ctikzset{bipole/flow/.is family}
+\newif\ifpgf@circuit@bipole@flow@backward
+\ctikzset{bipole/flow/direction/.is choice}
+\ctikzset{bipole/flow/direction/forward/.code={\pgf@circuit@bipole@flow@backwardfalse}}
+\ctikzset{bipole/flow/direction/backward/.code={\pgf@circuit@bipole@flow@backwardtrue}}
+\newif\ifpgf@circuit@bipole@flow@before
+\ctikzset{bipole/flow/x position/.is choice}
+\ctikzset{bipole/flow/x position/after/.code={\pgf@circuit@bipole@flow@beforefalse}}
+\ctikzset{bipole/flow/x position/before/.code={\pgf@circuit@bipole@flow@beforetrue}}
+\newif\ifpgf@circuit@bipole@flow@below
+\ctikzset{bipole/flow/y position/.is choice}
+\ctikzset{bipole/flow/y position/above/.code={\pgf@circuit@bipole@flow@belowfalse}}
+\ctikzset{bipole/flow/y position/below/.code={\pgf@circuit@bipole@flow@belowtrue}}
+\ctikzset{bipole/flow/label/unit/.initial=}
+\ctikzset{bipole/flow/label/name/.initial=}
+\ctikzset{flow/distance/.initial = .5}
+\ctikzset{flow/offset/.initial = .2}%distance between flow-arrow and conductor
+
+\ctikzset{bipole/label/.is family}
+\ctikzset{bipole/label/position/.initial=90}
+\ctikzset{bipole/label/unit/.initial=}
+\ctikzset{bipole/label/name/.initial=}
+\ctikzset{bipole/annotation/.is family}
+\ctikzset{bipole/annotation/position/.initial=-90}
+\ctikzset{bipole/annotation/unit/.initial=}
+\ctikzset{bipole/annotation/name/.initial=}
+
+\newif\ifpgf@circuit@europeanresistor
+\ctikzset{resistor/.is choice}
+\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
+\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
+
+\ctikzset{inductor/.is choice}
+\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
+\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
+\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
+
+\newif\ifpgf@circuit@strokediode
+\newif\ifpgf@circuit@fulldiode
+\pgf@circuit@strokediodefalse
+\pgf@circuit@fulldiodefalse
+
+\ctikzset{diode/.is choice}
+\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
+\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
+\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
+
+\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full}}
+\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty}}
+\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke}}
+
+\ctikzset{thickness/.initial=2}
+\ctikzset{color/.initial=black}
+\pgfkeys{/tikz/color/.add code={}{\ctikzset{color={#1}}}}
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circ@siunitx@res
+
+\ctikzset{straight/.is choice}
+\ctikzset{straightvoltage value/.initial=true}
+\ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}}
+\ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}}
+\ctikzset{straightvoltage/.style = {/tikz/circuitikz/straight=true}}
+\newif\ifpgf@circuit@bipole@voltage@straight
+\ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight}
+
+
+\ctikzset{voltage/.is family}
+\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
+\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
+\ctikzset{voltage/bump a/.initial=1.2}
+\ctikzset{voltage/bump b/.initial=1.5}
+\ctikzset{voltage/shift/.initial=0.0} % shift form the cable of voltage symbols
+\ctikzset{voltage shift/.style={voltage/shift=#1}}
+\tikzset{voltage shift/.style={\circuitikzbasekey/voltage/shift=#1}}
+\ctikzset{voltage/european label distance/.initial=1.4}
+\ctikzset{voltage/american label distance/.initial=1.1}
+% shaping the +/- sign, see pgfcircvoltage.tex
+\ctikzset{voltage/american font/.initial={}}
+\ctikzset{voltage/american plus/.initial={$+$}}
+\ctikzset{voltage/american minus/.initial={$-$}}
+
+% special cases
+\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
+\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
+\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
+\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
+\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
+%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
+%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
+
+\ctikzset{current/.is family}
+\ctikzset{current/distance/.initial = .5}
+
+
+\tikzset{american currents/.style = {\circuitikzbasekey/current = american}}
+\tikzset{european currents/.style = {\circuitikzbasekey/current = european}}
+\tikzset{american voltages/.style = {\circuitikzbasekey/voltage = american}}
+\tikzset{european voltages/.style = {\circuitikzbasekey/voltage = european}}
+\tikzset{american resistors/.style = {\circuitikzbasekey/resistor = american}}
+\tikzset{european resistors/.style = {\circuitikzbasekey/resistor = european}}
+
+\newif\ifpgf@circuit@europeangfsurgearrester
+\ctikzset{gas filled surge arrester choice/.is choice}
+\ctikzset{gas filled surge arrester choice/european/.code= {\pgf@circuit@europeangfsurgearrestertrue}}
+\ctikzset{gas filled surge arrester choice/american/.code= {\pgf@circuit@europeangfsurgearresterfalse}}
+
+\tikzset{american gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=american}}
+\tikzset{european gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=european}}
+\tikzset{american inductors/.style = {\circuitikzbasekey/inductor = american}}
+\tikzset{european inductors/.style = {\circuitikzbasekey/inductor = european}}
+\tikzset{cute inductors/.style = {\circuitikzbasekey/inductor = cute}}
+\tikzset{american ports/.style = {\circuitikzbasekey/logic ports = american}}
+\tikzset{european ports/.style = {\circuitikzbasekey/logic ports = european}}
+\tikzset{european/.style = {european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester set}}
+\tikzset{american/.style = {american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester set}}
+\tikzset{cute/.style = {european currents, european voltages, american resistors, cute inductors, american ports}}
+
+% I should try to make the tree clearer (this voltage conflicts with the options above)
+
+\newif\ifpgf@circuit@europeanvoltage
+\ctikzset{voltage/.is choice}
+\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse}}
+\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue}}
+
+\newif\ifpgf@circuit@europeancurrent
+\ctikzset{current/.is choice}
+\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse}
+\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue}
+
+% noise sources
+\ctikzset{bipoles/noise sources/fillcolor/.initial=gray!50}
+
+\ctikzset{label/align/.is choice}
+\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
+\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
+\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
+
+% seven segment displays by RGtti
+
+\newif\ifpgf@circ@sevenseg@dot
+\newif\ifpgf@circ@sevenseg@box
+\def\pgf@circ@sevenseg@dotstate{empty}
+\ctikzset{seven seg/.is family}
+\ctikzset{seven seg/dot/.is choice}
+% none means no dot, not space for it. Empty means no dot, but space
+\ctikzset{seven seg/dot/none/.code={\pgf@circ@sevenseg@dotfalse}}
+\ctikzset{seven seg/dot/empty/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{empty}}}
+\ctikzset{seven seg/dot/off/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{off}}}
+\ctikzset{seven seg/dot/on/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{on}}}
+%
+\ctikzset{seven seg/width/.initial=0.4}% relative to \pgf@circ@Rlen
+\ctikzset{seven seg/thickness/.initial=4pt}% segment thickness
+\ctikzset{seven seg/segment sep/.initial=0.2pt}% gap between segments
+\ctikzset{seven seg/box sep/.initial=1pt}% external box gap
+\ctikzset{seven seg/color on/.initial=red}% color for segment "on"
+\ctikzset{seven seg/color off/.initial=gray!20!white} % ...and "off"
+\ctikzset{seven seg/box/.is choice}
+\ctikzset{seven seg/box/off/.code={\pgf@circ@sevenseg@boxfalse}}
+\ctikzset{seven seg/box/on/.code={\pgf@circ@sevenseg@boxtrue}}
+
+\ctikzset{seven seg/bits/.initial=0000000}
+
+\ctikzset{seven seg/value/.code={%
+ \edef\@@tmp{#1}%
+ \edef\@@n{0} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111110}\fi
+ \edef\@@n{1} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110000}\fi
+ \edef\@@n{2} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1101101}\fi
+ \edef\@@n{3} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111001}\fi
+ \edef\@@n{4} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110011}\fi
+ \edef\@@n{5} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011011}\fi
+ \edef\@@n{6} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011111}\fi
+ \edef\@@n{7} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110000}\fi
+ \edef\@@n{8} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111111}\fi
+ \edef\@@n{9} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111011}\fi
+ \edef\@@n{10}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
+ \edef\@@n{11}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
+ \edef\@@n{12}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
+ \edef\@@n{13}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
+ \edef\@@n{14}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
+ \edef\@@n{15}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
+ \edef\@@n{A} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
+ \edef\@@n{B} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
+ \edef\@@n{C} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
+ \edef\@@n{D} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
+ \edef\@@n{E} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
+ \edef\@@n{F} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
+ \edef\@@n{a} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
+ \edef\@@n{b} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
+ \edef\@@n{c} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
+ \edef\@@n{d} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
+ \edef\@@n{e} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
+ \edef\@@n{f} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
+ \edef\@@n{-} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0000001}\fi
+}}
+
+\tikzset{%
+ seven segment val/.style args={#1dot#2box#3}{%
+ shape=bare7seg,
+ /tikz/circuitikz/seven seg/value=#1,
+ /tikz/circuitikz/seven seg/dot=#2,
+ /tikz/circuitikz/seven seg/box=#3,
+ },
+ seven segment bits/.style args={#1dot#2box#3}{%
+ shape=bare7seg,
+ /tikz/circuitikz/seven seg/bits=#1,
+ /tikz/circuitikz/seven seg/dot=#2,
+ /tikz/circuitikz/seven seg/box=#3,
+ },
+}
+
+
+%%%%%%%%%% new
+\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
+
+% Electronic tubes: diodetube, triode, tetrode and pentode
+\ctikzset{tubes/width/.initial=1} % relative width
+\ctikzset{tubes/height/.initial=1.4} % relative height
+\ctikzset{tubes/tube radius/.initial=0.40} % radius of tube circle
+\ctikzset{tubes/anode distance/.initial=0.40} % distance from center
+\ctikzset{tubes/anode width/.initial=0.40} % width of an anode/plate
+\ctikzset{tubes/grid protrusion/.initial=0.25} % distance from center
+\ctikzset{tubes/grid dashes/.initial=5} % number of grid dashes
+\ctikzset{tubes/grid separation/.initial=0.2} % separation between grids
+\ctikzset{tubes/grid shift/.initial=0.0} % y shift grids from center
+\ctikzset{tubes/cathode distance/.initial=0.40} % distance from grid
+\ctikzset{tubes/cathode width/.initial=0.40} % width of an cathode
+\ctikzset{tubes/cathode corners/.initial=0.06} % corners of the cathode wire
+\ctikzset{tubes/cathode right extend/.initial=0.075} % extension at the right side
+\ctikzset{tubes/filament distance/.initial=0.1} % distance from cathode
+\ctikzset{tubes/filament angle/.initial=15} % Angle from centerpoint
+
+\newif\ifpgf@circuit@tubes@filament\pgf@circuit@tubes@filamentfalse
+\pgfkeys{/tikz/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
+\ctikzset{tubes/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
+\newif\ifpgf@circuit@tubes@nocathode\pgf@circuit@tubes@nocathodefalse
+\pgfkeys{/tikz/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
+\ctikzset{tubes/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
+\newif\ifpgf@circuit@tubes@fullcathode\pgf@circuit@tubes@fullcathodefalse
+\pgfkeys{/tikz/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
+\ctikzset{tubes/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
+
+%%%---------- close: tex/pgfcirc.defines
+%%%%%%%%%%% Springe nach tex/pgfcircutils
+%%%---------- open: tex/pgfcircutils.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+\def\pgf@circ@handleSI#1{
+ \noexpandarg
+ \def\pgf@temp{}
+ \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
+ \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
+
+ \ifnum\pgf@circ@handleSI@unit@len=0
+ \pgf@circ@siunitx@resfalse
+ \else
+ \IfEndWith{#1}{>}{
+ \pgf@circ@siunitx@restrue
+ \noexpandarg
+ \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
+ %\typeout{si |#1|}
+ }{
+ \pgf@circ@siunitx@resfalse
+ %\typeout{no si |#1|}
+ }
+\fi
+}
+
+\def\pgf@circ@ifkeyempty#1{
+ \pgfextra{
+ \ctikzset{#1/.get=\pgf@circ@temp}
+ \edef\pgf@temp{}
+ }
+ \ifx\pgf@circ@temp\pgf@temp
+ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Math routines
+
+\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% useful commands
+
+\ifpgfutil@format@is@latex
+ %% flipping text
+ \def\ctikzflipx#1{\scalebox{-1}[1]{#1}}
+ \def\ctikzflipy#1{\scalebox{1}[-1]{#1}}
+ \def\ctikzflipxy#1{\scalebox{-1}[-1]{#1}}
+ % text mode overbar
+ % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
+ \def\ctikztextnot#1{$\overline{\hbox{#1}}\m@th$}
+\else\ifpgfutil@format@is@plain
+ % text mode overbar
+ % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
+ \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
+\else\ifpgfutil@format@is@context
+ % text mode overbar
+ % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
+ \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
+\fi\fi\fi
+
+
+%%%---------- close: tex/pgfcircutils
+
+%%%%%%%%%%% Springe nach tex/pgfcircshapes
+%%%---------- open: tex/pgfcircshapes.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Other shapes
+
+%% Nothing
+
+\pgfdeclareshape{emptyshape}{
+ \savedanchor{\northeast}{%
+ \pgf@x=.5\wd\pgfnodeparttextbox%
+ \pgf@y=.5\ht\pgfnodeparttextbox%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+}
+%
+% Provision for changing opacity. Only expert use, see the manual.
+%
+\ctikzset{poles/open fill opacity/.initial=1.0}% better not touch it
+\tikzset{open poles opacity/.code={%
+ \ctikzset{poles/open fill opacity=#1}%
+}}
+\ctikzset{poles/full fill opacity/.initial=1.0}% better not touch it
+\tikzset{full poles opacity/.code={%
+ \ctikzset{poles/full fill opacity=#1}%
+}}
+
+%% Full terminal
+
+\pgfdeclareshape{circ}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Empty round terminal
+
+\pgfdeclareshape{ocirc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
+ }
+
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{white}
+ % ...but override it if the class is defined!
+ % note that this element has no class, but will inherit it when used
+ % into another component
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Diamond terminal
+
+\pgfdeclareshape{diamondpole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
+ \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
+ \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
+ \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
+ % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
+ \pgfpointintersectionoflines
+ {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
+ % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgf@x=\@@switchx\pgf@x
+ \pgf@y=\@@switchy\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgftransformrotate{45}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% Diamond terminal, unfilled
+
+\pgfdeclareshape{odiamondpole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
+ \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
+ \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
+ \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
+ % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
+ \pgfpointintersectionoflines
+ {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
+ % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgf@x=\@@switchx\pgf@x
+ \pgf@y=\@@switchy\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgftransformrotate{45}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{white}
+ % ...but override it if the class is defined!
+ % note that this element has no class, but will inherit it when used
+ % into another component
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% square terminal, filled
+
+\pgfdeclareshape{squarepole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpointborderrectangle
+ {\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+%% square terminal, unfilled
+
+\pgfdeclareshape{osquarepole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpointborderrectangle
+ {\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{white}
+ % ...but override it if the class is defined!
+ % note that this element has no class, but will inherit it when used
+ % into another component
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+% BNC connector
+
+\pgfdeclareshape{bnc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ % BNC size is 2.5 times the size of the internal "ocirc"
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgf@y=2.5\pgf@y
+ \pgf@x=-\pgf@y
+ }
+ % center is on the opening
+ \anchor{center}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{zero}{ \pgfpointorigin }
+ \anchor{hot}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{shield}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ % geo-anchors
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{right}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{left}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
+ }
+ \behindforegroundpath{
+ \pgfextracty{\pgf@circ@res@other}{\northwest}
+ \pgf@circ@res@step=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgfsetcolor{\ctikzvalof{color}}
+ % external circle
+ \pgfscope
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{-2\pgf@circ@res@other}{-2\pgf@circ@res@other}}
+ {\pgfpoint{2\pgf@circ@res@other}{2\pgf@circ@res@other}}
+ % next the opening to the right
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ {\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@step}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@other}
+ \pgfusepath{draw}
+ \endpgfscope
+ % internal circle
+ \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@step}
+ \pgf@circ@draworfill
+ % and the contact line to the right
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+%% Fill for correct rectangular joins
+
+\pgfdeclareshape{rectjoinfill}{
+ \savedanchor{\northeast}{%
+ \pgf@x=.5\pgflinewidth%
+ \pgf@y=.5\pgflinewidth%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfpathrectanglecorners
+ {\pgfpoint{0}{.5\pgflinewidth}}
+ {\pgfpoint{0}{-.5\pgflinewidth}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% transistor arrow
+
+\def\pgf@circ@find@linescale{
+ % find the scale inverse of the scale factor: line width do not scale
+ % with scale=..., transform shape so we have to counteract it.
+ \iftikz@fullytransformed % this is true if `transform shape` is active
+ % from @Circumscribe https://tex.stackexchange.com/a/474035/38080
+ % Note that this trick is not working inside a `spy` environment...
+ \pgfgettransformentries{\scaleA}{\scaleB}{\scaleC}{\scaleD}{\whatevs}{\whatevs}%
+ \pgfmathsetmacro{\@@factor}{1.0/sqrt(abs(\scaleA*\scaleD-\scaleB*\scaleC))}%
+ \else
+ \pgfmathsetmacro{\@@factor}{1.0}
+ \fi
+}
+
+\pgfdeclareshape{trarrow}{%
+ % this arrow is only filled but grows with the linewidth, more or less
+ % like currarrow do
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \pgf@circ@find@linescale
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgfpoint{0.7*\pgf@circ@res@step +0.5*\@@factor*\pgflinewidth}
+ {0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
+ }
+ % The arrow size should be more or less the same of a currarrow, which is
+ % both filled and stroke, for backward output compatibility (more or less)
+ %
+ % angle \beta W is \pgf@circ@Rlen/\ctikzvalof{current arrow scale}
+ % |-\__ currarrow as the tip at (W,0)
+ % | | and the upper tail at (-0.7*W, 0.8*W)
+ % | \__ it then "overshoot" do to the linew width L
+ % | \__ xangle \alpha
+ % ---0------->
+ %
+ % \beta = atan(0.7/0.8) \alpha=atan(0.8/1.7)
+ % tip overshoot is (L/2)/sin(\alpha) = 1.743*L only in x direction
+ % tail overshoot is -(L/2) in x, and (L/2)/sin(\beta) = 0.7539*L in y
+ %
+ \savedanchor{\northwest}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@circ@find@linescale
+ \pgfpoint{-0.7*\pgf@circ@res@step -0.5*\@@factor*\pgflinewidth}
+ {0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
+ }
+ \savedanchor{\tip}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@circ@find@linescale
+ \pgfpoint{\pgf@circ@res@step + 1.743*\@@factor*\pgflinewidth}{0pt}
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \tip
+ }
+ \anchor{btip}{% this anchor is behind the tip of half a linewidth
+ \tip
+ \pgf@circ@find@linescale
+ \pgf@circ@res@temp=\@@factor\pgflinewidth
+ \advance\pgf@x by -.5\pgf@circ@res@temp
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \northwest
+ \pgf@circ@res@up=\pgf@y
+ \pgf@circ@res@left=\pgf@x
+ \tip
+ \pgf@circ@res@step = \pgf@x
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{fill} % just fill
+ \endpgfscope
+ }
+}
+
+%% Current arrow
+
+\pgfdeclareshape{currarrow}{
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@x=.5\pgf@circ@res@step
+ \pgf@y=\pgf@x%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \pgfpointorigin
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@x =\pgf@circ@res@step
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+
+ \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{draw,fill}
+
+ \endpgfscope
+ }
+}
+
+%% Flow arrow
+
+\pgfdeclareshape{flowarrow}{
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@y=.5\pgf@circ@res@step
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 4
+ \pgf@x=\pgf@circ@res@step%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{text}{% text centered above
+ \pgfpointorigin
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox}
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \pgfpointorigin
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@x =\pgf@circ@res@step
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 4
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{draw}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfnode{currarrow}{tip}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+ }
+}
+
+%% Input arrow
+
+\pgfdeclareshape{inputarrow}{
+ \savedanchor{\northeast}{% this is really not northeast, really -northwest
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@y=.5\pgf@circ@res@step
+ \pgf@x=1.7\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax\pgf@x=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast\pgf@x=0cm\relax}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@x=0cm\relax}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \savedanchor{\tip}{
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \tip
+ }
+ \anchor{tip}{
+ \tip
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 16
+
+ \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{fill}
+
+ \endpgfscope
+ }
+}
+
+
+%% box
+
+\pgfdeclareshape{box}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@circ@res@step = 0.5\pgf@circ@res@step
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+%% box scaled with blocks
+
+\pgfdeclareshape{blockbox}{
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{blocks/scale}\pgf@circ@Rlen}}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{blocks/scale}\pgf@circ@Rlen}
+ \pgfscope
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@step = 0.5\pgf@circ@res@step
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+% full nodes for wire crossing
+
+\pgfdeclareshape{jump crossing}
+{
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \behindbackgroundpath{
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ % horizontal jumper
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
+ \pgfsetbeveljoin
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % vertical, broken path
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+\pgfdeclareshape{plain crossing}
+{
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \behindbackgroundpath{
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ % horizontal jumper
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % vertical, broken path
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.1\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.1\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+
+%%%---------- close: tex/pgfcircshapes
+%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
+%%%---------- open: tex/pgfcircmonopoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Monopoles
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%
+%% Grounds
+%%%%%%%%%%%%%
+
+
+%% Ground symbol
+% #1 -> name
+% #2 -> width
+% #3 -> depth
+% #4 -> code
+\long\def\pgf@circ@declareground#1#2#3#4{
+ \pgfdeclareshape{#1}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{grounds}} % class of these components
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\southeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
+ \pgf@x=#2\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
+ \pgf@y=-#3\pgf@y
+ }
+ \anchor{north}{\pgfpointorigin}
+ \anchor{north east}{\southeast\pgf@y=0pt\relax}
+ \anchor{east}{\southeast\pgf@y=.5\pgf@y}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\southeast\pgf@y=.5\pgf@y\pgf@x=-\pgf@x}
+ \anchor{north west}{\southeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ \anchor{center}{\pgfpointorigin}
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ #4
+ \endpgfscope
+ }
+ }
+}
+
+
+\pgf@circ@declareground{ground}{0.6}{1.6}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+\pgf@circ@declareground{tlground}{0.6}{0.4}{
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+
+\pgf@circ@declareground{rground}{0.6}{1}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{monopoles/rground}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+\pgf@circ@declareground{tground}{0.6}{0}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+}
+
+\pgf@circ@declareground{sground}{0.6}{1.8}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+}
+
+% noiseless ground
+\pgf@circ@declareground{nground}{0.9}{1.6}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.9\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpatharc{0}{180}{0.9\pgf@circ@res@step}
+ \pgfusepath{draw}
+}
+
+% protective ground
+\pgf@circ@declareground{pground}{0.9}{1.8}{
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0pt}{-0.9\pgf@circ@res@step}}{0.9\pgf@circ@res@step}
+ \pgf@circ@draworfill
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+% chassis ground
+\pgf@circ@declareground{cground}{1}{2}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-1.00\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{ 0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{ 0.50\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.25\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+% Contributed by @fotesan https://github.com/fotesan
+% european ground
+\pgf@circ@declareground{eground}{1.1}{1.7}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.1\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+\pgf@circ@declareground{eground2}{1.1}{1.7}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.45\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%%%%%%
+%% Power supplies
+%%%%%%%%%%%%%%%%%%
+
+% Vcc
+\pgfdeclareshape{vcc}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{power supplies}} % class of these components
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \saveddimen{\scaledwidth}{% thanks to @Schrรถdinger's cat on https://tex.stackexchange.com/a/506249/38080
+ \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\gscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
+ \pgfmathsetlength{\pgf@x}{(\ctikzvalof{\ctikzclass/scale}*\gscale*\ctikzvalof{monopoles/vcc/width})*\pgf@circ@Rlen}%
+ }
+ \savedanchor{\northeast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@circ@res@step
+ \pgf@y=3\pgf@x%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{center}{\pgfpointorigin}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ \anchor{text}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=2\pgf@circ@res@step
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \edef\pgf@circ@temp{\ctikzvalof{monopoles/vcc/arrow}}\edef\pgf@temp{legacy}
+ \ifx\pgf@temp\pgf@circ@temp
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \else
+ \pgfsetarrowsend{\pgf@circ@temp}
+ \fi
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% Vee
+\pgfdeclareshape{vee}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{power supplies}} % class of these components
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \saveddimen{\scaledwidth}{% thanks to @Schrรถdinger's cat on https://tex.stackexchange.com/a/506249/38080
+ \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\gscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
+ \pgfmathsetlength{\pgf@x}{(\ctikzvalof{\ctikzclass/scale}*\gscale*\ctikzvalof{monopoles/vcc/width})*\pgf@circ@Rlen}%
+ }
+ \savedanchor{\northeast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@circ@res@step
+ \pgf@y=-3\pgf@x%
+ }
+ \anchor{south}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
+ \anchor{north}{\pgfpointorigin}
+ \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast}
+ \anchor{south west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast\pgf@y=0pt\relax}
+ \anchor{north west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{center}{\pgfpointorigin}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ \anchor{text}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=-2\pgf@circ@res@step
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \edef\pgf@circ@temp{\ctikzvalof{monopoles/vee/arrow}}\edef\pgf@temp{legacy}
+ \ifx\pgf@temp\pgf@circ@temp
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \else
+ \pgfsetarrowsend{\pgf@circ@temp}
+ \fi
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+%%%%%%%%%%%%%%%%
+%% RF elements
+%%%%%%%%%%%%%%%%
+
+% Legacy tlinestub
+% Contributed by Leonardo Azzinnari
+\pgfdeclareshape{tlinestub}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\northeast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
+ \pgf@x=1.2\pgf@circ@res@step
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
+ \pgf@y=.2\pgf@circ@res@step%
+ }
+ % the center is on the left side of the shape for facility of usage
+ \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0.5\pgf@x\relax}
+ \anchor{west}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=0cm\relax}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@x=0cm\pgf@y=-\pgf@y}
+ \anchor{center}{\pgfpointorigin}
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
+ \pgf@circ@res@step=0.6\pgf@circ@scaled@Rlen
+
+ \pgfscope\begin{pgftransparencygroup}
+ \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgf@circ@maybefill
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \end{pgftransparencygroup} \endpgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ }
+}
+
+%% New antennas without tails
+
+% main body of antennas
+\def\pgf@circ@antennabody{%
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{2\pgf@circ@res@step}}
+ \pgfsetbeveljoin
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+% Waves for the antennas.
+\def\pgf@circ@antennawaves{%
+ \pgfscope
+ % define a triangle for clipping the waves
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfusepath{clip}
+ % ...and build the waves as clipped circles
+ \pgf@circ@count@a=8\pgf@circ@res@other=0.5\pgf@circ@res@step
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>2
+ \pgfpathcircle{\pgfpoint{0pt}{\pgf@circ@res@step}}{\the\pgf@circ@count@a*\pgf@circ@res@other}
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% additional shape with the waves
+\pgfdeclareshape{waves}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0pt}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
+ \anchor{bottom}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{north east}{\northeast}
+ \anchor{east}{\northeast\pgf@y=0pt}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@step=0.5\pgf@circ@res@step
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfscope
+ % define a triangle for clipping the waves
+ \pgfpathmoveto{\pgfpoint{-2\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfusepath{clip}
+ % ...and build the waves as clipped circles
+ \c@pgf@counta=8\pgf@circ@res@other=0.5\pgf@circ@res@step
+ \pgfmathloop%
+ \ifnum\c@pgf@counta>1
+ \pgfpathcircle{\pgfpoint{-2\pgf@circ@res@step}{0pt}}{\the\c@pgf@counta*\pgf@circ@res@other}
+ \advance\c@pgf@counta-1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% the three types of antennas: simple, TX, RX. Notice that you can flip them...
+
+\pgfdeclareshape{bareantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=2\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{bottom}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@antennabody
+ }
+}
+
+\pgfdeclareshape{bareTXantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=2\pgf@circ@res@step
+ }
+ \savedanchor{\savedwaves}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=4.2\pgf@circ@res@step
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
+ \pgf@x=\dimexpr-\pgf@x-\wd\pgfnodeparttextbox\relax
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{waves}{\savedwaves}
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{bottom}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@antennabody
+ \pgf@circ@antennawaves
+ }
+}
+
+\pgfdeclareshape{bareRXantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=2\pgf@circ@res@step
+ }
+ \savedanchor{\savedwaves}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-4.2\pgf@circ@res@step
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{waves}{\savedwaves}
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{bottom}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@antennabody
+ \pgftransformxshift{-5.2\pgf@circ@res@step}
+ \pgf@circ@antennawaves
+ }
+}
+
+% Microstrip monopoles
+
+\pgfdeclareshape{mslstub}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\southeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
+ \pgf@y=-.5\pgf@y
+ }
+ \savedanchor{\northwest}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{east}{\southeast\pgf@y=0pt\relax}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+ \anchor{north west}{\northwest}
+ %
+ \anchor{center}{\northwest\pgf@y=0pt\relax}
+ \anchor{left}{\northwest\pgf@y=0pt\relax}
+ \anchor{right}{\southeast\pgf@y=0pt\relax}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ \behindbackgroundpath{
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@right}{\southeast}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@down}{\southeast}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{msrstub}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\southeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt\relax
+ }
+ \savedanchor{\northwest}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/msrstub/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{east}{\southeast\pgf@y=0pt\relax}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+ \anchor{north west}{\northwest}
+ %
+ \anchor{center}{\pgfpointorigin}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ \behindbackgroundpath{
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@right}{\southeast}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@down}{\southeast}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointpolar{135}{\pgf@circ@res@step}}
+ \pgfpatharc{135}{45}{\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpointpolar{45}{\pgf@circ@res@up}}
+ \pgfpatharc{45}{135}{\pgf@circ@res@up}
+ \pgfclosepath
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{msport}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\southeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
+ \pgf@y=-.5\pgf@y
+ }
+ \savedanchor{\northwest}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{east}{\southeast\pgf@y=0pt\relax}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+ \anchor{north west}{\northwest}
+ %
+ \anchor{center}{\northwest\pgf@y=0pt\relax}
+ \anchor{left}{\northwest\pgf@y=0pt\relax}
+ \anchor{right}{\southeast\pgf@y=0pt\relax}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr-.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ }
+ \behindbackgroundpath{
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@right}{\southeast}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@down}{\southeast}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.5*\pgf@circ@res@up}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+% Legacy antennas (with tails)
+\def\pgf@circ@shift@antenna@xy#1#2{%
+ \pgf@y=\dimexpr\pgf@y+#2\pgf@circ@res@step
+ \pgf@x=\dimexpr\pgf@x+#1\pgf@circ@res@step
+\relax}
+
+% Legacy antenna
+\pgfdeclareshape{antenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=4\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{2}}
+ \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{0}{3}\relax}
+ \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{4}\relax}
+ \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{3}}
+ \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
+ \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
+ \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{0}{4}}
+ \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{4}}
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
+
+ \pgftransformxshift{ -4\pgf@circ@res@step }
+
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+% Legacy TX antenna
+\pgfdeclareshape{txantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=4\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
+ \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
+ \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
+ \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
+ \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{4}{2}}
+ \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
+ \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
+ \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
+ % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+% Legacy RX antenna
+\pgfdeclareshape{rxantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=4\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
+ \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
+ \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
+ \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
+ \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{4}{2}}
+ \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
+ \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
+ \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
+ % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ }
+}
+
+% Legacy match
+\pgfdeclareshape{match}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\northeast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@scaled@Rlen
+ \pgf@x=2\pgf@circ@res@step
+ \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@circ@res@step%
+ }
+ % the center is on the left side of the shape for facility of usage
+ \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=0pt\pgf@x=0.5\pgf@x\relax}
+ \anchor{west}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=0cm\relax}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\pgfpointorigin}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@scaled@Rlen
+ \pgf@x=1.5\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \pgf@y=-1.5\ht\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@scaled@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
+ \pgfusepath{fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \endpgfscope
+ }
+}
+
+%%%---------- close: tex/pgfcircmonopoles
+%%%%%%%%%%% Springe nach tex/pgfcircbipoles
+%%%---------- open: tex/pgfcircbipoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%% Generic macro for defining a bipole shape
+% #1 - additional anchors
+% #2 - lower y-size of the bipole (from the center).
+% #3 - #shape is the name of the shape
+% #4 - upper y-size of the bipole (from the center)
+% #5 - width of the bipole
+% #6 - macros drawing the bipole
+%
+\long\def\pgfcircdeclarebipole{%
+ \pgfcircdeclarebipolescaled{default}}
+
+%% Generic macro for defining a bipole shape
+% #1 - scale factor
+% #2 - additional anchors
+% #3 - lower y-size of the bipole (from the center).
+% #4 - #shape is the name of the shape
+% #5 - upper y-size of the bipole (from the center)
+% #6 - width of the bipole
+% #7 - macros drawing the bipole
+%
+\long\def\pgfcircdeclarebipolescaled#1#2#3#4#5#6#7{
+ \pgfdeclareshape{#4shape}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{#1}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\northeast}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@y=#5\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=#6\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\northeastborder}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@y=#5\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=#6\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwestborder}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@y=-#3\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=-#6\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwest}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@y=-#3\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-#6\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\centerpoint}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@circ@res@down=-#3\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up=#5\pgf@circ@scaled@Rlen
+ \pgfpointorigin
+ \pgf@y=\pgf@circ@res@up
+ \advance\pgf@y by\pgf@circ@res@down
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{n}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{north east}{
+ \northeast
+ }
+ \anchor{north west}{
+ \northeast
+ \pgf@x=-\pgf@x
+ }
+ \anchor{ne}{
+ \northeast
+ }
+ \anchor{nw}{
+ \northeast
+ \pgf@x=-\pgf@x
+ }
+ \anchor{e}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{s}{
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{south east}{
+ \southwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \southwest
+ }
+ \anchor{se}{
+ \southwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{sw}{
+ \southwest
+ }
+ \anchor{w}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{east}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{south}{
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{west}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{right}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{above}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{left}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{below}{
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{a}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{b}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \savedanchor{\textanchor}{%
+ \pgf@y=\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \anchor{text}{
+ \textanchor
+ }
+ \anchorborder{%
+ \ifpgf@circuit@bipole@inverted
+ \pgf@circ@res@left=-\pgf@x
+ \pgf@circ@res@right=-\pgf@y
+ \else
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@right=\pgf@y
+ \fi
+ \ifdim\pgf@circ@res@right>0cm
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
+ \else
+ \southwestborder
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
+ \fi
+ }
+
+ #2
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@zero = 0cm
+ \pgf@circ@res@left = -\pgf@x
+ \pgf@circ@res@right = \pgf@x
+ \southwest
+ \pgf@circ@res@down = \pgf@y
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ #7
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ }
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Standard bipole shapes declarations
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+% Resistive components
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Short circuit
+
+%%% NOTICE that the short is really NOT drawn; we trust the fact that its
+%%% natural length is zero.
+\pgfcircdeclarebipole
+{}
+{0}
+{short}
+{0}
+{0}
+{ }
+
+%% Open circuit
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/open/height}}
+{open}
+{\ctikzvalof{bipoles/open/height}}
+{\ctikzvalof{bipoles/open/width}}
+{ }
+
+% multiwire(s)
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/multiwire/height}}
+{multiwire}
+{\ctikzvalof{bipoles/multiwire/height}}
+{\ctikzvalof{bipoles/multiwire/width}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/multiwire/height}}
+{bmultiwire}
+{\ctikzvalof{bipoles/multiwire/height}}
+{\ctikzvalof{bipoles/multiwire/width}}
+{
+ \pgf@circ@res@other=\ctikzvalof{bipoles/multiwire/spacing}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+}
+%% Generic bipole - used as resistor by some (bleah)
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/generic/height}}
+{generic}
+{\ctikzvalof{bipoles/generic/height}}
+{\ctikzvalof{bipoles/generic/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+%% Generic empty tunable
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/tgeneric/height}}
+{tgeneric}
+{\ctikzvalof{bipoles/tgeneric/height}}
+{\ctikzvalof{bipoles/tgeneric/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Generic asymmetric bipole
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/ageneric/height}}
+{ageneric}
+{\ctikzvalof{bipoles/ageneric/height}}
+{\ctikzvalof{bipoles/ageneric/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+%% Memristor
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/memristor/height}}
+{memristor}
+{\ctikzvalof{bipoles/memristor/height}}
+{\ctikzvalof{bipoles/memristor/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+%% Photoresistor
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/photoresistor/height 2}}
+{photoresistor}
+{\ctikzvalof{bipoles/photoresistor/height}}
+{\ctikzvalof{bipoles/photoresistor/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Thermistor
+\pgfcircdeclarebipolescaled{resistors}
+{{% anchor for labelling the type of dependency
+ \anchor{label}{%
+ \southwest
+ \pgf@x=0.4\pgf@x
+ \pgf@y=1.2\pgf@y
+ }%
+}}
+{\ctikzvalof{bipoles/thermistor/height}}
+{thermistor}
+{\ctikzvalof{bipoles/thermistor/height}}
+{\ctikzvalof{bipoles/thermistor/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ %\pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ %\endpgfscope
+}
+
+%% Thermistor PTC
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/thermistorptc/height 2}}
+{thermistorptc}
+{\ctikzvalof{bipoles/thermistorptc/height}}
+{\ctikzvalof{bipoles/thermistorptc/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Thermistor NTC
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/thermistorntc/height 2}}
+{thermistorntc}
+{\ctikzvalof{bipoles/thermistorntc/height}}
+{\ctikzvalof{bipoles/thermistorntc/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Generic tunable
+\pgfcircdeclarebipolescaled{resistors}
+{
+ \savedanchor{\wiper}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@ya=\ctikzvalof{bipoles/generic potentiometer/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@ya
+ \pgf@xa=\ctikzvalof{bipoles/generic potentiometer/width}\pgf@circ@scaled@Rlen
+ \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/generic potentiometer/wiper pos}-0.5)*\pgf@xa}
+ }
+ \anchor{wiper}{\wiper}
+ \anchor{W}{\wiper}
+}
+{\ctikzvalof{bipoles/generic potentiometer/height 2}}
+{genericpotentiometer}
+{\ctikzvalof{bipoles/generic potentiometer/height}}
+{\ctikzvalof{bipoles/generic potentiometer/width}}
+{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \pgfextractx{\pgf@circ@res@other}{\wiper}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Zig zag resistores
+\def\pgf@circ@zigzag#1{%
+ \divide \pgf@circ@res@step by \numexpr4*\zigs\relax
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \pgf@circ@count@a=\zigs\relax
+ % first half zig
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}}
+ \pgfmathloop%
+ \advance\pgf@circ@count@a by -1\relax% Loop zigs -1 times
+ \ifnum\pgf@circ@count@a>0
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}}
+ \repeatpgfmathloop%
+ % last zig and a half
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+}
+
+%% Resistor
+\pgfcircdeclarebipolescaled{resistors}
+{
+\savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
+}
+{\ctikzvalof{bipoles/resistor/height}}
+{resistor}
+{\ctikzvalof{bipoles/resistor/height}}
+{\ctikzvalof{bipoles/resistor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgf@circ@zigzag{1}
+}
+
+
+%% Variable resistor
+\pgfcircdeclarebipolescaled{resistors}
+{
+\savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
+}
+{\ctikzvalof{bipoles/vresistor/height}}
+{vresistor}
+{\ctikzvalof{bipoles/vresistor/height}}
+{\ctikzvalof{bipoles/vresistor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/vresistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgf@circ@zigzag{.5}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Potentiometer
+\pgfcircdeclarebipolescaled{resistors}
+{
+ \savedanchor{\wiper}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@ya=\ctikzvalof{bipoles/potentiometer/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@ya
+ \pgf@xa=\ctikzvalof{bipoles/potentiometer/width}\pgf@circ@scaled@Rlen
+ \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/potentiometer/wiper pos}-0.5)*\pgf@xa}
+ }
+ \anchor{wiper}{\wiper}
+ \anchor{W}{\wiper}
+ \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
+}
+{\ctikzvalof{bipoles/potentiometer/height 2}}
+{potentiometer}
+{\ctikzvalof{bipoles/potentiometer/height}}
+{\ctikzvalof{bipoles/potentiometer/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/potentiometer/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgf@circ@zigzag{1}
+
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \pgfextractx{\pgf@circ@res@other}{\wiper}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Resistive sensor
+\pgfcircdeclarebipolescaled{resistors}
+{% anchor for labelling the type of dependency
+ \anchor{label}{\southwest\pgf@x=0.4\pgf@x}%
+ \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
+}
+{\ctikzvalof{bipoles/resistivesens/height}}
+{resistivesens}
+{\ctikzvalof{bipoles/resistivesens/height}}
+{\ctikzvalof{bipoles/resistivesens/width}}
+{%
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistivesens/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgf@circ@zigzag{.5}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-.9\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%%%%%%%%%%%%%%
+%% Capacitors
+%%%%%%%%%%%%%
+
+%% Plain Capacitor
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/capacitor/height}}
+{capacitor}
+{\ctikzvalof{bipoles/capacitor/height}}
+{\ctikzvalof{bipoles/capacitor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+}
+
+%% Capacitive sensor
+\pgfcircdeclarebipolescaled{capacitors}
+{
+ \anchor{label}{\southwest\pgf@x=2.6\pgf@x\pgf@y=1.2\pgf@y}%
+}
+{\ctikzvalof{bipoles/capacitor/height}}
+{capacitivesens}
+{\ctikzvalof{bipoles/capacitor/height}}
+{\ctikzvalof{bipoles/capacitor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{2.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-2.6\pgf@circ@res@right}{1.2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-4.4\pgf@circ@res@right}{1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Polar Capacitor (DEPRECATED)
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/pcapacitor/height}}
+{polarcapacitor}
+{\ctikzvalof{bipoles/pcapacitor/height}}
+{\ctikzvalof{bipoles/pcapacitor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgftransformrotate{-90}
+ \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+%% Curved capacitor
+% see https://tex.stackexchange.com/questions/509594/polar-capacitor-orientation-in-circuitikz-seems-wrong
+% for a rationale
+%
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/ccapacitor/height}}
+{ccapacitor}
+{\ctikzvalof{bipoles/ccapacitor/height}}
+{\ctikzvalof{bipoles/ccapacitor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+ \ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgftransformrotate{-90}
+ \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}}
+ \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Electrolytic Capacitor
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/ecapacitor/height}}
+{ecapacitor}
+{\ctikzvalof{bipoles/ecapacitor/height}}
+{\ctikzvalof{bipoles/ecapacitor/width}}
+{
+ \pgfsetrectcap
+ % % % Draw plus pole
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ % % Draw minus pole
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{\ctikzvalof{color}}
+ \pgfusepath{draw,fill}
+ \pgfsetfillcolor{\ctikzvalof{color}}
+ % % plus pole annotation
+ \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
+ {\ctikzvalof{bipoles/ecapacitor/font} $+$}
+}
+
+%% Variable Capacitor
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/vcapacitor/height}}
+{vcapacitor}
+{\ctikzvalof{bipoles/vcapacitor/height}}
+{\ctikzvalof{bipoles/vcapacitor/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfusepath{draw}
+}
+
+
+%% Piezoelectric Element
+
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/piezoelectric/height}}
+{piezoelectric}
+{\ctikzvalof{bipoles/piezoelectric/height}}
+{\ctikzvalof{bipoles/piezoelectric/width}}
+{
+ % \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
+ % \divide \pgf@circ@res@step by 5
+
+ %% Outer markings
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %% Inner Box
+ \pgf@circ@res@step = \pgf@circ@res@right \divide \pgf@circ@res@step by 10
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\pgf@circ@res@left+4*\pgf@circ@res@step}{\pgf@circ@res@up-\pgf@circ@res@step}}
+ {\pgfpoint{\pgf@circ@res@right-4*\pgf@circ@res@step}{\pgf@circ@res@down+\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+ \endpgfscope
+}
+
+%%%%%%%%%%%%%%%
+%% Inductors
+%%%%%%%%%%%%%%%
+
+%% cute inductor
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
+ \ctikzvalof{bipoles/cuteinductor/height} :% even
+ -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
+{cuteinductor}
+{\ctikzvalof{bipoles/cuteinductor/height}}
+{\ctikzvalof{bipoles/cuteinductor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% cute inductive sensor
+\pgfcircdeclarebipolescaled{inductors}
+{% anchor for labelling the type of dependency
+ \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}%
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
+ \ctikzvalof{bipoles/cuteinductor/height} :% even
+ -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
+{scuteinductor}
+{\ctikzvalof{bipoles/cuteinductor/height}}
+{\ctikzvalof{bipoles/cuteinductor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% cute choke
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
+ \ctikzvalof{bipoles/cuteinductor/height} :% even
+ -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/cutechoke/lower coil height}}
+{cutechoke}
+{\ctikzvalof{bipoles/cutechoke/height}}
+{\ctikzvalof{bipoles/cutechoke/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cutechoke/coil aspect}*\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen/(\ctikzvalof{bipoles/cutechoke/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cutechoke/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cutechoke/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cutechoke/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
+ \pgfusepath{stroke}
+
+ \ifpgf@circuit@bipole@twolineschoke
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
+ \pgfusepath{stroke}
+ \fi
+}
+
+%% variable cute inductor
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
+ \ctikzvalof{bipoles/cuteinductor/height} :% even
+ -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}
+{vcuteinductor}
+{\ctikzvalof{bipoles/vcuteinductor/height}}
+{\ctikzvalof{bipoles/vcuteinductor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% american inductor
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?%
+ 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even
+ 0) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/americaninductor/height 2}}
+{americaninductor}
+{\ctikzvalof{bipoles/americaninductor/height}}
+{\ctikzvalof{bipoles/americaninductor/width}}
+{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+
+%% american inductive sensor
+\pgfcircdeclarebipolescaled{inductors}
+{% anchor for labelling the type of dependency
+ \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}%
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?%
+ 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even
+ 0) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/americaninductor/height 2}}
+{samericaninductor}
+{\ctikzvalof{bipoles/americaninductor/height}}
+{\ctikzvalof{bipoles/americaninductor/width}}
+{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% variable american inductor
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/vamericaninductor/coils},2) ?%
+ 2*\ctikzvalof{bipoles/vamericaninductor/coil height} :% even
+ 0) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/vamericaninductor/height 2}}
+{vamericaninductor}
+{\ctikzvalof{bipoles/vamericaninductor/height}}
+{\ctikzvalof{bipoles/vamericaninductor/width}}
+{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/vamericaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Generic bipole, filled - used as inductor by some
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \anchor{midtap}{\northeast\pgf@x=0pt\relax}
+}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{fullgeneric}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{\ctikzvalof{bipoles/fullgeneric/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfusepath{draw,fill}
+}
+
+%% Generic sensor, filled - used as inductive sensor by some
+\pgfcircdeclarebipolescaled{inductors}
+{% anchor for labelling the type of dependency
+ \anchor{label}{\southwest\pgf@x=0.4\pgf@x\pgf@y=2\pgf@y}%
+ \anchor{midtap}{\northeast\pgf@x=0pt\relax}
+}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{sfullgeneric}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{\ctikzvalof{bipoles/fullgeneric/width}}
+{
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw,fill}
+ %\pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ %\endpgfscope
+}
+
+%% Generic full tunable
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \anchor{midtap}{\northeast\pgf@x=0pt\relax}
+}
+{\ctikzvalof{bipoles/tfullgeneric/height}}
+{tfullgeneric}
+{\ctikzvalof{bipoles/tfullgeneric/height}}
+{\ctikzvalof{bipoles/tfullgeneric/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw,fill}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%%%%%%%%%%%
+%% Battery
+%%%%%%%%%%%
+
+%% Battery
+\pgfcircdeclarebipolescaled{batteries}
+{}
+{\ctikzvalof{bipoles/battery/height}}
+{battery}
+{\ctikzvalof{bipoles/battery/height}}
+{\ctikzvalof{bipoles/battery/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 6
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \ifpgf@circ@fixbatteries
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+}
+
+
+%% Battery 1 % poles with equl thickness
+
+\pgfcircdeclarebipolescaled{batteries}
+{}
+{\ctikzvalof{bipoles/battery1/height}}
+{battery1}
+{\ctikzvalof{bipoles/battery1/height}}
+{\ctikzvalof{bipoles/battery1/width}}
+{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \ifpgf@circ@fixbatteries
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+}
+
+%% Battery 2 % negative pole thicker
+
+\pgfcircdeclarebipolescaled{batteries}
+{}
+{\ctikzvalof{bipoles/battery2/height}}
+{battery2}
+{\ctikzvalof{bipoles/battery2/height}}
+{\ctikzvalof{bipoles/battery2/width}}
+{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \ifpgf@circ@fixbatteries
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{3\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{3\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%
+%% Round and diamond sources
+%%%%%%%%%%%
+
+%% Independent voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsource/height}}
+{vsource}
+{\ctikzvalof{bipoles/vsource/height}}
+{\ctikzvalof{bipoles/vsource/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+%% Independent voltage source - American style
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsourceam/height}}
+{vsourceAM}
+{\ctikzvalof{bipoles/vsourceam/height}}
+{\ctikzvalof{bipoles/vsourceam/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifpgf@circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$-$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$+$}
+ \fi
+}
+
+%% Independent sinusoidal voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsourcesin/height}}
+{vsourcesin}
+{\ctikzvalof{bipoles/vsourcesin/height}}
+{\ctikzvalof{bipoles/vsourcesin/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Square Voltage source - contributed by Alistair Kwan
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsourcesquare/height}}
+{vsourcesquare}
+{\ctikzvalof{bipoles/vsourcesquare/height}}
+{\ctikzvalof{bipoles/vsourcesquare/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Triangle Voltage source - contributed by Ralf Farkas
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsourcetri/height}}
+{vsourcetri}
+{\ctikzvalof{bipoles/vsourcetri/height}}
+{\ctikzvalof{bipoles/vsourcetri/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% PV Source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/pvsource/height}}
+{pvsource}
+{\ctikzvalof{bipoles/pvsource/height}}
+{\ctikzvalof{bipoles/pvsource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %Arrow Part
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty Source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/esource/height}}
+{esource}
+{\ctikzvalof{bipoles/esource/height}}
+{\ctikzvalof{bipoles/esource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+}
+
+%% DC Current Source with open shape
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/dcisource/height}}
+{dcisource}
+{\ctikzvalof{bipoles/dcisource/height}}
+{\ctikzvalof{bipoles/dcisource/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@maybefill
+ \edef\@@angle{\ctikzvalof{bipoles/dcisource/angle}}
+ \pgfpathmoveto{\pgfpointpolar{\@@angle}{\pgf@circ@res@up}}
+ \pgfpatharc{\@@angle}{-\@@angle}{\pgf@circ@res@up}
+ \pgfpathmoveto{\pgfpointpolar{180-\@@angle}{\pgf@circ@res@up}}
+ \pgfpatharc{180-\@@angle}{180+\@@angle}{\pgf@circ@res@up}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% DC-Voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/dcvsource/height}}
+{dcvsource}
+{\ctikzvalof{bipoles/dcvsource/height}}
+{\ctikzvalof{bipoles/dcvsource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
+ \pgfusepath{draw}
+}
+
+%% Independent current source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isource}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+}
+
+%% Independent double oo source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/oosource/height}}
+{oosource}
+{\ctikzvalof{bipoles/oosource/height}}
+{\ctikzvalof{bipoles/oosource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
+ \pgf@circ@maybefill
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
+ \pgf@circ@draworfill
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
+ \pgfusepath{draw}
+}
+
+%% Independent current source - American
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isourceam/height}}
+{isourceAM}
+{\ctikzvalof{bipoles/isourceam/height}}
+{\ctikzvalof{bipoles/isourceam/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% Independent sinusoidal current source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isourcesin}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty controlled source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/ecsource/height}}
+{ecsource}
+{\ctikzvalof{bipoles/ecsource/height}}
+{\ctikzvalof{bipoles/ecsource/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+}
+
+%% Controlled voltage source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsource/height}}
+{cvsource}
+{\ctikzvalof{bipoles/cvsource/height}}
+{\ctikzvalof{bipoles/cvsource/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+%% Controlled voltage source - American
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsourceam/height}}
+{cvsourceAM}
+{\ctikzvalof{bipoles/cvsourceam/height}}
+{\ctikzvalof{bipoles/cvsourceam/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifpgf@circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$+$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$-$}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$-$}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$+$}
+ \fi
+}
+
+%% Controlled sinusoidal voltage source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{cvsourcesin}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{\ctikzvalof{bipoles/cvsourcesin/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Controlled sinusoidal current source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{cisourcesin}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{\ctikzvalof{bipoles/cvsourcesin/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Controlled current source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cisource/height}}
+{cisource}
+{\ctikzvalof{bipoles/cisource/height}}
+{\ctikzvalof{bipoles/cisource/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Controlled current source - American
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cisourceam/height}}
+{cisourceAM}
+{\ctikzvalof{bipoles/cisourceam/height}}
+{\ctikzvalof{bipoles/cisourceam/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% Cute Independent voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsource/height}}
+{vsourceC}
+{\ctikzvalof{bipoles/vsource/height}}
+{\ctikzvalof{bipoles/vsource/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Cute Independent current source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isourceC}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Cute Controlled voltage source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsource/height}}
+{cvsourceC}
+{\ctikzvalof{bipoles/cvsource/height}}
+{\ctikzvalof{bipoles/cvsource/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Cute Controlled current source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cisource/height}}
+{cisourceC}
+{\ctikzvalof{bipoles/cisource/height}}
+{\ctikzvalof{bipoles/cisource/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@down}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Noise voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsource/height}}
+{vsourceN}
+{\ctikzvalof{bipoles/vsource/height}}
+{\ctikzvalof{bipoles/vsource/width}}
+{
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ %
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax
+ \edef\pgf@noise@temp{dashed}
+ \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}}
+ \ifx\pgf@noise@temp\pgf@noise@fill
+ % fillable in this case
+ \pgf@circ@draworfillandclip
+ \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thinner\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ %
+ \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \else
+ \pgfsetfillcolor{\pgf@noise@fill}
+ \pgfusepath{draw,fill}
+ \fi
+ \endpgfscope
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+%% Noise current source
+
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isourceN}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ %
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax
+ \edef\pgf@noise@temp{dashed}
+ \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}}
+ \ifx\pgf@noise@temp\pgf@noise@fill
+ % fillable in this case
+ \pgf@circ@draworfillandclip
+ \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thinner\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ %
+ \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \else
+ \pgfsetfillcolor{\pgf@noise@fill}
+ \pgfusepath{draw,fill}
+ \fi
+ \endpgfscope
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%%
+%% Diodes
+%%%%%%%%%%%%%%
+
+%% Black generic diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fulldiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black Zener diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black alternative zigzag Zener diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullzzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black Schottky diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullsdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Black tunnel diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fulltdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black light emitting diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fulllediode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+}
+
+%% Black photodiode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullpdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latexslim}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black varcap
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/varcap/height}}
+{fullvarcap}
+{\ctikzvalof{bipoles/varcap/height}}
+{\ctikzvalof{bipoles/varcap/width}}
+{
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfusepath{draw,fill}
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Code for the diode triangle
+\def\pgf@circ@basicdiodeshape{
+ % \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfscope
+ % to allow filling, we need to draw explicitly the stroke here.
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \ifpgf@circuit@bipole@strokedsymbol
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+ % \endpgfscope
+}
+
+%% Empty generic diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptydiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty Zener diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptyzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty alternative zigzag Zener diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptyzzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%% Empty Schottky diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptysdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty tunnel diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptytdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty light emitting diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptylediode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty photodiode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptypdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latexslim}
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty varcap
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/varcap/height}}
+{emptyvarcap}
+{\ctikzvalof{bipoles/varcap/height}}
+{\ctikzvalof{bipoles/varcap/width}}
+{
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ % \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfscope
+ % to allow filling, we need to draw explicitily the stroke here.
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \ifpgf@circuit@bipole@strokedsymbol
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty bidirectionaldiode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{emptybidirectionaldiode}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{\ctikzvalof{bipoles/bidirectionaldiode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgf@circ@draworfill
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%% Full bidirectionaldiode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{fullbidirectionaldiode}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{\ctikzvalof{bipoles/bidirectionaldiode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw, fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%% Black thyristor
+\pgfcircdeclarebipolescaled{diodes}
+{
+ \anchor{gate}{\northeast}
+ \anchor{anode}{\southwest\pgf@y=0cm}
+ \anchor{G}{\northeast}
+ \anchor{cathode}{\northeast\pgf@y=0cm }
+}
+{\ctikzvalof{tripoles/thyristor/height 2}}
+{fullthyristor}
+{\ctikzvalof{tripoles/thyristor/height}}
+{\ctikzvalof{tripoles/thyristor/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty thyristor
+
+\pgfcircdeclarebipolescaled{diodes}
+{
+ \anchor{gate}{\northeast}
+ \anchor{anode}{\southwest\pgf@y=0cm}
+ \anchor{G}{\northeast}
+ \anchor{cathode}{\northeast\pgf@y=0cm }
+}
+{\ctikzvalof{tripoles/thyristor/height 2}}
+{emptythyristor}
+{\ctikzvalof{tripoles/thyristor/height}}
+{\ctikzvalof{tripoles/thyristor/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfscope
+ % to allow filling, we need to draw explicitily the stroke here.
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \ifpgf@circuit@bipole@strokedsymbol
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%% Empty triac
+\pgfcircdeclarebipolescaled{diodes}
+{
+ \anchor{gate}{\northeast}
+ \anchor{anode}{\southwest\pgf@y=0cm}
+ \anchor{G}{\northeast}
+ \anchor{cathode}{\northeast\pgf@y=0cm }
+}
+{\ctikzvalof{tripoles/triac/height}}
+{emptytriac}
+{\ctikzvalof{tripoles/triac/height}}
+{\ctikzvalof{tripoles/triac/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgf@circ@draworfill
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%% Full triac
+\pgfcircdeclarebipolescaled{diodes}
+{
+ \anchor{gate}{\northeast}
+ \anchor{anode}{\southwest\pgf@y=0cm}
+ \anchor{G}{\northeast}
+ \anchor{cathode}{\northeast\pgf@y=0cm }
+}
+{\ctikzvalof{tripoles/triac/height}}
+{fulltriac}
+{\ctikzvalof{tripoles/triac/height}}
+{\ctikzvalof{tripoles/triac/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%
+%% switches
+%%%%%%%%%%%%%
+
+%% (Closing) SPST
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/spst/depth}}
+{cspst}
+{\ctikzvalof{bipoles/spst/height}}
+{\ctikzvalof{bipoles/spst/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpointpolar{90}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{90}{-20}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Opening SPST
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/spst/depth}}
+{ospst}
+{\ctikzvalof{bipoles/spst/height}}
+{\ctikzvalof{bipoles/spst/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{-10}{90}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Normal open Switch
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/nos/depth}}
+{nos}
+{\ctikzvalof{bipoles/nos/height}}
+{\ctikzvalof{bipoles/nos/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+}
+
+%% Normal closed Switch
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/ncs/depth}}
+{ncs}
+{\ctikzvalof{bipoles/ncs/height}}
+{\ctikzvalof{bipoles/ncs/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Push Button
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/pushbutton/height 2}}
+{pushbutton}
+{\ctikzvalof{bipoles/pushbutton/height}}
+{\ctikzvalof{bipoles/pushbutton/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+
+%% Normally closed Push Button
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/pushbutton/height 2}}
+{ncpushbutton}
+{\ctikzvalof{bipoles/pushbutton/height}}
+{\ctikzvalof{bipoles/pushbutton/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ % Warning, if the nodes will have a class, we have to touch this.
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp}}
+ \pgfpathmoveto{\pgfpoint{0}{-\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ %
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+%%% reed switches
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/reed/depth}}
+{reed}
+{\ctikzvalof{bipoles/reed/height}}
+{\ctikzvalof{bipoles/reed/width}}
+{
+ % this is designed to be the same as a "nos".
+ \pgfmathsetmacro{\@@tmpx}{0.9*\ctikzvalof{bipoles/nos/width}/\ctikzvalof{bipoles/reed/width}}
+ \pgfmathsetmacro{\@@tmpy}{\ctikzvalof{bipoles/nos/height}/\ctikzvalof{bipoles/reed/height}}
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ % eclosure
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@up}{\pgf@circ@res@up}}
+ \pgfpatharc{90}{-90}{\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@up}{-\pgf@circ@res@up}}
+ \pgfpatharc{270}{90}{\pgf@circ@res@up}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ % switch
+ \pgfpathmoveto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{\@@tmpy\pgf@circ@res@up}}
+ % connection lines
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ % connection lines
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+}
+
+% cute switch "to" shapes help function
+% #1 -> name
+% #2 -> barposition
+% #3 -> arrowcode
+\long\def\pgfcircdeclarecutesw#1#2#3{
+ \pgfcircdeclarebipolescaled{switches}
+ {
+ \savedanchor\midlever{
+ % these values are calculated when we create the definition of the shape.
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgf@circ@res@down = -.5\pgf@y
+ \pgf@circ@res@up = .5\pgf@y
+ \pgfextracty{\pgf@circ@res@other}{#2}
+ \pgf@x=0pt
+ \pgf@y=.5\pgf@circ@res@other
+ }
+ % radius of the connector
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ % If cnnecting nodes are scaled, we have to modify this
+ \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % shape type
+ \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
+ % mid of the lever, to stack switches
+ \anchor{mid}{\midlever}
+ \anchor{cout}{\northeast \pgf@y=0cm}
+ \anchor{cin}{\southwest\pgf@y=0cm}
+ \anchor{out}{\northeast \pgf@y=0cm\advance\pgf@x by \radius}
+ \anchor{in}{\southwest\pgf@y=0cm\advance\pgf@x by -\radius}
+ }
+ {\ctikzvalof{bipoles/cuteswitch/height 2}}
+ {#1}
+ {\ctikzvalof{bipoles/cuteswitch/height}}
+ {\ctikzvalof{bipoles/cuteswitch/width}}{
+ \pgfscope
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ % If cnnecting nodes are scaled, we have to modify this
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgfsetlinewidth{2\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{#2}
+ \pgfsetroundcap\pgfusepath{draw}
+ \endpgfscope
+ \pgfscope % arrow
+ #3
+ \endpgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out}{\pgfusepath{draw}}
+ }
+}
+
+%% closed cute switch
+\pgfcircdeclarecutesw{cuteclosedswitch}
+ {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
+ {}
+
+%% open cute switch
+\pgfcircdeclarecutesw{cuteopenswitch}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ {}
+
+%% closing cute switch
+\pgfcircdeclarecutesw{cuteclosingswitch}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ {
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{70}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{70}{-10}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+ }
+
+%% opening cute switch
+\pgfcircdeclarecutesw{cuteopeningswitch}
+ {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
+ {
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{-10}{60}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+ }
+
+%%%%%%%%%%%%%%%%%
+%% Instruments
+%%%%%%%%%%%%%%%%%
+
+% % METERINGSHAPE
+\long\def\drawmeteringcircle{
+ \def\pgf@circ@temp{right}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \def\pgf@circ@temp{below}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \pgf@circ@res@step=1.2\pgf@circ@res@up
+ \fi
+ \fi
+ %draw connections to circle
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ %draw circle
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgf@circ@draworfill
+ \endpgfscope
+ %draw arrow
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%AMPEREMETER
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/ammeter/height}}
+{ammeter}
+{\ctikzvalof{bipoles/ammeter/height}}
+{\ctikzvalof{bipoles/ammeter/width}}
+{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\pgf@circ@font@bold{A}}{}{}
+}
+%OHMMETER
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/ohmmeter/height}}
+{ohmmeter}
+{\ctikzvalof{bipoles/ohmmeter/height}}
+{\ctikzvalof{bipoles/ohmmeter/width}}
+{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
+}
+%VOLTMETER
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/voltmeter/height}}
+{voltmeter}
+{\ctikzvalof{bipoles/voltmeter/height}}
+{\ctikzvalof{bipoles/voltmeter/width}}
+{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\pgf@circ@font@bold{V}}{}{}
+
+}
+
+% oscilloscope, suggested by @nobrl https://github.com/circuitikz/circuitikz/issues/176
+\pgfcircdeclarebipolescaled{instruments}
+{
+ \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
+ \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/oscope/height}}
+{oscope}
+{\ctikzvalof{bipoles/oscope/height}}
+{\ctikzvalof{bipoles/oscope/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\southwest}
+ \pgfextracty{\pgf@circ@res@down}{\southwest}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfscope
+ \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ % this would create a round (analog?) scope...
+ % \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ % get the rotation
+ \ifpgf@circuit@straightinstruments
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \else
+ \edef\rot{0}
+ \fi
+ % and unrotate the scope
+ \pgfscope
+ \pgftransformrotate{\rot}
+ % grid
+ \pgfscope
+ \pgfsetlinewidth{0.5\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfpathgrid[stepx=\pgf@circ@res@step, stepy=\pgf@circ@res@step]%
+ {\pgfpoint{0.75\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ {\pgfpoint{0.75\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfsetstrokeopacity{0.5}
+ \pgfusepath{draw}
+ \endpgfscope
+ % function displayed, thanks to
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% generic round meter with always horizontal text, no arrow
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/esource/height}}
+{rmeter}
+{\ctikzvalof{bipoles/esource/height}}
+{\ctikzvalof{bipoles/esource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ % draw the text label
+ % get the rotation
+ \ifpgf@circuit@straightinstruments
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \else
+ \edef\rot{0}
+ \fi
+ % and unrotate the scope
+ \pgfscope
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgftransformrotate{\rot}
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+ \endpgfscope
+}
+
+% generic round meter with always horizontal text, with arrow
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/esource/height}}
+{rmeterwa}
+{\ctikzvalof{bipoles/esource/height}}
+{\ctikzvalof{bipoles/esource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ % draw the text label
+ % get the rotation
+ \ifpgf@circuit@straightinstruments
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \else
+ \edef\rot{0}
+ \fi
+ % and unrotate the scope
+ \pgfscope
+ \pgftransformrotate{\rot}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ % arrow: create a center hole to have better visual
+ \pgfscope
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ % next open a circle into it
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{.6\pgf@circ@res@up}}{\pgfpoint{.6\pgf@circ@res@left}{0}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfsetarrowsend{latexslim}
+ % the arrow is better if it has a bit of breath and it's not 45ยบ
+ \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@right}{1.2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgftext[center]{\ctikzvalof{bipoles/twoport/text}}
+ \endpgfscope
+}
+
+% generic square meter with always horizontal text
+\pgfcircdeclarebipolescaled{instruments}
+{
+ \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
+ \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/smeter/height}}
+{smeter}
+{\ctikzvalof{bipoles/smeter/height}}
+{\ctikzvalof{bipoles/smeter/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\southwest}
+ \pgfextracty{\pgf@circ@res@down}{\southwest}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfscope
+ \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ % get the rotation
+ \ifpgf@circuit@straightinstruments
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \else
+ \edef\rot{0}
+ \fi
+ % and unrotate the scope
+ \pgfscope
+ \pgftransformrotate{\rot}
+ % the metering window
+ \pgfscope
+ \def\@starta{105}\def\@stopa{75}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftransformshift{\pgfpoint{0pt}{-1.8\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{\@starta}{2\pgf@circ@res@up}}
+ \pgfpatharc{\@starta}{\@stopa}{2\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
+ \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
+ \pgfclosepath
+ \pgfpathmoveto{\pgfpointpolar{80}{2\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{80}{2.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgftext[center, y=0.5\pgf@circ@res@down]{\ctikzvalof{bipoles/twoport/text}}
+ \endpgfscope
+}
+
+% probes qucs style:
+% #1 : name
+% #2 : extra code
+\long\def\pgfcirc@qucsprobe#1#2{
+ \pgfcircdeclarebipolescaled{instruments}
+ {
+ \anchor{v+}{\southwest\pgf@x=0.6\pgf@x}
+ \anchor{v-}{\southwest\pgf@x=-0.6\pgf@x}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ }
+ {\ctikzvalof{bipoles/qmeter/depth}}
+ {#1}
+ {\ctikzvalof{bipoles/qmeter/height}}
+ {\ctikzvalof{bipoles/qmeter/width}}
+ {
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\southwest}
+ \pgfextracty{\pgf@circ@res@down}{\southwest}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfscope
+ \pgfscope
+ \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \def\@starta{103}\def\@stopa{77}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{0pt}{-1.7\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{\@starta}{2.1\pgf@circ@res@up}}
+ \pgfpatharc{\@starta}{\@stopa}{2.1\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
+ \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
+ \pgfclosepath
+ \pgfpathmoveto{\pgfpointpolar{83}{2.1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{83}{2.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgf@circ@draworfill
+ \endpgfscope
+ #2
+ \endpgfscope
+ }
+}
+
+\pgfcirc@qucsprobe{qiprobe}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \pgfnode{currarrow}{center}{}{}{}
+}
+
+\pgfcirc@qucsprobe{qvprobe}{
+ \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{0pt}}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
+ \pgfusepath{draw}
+ \pgfscope
+ % "+" and "-", drawn so that they scale correctly
+ \pgfsetlinewidth{2\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-1.5\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-3.5\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+\pgfcirc@qucsprobe{qpprobe}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \pgfnode{currarrow}{center}{}{}{}
+ \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{-4\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{-4\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfscope
+ % "+" and "-", drawn so that they scale correctly
+ \pgfsetlinewidth{2\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-2\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-4\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right-4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% current loop for oscope and similar: stylized
+\pgfcircdeclarebipolescaled{instruments}
+{
+ \anchor{i}{\northeast\pgf@x=0pt\relax}
+ \anchor{text}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/iloop/height}}
+{iloop}
+{\ctikzvalof{bipoles/iloop/height}}
+{\ctikzvalof{bipoles/iloop/width}}
+{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@down=-\pgf@circ@res@up
+ \pgf@circ@res@left=-\pgf@circ@res@right
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcolor{\ctikzvalof{color}}
+ % external ellipse
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ % next the opening to the left
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
+ {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathellipse{\pgfpointorigin}{
+ \pgfpoint{0pt}{0.8\pgf@circ@res@up}}{
+ \pgfpoint{0.4\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ % internal wire
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % and the contact line up
+ \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% current loop for oscope and similar: real (double connection)
+\pgfcircdeclarebipolescaled{instruments}
+{
+ \anchor{i+}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@step=0.4\pgf@circ@res@right
+ \pgf@circ@res@other=0.8\pgf@circ@res@up
+ \pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgf@y=\pgf@circ@res@up
+ }
+ \anchor{i-}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@step=0.4\pgf@circ@res@right
+ \pgf@circ@res@other=0.8\pgf@circ@res@up
+ \pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgf@y=\pgf@circ@res@up
+ }
+ \anchor{text}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/iloop/height}}
+{iloop2}
+{\ctikzvalof{bipoles/iloop/height}}
+{\ctikzvalof{bipoles/iloop/width}}
+{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@down=-\pgf@circ@res@up
+ \pgf@circ@res@left=-\pgf@circ@res@right
+ % must be the same than internal i+ and i- anchors definition
+ \pgf@circ@res@step=0.4\pgf@circ@res@right
+ \pgf@circ@res@other=0.8\pgf@circ@res@up
+ \def\@plus{\pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}}
+ \def\@minus{\pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}}
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcolor{\ctikzvalof{color}}
+ % external ellipse
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ % next the opening to the left
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
+ {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathmoveto{\@plus}
+ \pgfpatharc{105}{435}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfusepath{draw}
+ \endpgfscope
+ % internal wire
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % and the contact line up
+ % I use ...left and ---right as temporal lengths here to avoid defining more
+ \pgfextractx{\pgf@circ@res@left}{\@plus}
+ \pgfextractx{\pgf@circ@res@right}{\@minus}
+ \pgfpathmoveto{\@plus}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\@minus}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Varistor
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/varistor/height}}
+{varistor}
+{\ctikzvalof{bipoles/varistor/height}}
+{\ctikzvalof{bipoles/varistor/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\pgf@circ@font@tiny\textsf{U}}}
+}
+
+%%%%%%%%%%%%%%
+%% RF bipoles
+%%%%%%%%%%%%%%
+
+% transmission line
+\pgfcircdeclarebipolescaled{RF}
+{}
+{\ctikzvalof{bipoles/tline/height}}
+{tline}
+{\ctikzvalof{bipoles/tline/height}}
+{\ctikzvalof{bipoles/tline/width}}
+{
+ \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
+ \begin{pgftransparencygroup}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{-\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ \end{pgftransparencygroup}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{stroke}
+}
+
+% microstrip transmission line
+\pgfcircdeclarebipolescaled{RF}
+{}
+{\ctikzvalof{bipoles/mstline/height}}
+{mstline}
+{\ctikzvalof{bipoles/mstline/height}}
+{\ctikzvalof{bipoles/mstline/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+%%%%%%%%%%%%%%%%%%%
+%% Block diagrams
+%%%%%%%%%%%%%%%%%%%
+
+%% Draw the two-port fillable box
+\def\pgf@circ@twoportbox{
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \endpgfscope
+}
+
+%% Generic two port box
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/twoport/height}}
+{twoport}
+{\ctikzvalof{bipoles/twoport/height}}
+{\ctikzvalof{bipoles/twoport/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw outer box
+ \pgf@circ@twoportbox
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+}
+
+%% voltage controled oscillator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/vco/width}}
+{vco}
+{\ctikzvalof{bipoles/twoport/width}}
+{\ctikzvalof{bipoles/vco/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw circle
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% bandpass filter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/bandpass/width}}
+{bandpass}
+{\ctikzvalof{bipoles/bandpass/width}}
+{\ctikzvalof{bipoles/bandpass/width}}
+{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% bandstop filter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/bandstop/width}}
+{bandstop}
+{\ctikzvalof{bipoles/bandstop/width}}
+{\ctikzvalof{bipoles/bandstop/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bandstop/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225% 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt}% always draw solid line for inner symbol
+ \pgfsetarrows{-}%never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% highpass filter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/highpass/width}}
+{highpass}
+{\ctikzvalof{bipoles/highpass/width}}
+{\ctikzvalof{bipoles/highpass/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% lowpass filter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/lowpass/width}}
+{lowpass}
+{\ctikzvalof{bipoles/lowpass/width}}
+{\ctikzvalof{bipoles/lowpass/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% ADC
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/adc/width}}
+{adc}
+{\ctikzvalof{bipoles/adc/width}}
+{\ctikzvalof{bipoles/adc/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{A}
+ \def\textii{D}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{A}
+ \def\textii{D}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DAC
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/dac/width}}
+{dac}
+{\ctikzvalof{bipoles/dac/width}}
+{\ctikzvalof{bipoles/dac/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{D}
+ \def\textii{A}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{D}
+ \def\textii{A}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DSP
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/dsp/width}}
+{dsp}
+{\ctikzvalof{bipoles/dsp/width}}
+{\ctikzvalof{bipoles/dsp/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{DSP}}
+}
+
+%% FFT
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/fft/width}}
+{fft}
+{\ctikzvalof{bipoles/fft/width}}
+{\ctikzvalof{bipoles/fft/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{FFT}}
+}
+
+%% Amplifier
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{amp}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \pgf@circ@draworfill
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+
+ \pgfsetarrows{-} %never draw arrows
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+}
+
+
+%% variable amplifier
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{vamp}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+ % draw arrow
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% pi attenuator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/piattenuator/width}}
+{piattenuator}
+{\ctikzvalof{bipoles/piattenuator/width}}
+{\ctikzvalof{bipoles/piattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable pi attenuator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/vpiattenuator/width}}
+{vpiattenuator}
+{\ctikzvalof{bipoles/vpiattenuator/width}}
+{\ctikzvalof{bipoles/vpiattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% T attenuator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/tattenuator/width}}
+{tattenuator}
+{\ctikzvalof{bipoles/tattenuator/width}}
+{\ctikzvalof{bipoles/tattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable T attenuator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/vtattenuator/width}}
+{vtattenuator}
+{\ctikzvalof{bipoles/vtattenuator/width}}
+{\ctikzvalof{bipoles/vtattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% phase shifter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{phaseshifter}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+}
+
+%% variable phase shifter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{vphaseshifter}
+{\ctikzvalof{bipoles/vphaseshifter/width}}
+{\ctikzvalof{bipoles/vphaseshifter/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% detector
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/detector/width}}
+{detector}
+{\ctikzvalof{bipoles/detector/width}}
+{\ctikzvalof{bipoles/detector/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{0.8\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@fulldiode
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
+ \fi
+
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% MECHANICAL SYMBOLS
+%%%%%%%%%%%%%%%%%%%%%%%
+
+%% mechanical capacitance - stiffness/spring
+
+\pgfcircdeclarebipolescaled{mechanicals}
+{}
+{\ctikzvalof{bipoles/spring/height}}
+{spring}
+{\ctikzvalof{bipoles/spring/height}}
+{\ctikzvalof{bipoles/spring/width}}{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@scaled@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical inductance - mass
+\pgfcircdeclarebipolescaled{mechanicals}
+{}
+{\ctikzvalof{bipoles/mass/box height}}
+{mass}
+{\ctikzvalof{bipoles/mass/height}}
+{\ctikzvalof{bipoles/mass/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical resistor - damper
+\pgfcircdeclarebipolescaled{mechanicals}
+{}
+{\ctikzvalof{bipoles/damper/height}}
+{damper}
+{\ctikzvalof{bipoles/damper/height}}
+{\ctikzvalof{bipoles/damper/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@maybefill
+
+ % line into the damper
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {\pgf@circ@res@zero}}
+ \pgfusepath{stroke}
+
+ % damper box
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+
+ % damper vertical element
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{stroke}
+
+}
+%% mechanical viscoelastic element, suggested by @alex
+%% in https://tex.stackexchange.com/questions/484268/combined-spring-damper-in-circuitikz
+\pgfcircdeclarebipolescaled{mechanicals}
+{} % extra anchors
+{\ctikzvalof{bipoles/damper/height}} % depth (under the path line)
+{viscoe} % name
+{\ctikzvalof{bipoles/damper/height}} % height (above the path line)
+{\ctikzvalof{bipoles/damper/width}} % width
+{ % draw the bipole
+ \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@maybefill
+
+ % spring into the damper
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfsetcornersarced{\pgfpoint{.25\pgf@circ@res@up}{.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.75\pgf@circ@res@left}{.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@left}{-.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{.75\pgf@circ@res@up}}
+ \pgfusepath{stroke}
+ \endpgfscope
+ % damper box
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+
+ % damper vertical element
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{stroke}
+
+}
+
+%%%%%%%%%%%%%%%%
+%% Crossing
+%%%%%%%%%%%%%%%%
+
+%% crossing bipole (but see also nodes)
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/crossing/size}}
+{crossing}
+{\ctikzvalof{bipoles/crossing/size}}
+{\ctikzvalof{bipoles/crossing/size}}{
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
+ \pgfsetbeveljoin
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Miscellaneous bipoles
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% loudspeaker and microphone
+
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/loudspeaker/depth}}
+{loudspeaker}
+{\ctikzvalof{bipoles/loudspeaker/height}}
+{\ctikzvalof{bipoles/loudspeaker/width}}{
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{.4\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/mic/depth}}
+{mic}
+{\ctikzvalof{bipoles/mic/height}}
+{\ctikzvalof{bipoles/mic/width}}{
+
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0pt}{.6\pgf@circ@res@up}}{.4\pgf@circ@res@up}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{0pt}}
+ % 0.25358 is 0.6-0.4*cos(30)
+ \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% european gas filled surge arrester
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
+{european gas filled surge arrester}
+{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
+{\ctikzvalof{bipoles/european gas filled surge arrester/width}}
+{
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@draworfill
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+}
+
+%% american gas filled surge arrester
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
+{american gas filled surge arrester}
+{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
+{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope{}
+
+ \pgfcircle{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\ctikzvalof{bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\ctikzvalof{bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
+ \pgfusepath{fill}
+}
+
+%% thermocouple
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/thermocouple/height 2}}
+{thermocouple}
+{\ctikzvalof{bipoles/thermocouple/height}}
+{\ctikzvalof{bipoles/thermocouple/width}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+}
+
+%% fuse
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/fuse/height}}
+{fuse}
+{\ctikzvalof{bipoles/fuse/height}}
+{\ctikzvalof{bipoles/fuse/width}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@draworfill
+}
+
+%% asymmetric fuse
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/afuse/height}}
+{afuse}
+{\ctikzvalof{bipoles/afuse/height}}
+{\ctikzvalof{bipoles/afuse/width}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+%% SQUID added by Cor Molenaar 5 March 2010
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/squid/height}}
+{squid}
+{\ctikzvalof{bipoles/squid/height}}
+{\ctikzvalof{bipoles/squid/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+% Generic barrier added by Cor Molenaar 5 March 2010
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/barrier/height}}
+{barrier}
+{\ctikzvalof{bipoles/barrier/height}}
+{\ctikzvalof{bipoles/barrier/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
+
+ \pgfusepath{draw}
+}
+
+%% Lamp
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/lamp/height}}
+{lamp}
+{\ctikzvalof{bipoles/lamp/height}}
+{\ctikzvalof{bipoles/lamp/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% bulb
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/bulb/height}}
+{bulb}
+{\ctikzvalof{bipoles/bulb/height}}
+{\ctikzvalof{bipoles/bulb/width}}
+{%
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{0.8\pgf@circ@res@up}}{\pgfpoint{0.8\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
+ \pgfsetbeveljoin
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+% end of pgfcircbipoles.tex
+%%%---------- close: tex/pgfcircbipoles
+%%%%%%%%%%% Springe nach tex/pgfcirctripoles
+%%%---------- open: tex/pgfcirctripoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Tripoles
+
+%%%%%%%%%%%%%
+%% switches
+%%%%%%%%%%%%%
+
+% Legacy spdt
+\pgfdeclareshape{spdt}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/spdt/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out 1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{out 2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@res@other = \ctikzvalof{tripoles/spdt/margin}\pgf@circ@res@left
+
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
+ {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
+ }
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+
+% cute switch "node" shapes, matching with cute "to" shapes
+% #1 -> name
+% #2 -> barposition
+% #3 -> arrowcode
+\long\def\pgfcircdeclarecutespdt#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.25\pgf@x
+ }
+ \savedanchor\midlever{
+ % these values are calculated when we create the definition of the shape.
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgf@circ@res@down = -.5\pgf@y
+ \pgf@circ@res@up = .5\pgf@y
+ \pgfextracty{\pgf@circ@res@other}{#2}
+ \pgf@x=0pt
+ \pgf@y=.5\pgf@circ@res@other
+ }
+ % radius of the connector
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % shape type
+ \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
+ % mid of the lever, to stack switches
+ \anchor{mid}{\midlever}
+ % center anchors
+ \anchor{cin}{ \northwest \pgf@y=0pt}
+ \anchor{cout 1}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{cout 2}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ % horizontal angles
+ \anchor{in}{ \northwest \pgf@y=0pt\advance\pgf@x by -\radius}
+ \anchor{out 1}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius}
+ \anchor{out 2}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius \pgf@y=-\pgf@y }
+
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \pgf@circ@res@temp=\radius\relax
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgfsetlinewidth{2\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{#2}
+ \pgfsetroundcap\pgfusepath{draw}
+ \endpgfscope
+ \pgfscope % arrow
+ #3
+ \endpgfscope
+ % terminals
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out 1}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out 2}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ }
+ }
+}
+
+\pgfcircdeclarecutespdt{cute spdt up}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
+{}
+
+\pgfcircdeclarecutespdt{cute spdt mid}
+{\pgfpoint{\pgf@circ@res@right}{0pt}}
+{}
+
+\pgfcircdeclarecutespdt{cute spdt down}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
+{}
+
+\pgfcircdeclarecutespdt{cute spdt up arrow}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{70}{1.5\pgf@circ@res@right}}
+ \pgfpatharc{70}{-50}{1.5\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclarecutespdt{cute spdt mid arrow}
+{\pgfpoint{\pgf@circ@res@right}{0pt}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfsetarrowsstart{latexslim}
+ \pgfpathmoveto{\pgfpointpolar{-60}{1.5\pgf@circ@res@right}}
+ \pgfpatharc{-60}{60}{1.5\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclarecutespdt{cute spdt down arrow}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{-50}{1.5\pgf@circ@res@right}}
+ \pgfpatharc{-50}{70}{1.5\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Logic ports
+%%
+%% Code from John Kormylo at tex.stackexchange.com
+%% See https://tex.stackexchange.com/questions/372993/is-it-possible-to-implement-multiple-input-logic-ports-with-circuitikz
+%% Integration and fixes from Romano Giannetti and TheTeXnician <38565529+TheTeXnician@users.noreply.github.com>
+%%
+
+\newcount\pgf@circ@res@count% reserve global register
+
+\def\pgf@circ@logicport@input#1% #1 = \pgfmathcounter
+{%
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+}%
+
+% #1 = \pgfmathcounter #2=type #3 specificic port
+% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor, 4 for european.
+\def\pgf@circ@logicport@baseinput#1#2#3%
+{%
+ % and and nand
+ \ifnum #2=1\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@x=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@left
+ \fi
+ % or and nor
+ \ifnum #2=2\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american #3 port/angle}}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\pgf@y
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgf@x=\pgf@circ@res@other
+ \fi
+ % xor and xnor
+ \ifnum #2=3\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american #3 port/angle}{\pgf@circ@math@angle}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/american #3 port/distance}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
+ % this compensates for the effect of the line width on the gap between the arcs
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
+
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@circ@res@temp=\pgf@y
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \advance\pgf@circ@res@other by -\pgf@circ@math@distance
+ \pgf@x=\pgf@circ@res@other
+ \fi
+ % european
+ \ifnum #2=4\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@other}{\left}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@x=\pgf@circ@res@other
+ \fi
+}%
+
+%%% american
+\long\def\pgfcircdeclarelogicport#1#2#3{%
+ \pgfdeclareshape{american #1 port}%
+ {%
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro\resize{% automatic
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@up = \ctikzvalof{tripoles/american #1 port/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgf@circ@res@down = -\pgf@circ@res@up
+ \pgf@circ@res@right = \ctikzvalof{tripoles/american #1 port/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right = .5\pgf@circ@res@right
+ \pgf@circ@res@left = -\pgf@circ@res@right
+ }%
+ \savedmacro\inputs{% get number of inputs
+ \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
+ \ifnum\pgf@circ@res@count=0
+ \pgf@circ@res@count=\ctikzvalof{tripoles/american #1 port/inputs}\relax%
+ \fi
+ \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
+ \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
+ \def\inputs{\the\pgf@circ@res@count}%
+ }%
+ \savedanchor\step{% 1/2 gap at edges
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step = \ctikzvalof{tripoles/american #1 port/height}\pgf@circ@scaled@Rlen
+ \divide\pgf@circ@res@step by \pgf@circ@res@count
+ \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
+ }%
+ \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \savedanchor\left{\pgfpoint{\ctikzvalof{tripoles/american #1 port/port width}\pgf@circ@res@left}{0pt}}
+ \savedanchor\right{\pgfpoint{\ctikzvalof{tripoles/american #1 port/port width}\pgf@circ@res@right}{0pt}}
+ \savedanchor\origin{\pgfpoint{\ctikzvalof{tripoles/american #1 port/origin}\pgf@circ@res@right}{0pt}}
+
+ \anchor{center}{\origin}% for backwards compatibility
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ % create input anchors
+ \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@american #1 port\endcsname{%
+ \pgfmathloop%
+ \ifnum\pgfmathcounter>\pgf@circ@res@count%
+ \else%
+ %\pgfutil@ifundefined{pgf@anchor@american #1 port@in \pgfmathcounter}{%
+ \expandafter\xdef\csname pgf@anchor@american #1 port@in \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
+ }%
+ \expandafter\xdef\csname pgf@anchor@american #1 port@bin \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{#2}{#1}% defined above
+ }%
+ %}{}%
+ \repeatpgfmathloop%
+ }
+
+ \anchor{out}{\northeast\pgf@y=0pt}
+ \anchor{bout}{\right\pgf@y=0pt}
+
+
+ \anchor{left}{\left}% edges of component minus leads
+ \anchor{right}{\right}
+
+ \anchor{north east}{\northeast}% see \Compass macro
+ \anchor{south west}{\southwest}
+ \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfpoint{0cm}{\pgf@circ@res@up}}
+ \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{0cm}}
+ \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfpoint{0cm}{\pgf@circ@res@down}}
+ \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{0cm}}
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ #3
+ }
+}
+}
+%%% american and %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{and}{1}{
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@temp}}
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+ % output lead
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@right}
+ {0pt}}
+ \pgfusepath{draw}
+
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@left
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpatharc{-90}{90}{-2\pgf@circ@res@other and \pgf@circ@res@up}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ }
+%%% american nand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \pgfcircdeclarelogicport{nand}{1}{
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@temp}}
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@right} {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgf@circ@res@step = \ctikzvalof{tripoles/american nand port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@other = \ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@right
+ \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpatharc{-90}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}
+ \pgfpathclose
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgf@circ@draworfill
+}
+%%% american nor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{nor}{2}{
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american nor port/angle}}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/port width}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american nor port/angle}}%
+ \pgf@circ@res@step = \ctikzvalof{tripoles/american nor port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
+ \advance\pgf@circ@res@other by -\pgf@circ@res@step
+
+ % main shape
+ \ifpgfcirc@roundy@or@shapes
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpathclose
+ \else
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathclose
+ \fi
+
+ % not dot
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgf@circ@draworfill
+}
+%%% american or %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{or}{2}{
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american or port/angle}}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/port width}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american or port/angle}}%
+
+ % main shape
+ \ifpgfcirc@roundy@or@shapes
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpathclose
+ \else
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathclose
+ \fi
+
+ \pgf@circ@draworfill
+}
+%%% american xor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{xor}{3}{
+ \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xor port/angle}{\pgf@circ@math@angle}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/american xor port/distance}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
+ % this compensates for the effect of the line width on the gap between the arcs
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \advance\pgf@circ@res@other by -\pgf@circ@math@distance
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/port width}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american xor port/angle}}%
+
+ % main shape
+ \ifpgfcirc@roundy@or@shapes
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpathclose
+ \else
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathclose
+ \fi
+ \pgf@circ@draworfill
+
+ \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
+
+ \pgfusepath{draw}
+}
+%%% american xnor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{xnor}{3}{
+ \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xnor port/angle}{\pgf@circ@math@angle}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/american xor port/distance}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
+ % this compensates for the effect of the line width on the gap between the arcs
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \advance\pgf@circ@res@other by -\pgf@circ@math@distance
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american xnor port/angle}}%
+ \pgf@circ@res@step = \ctikzvalof{tripoles/american xnor port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
+ \advance\pgf@circ@res@other by -\pgf@circ@res@step
+
+ % main shape
+ \ifpgfcirc@roundy@or@shapes
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpathclose
+ \else
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathclose
+ \fi
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@left
+ \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
+
+ \pgfusepath{draw}
+}
+
+%%% Original one-input ports
+
+\pgfdeclareshape{american not port}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{bin 1}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgf@circ@draworfill
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \ifpgfcirc@draw@leads
+ %input leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+ \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+ }
+}
+
+\pgfdeclareshape{american buffer port}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{bin 1}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \ifpgfcirc@draw@leads
+ %input leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+ \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+ }
+}
+\pgfdeclareshape{invschmitt}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{bin 1}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \ifpgfcirc@draw@leads
+ %input leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+ \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ %draw inner shape
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ }
+}
+
+\pgfdeclareshape{schmitt}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{bin 1}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \ifpgfcirc@draw@leads
+ %input leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+ \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ %draw inner shape
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ }
+}
+
+
+%%% start european logic ports, from John Kormylo
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+
+% #1 - name
+% #2 - text inside
+% #3 - number of inputs
+% #4 = is it a not?
+
+\long\def\pgfcircdeclareeurologicport#1#2#3#4{
+ \pgfdeclareshape{european #1 port}
+ {
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro\resize{% automatic
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@up = \ctikzvalof{tripoles/european #1 port/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgf@circ@res@down = -\pgf@circ@res@up
+ \pgf@circ@res@right = \ctikzvalof{tripoles/european #1 port/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right = .5\pgf@circ@res@right
+ \pgf@circ@res@left = -\pgf@circ@res@right
+ }%
+ \savedmacro\inputs{% get number of inputs
+ \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
+ \ifnum\pgf@circ@res@count=0
+ \pgf@circ@res@count=\ctikzvalof{tripoles/european #1 port/inputs}\relax%
+ \fi
+ \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
+ \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
+ \def\inputs{\the\pgf@circ@res@count}%
+ }%
+ \savedanchor\step{% 1/2 gap at edges
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step = \ctikzvalof{tripoles/european #1 port/height}\pgf@circ@scaled@Rlen
+ \divide\pgf@circ@res@step by #3
+ \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
+ }%
+ \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}%
+ \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}%
+ \savedanchor\left{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
+ \savedanchor\right{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}%
+ \savedanchor\origin{\pgfpoint{\ctikzvalof{tripoles/european #1 port/origin}\pgf@circ@res@right}{0pt}}%
+
+ \anchor{center}{\origin}% for backwards compatibility
+ % the text anchor overlaps the logic symbol
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}%
+ % create input anchors
+ \ifnum#3=1\relax
+ \anchor{in}{\southwest\pgfpoint{\pgf@x}{0pt}}% or \step
+ \anchor{in 1}{\southwest\pgfpoint{\pgf@x}{0pt}}% or \step
+ \anchor{bin}{\left\pgfpoint{\pgf@x}{0pt}}% or \step
+ \anchor{bin 1}{\left\pgfpoint{\pgf@x}{0pt}}% or \step
+ \else
+ \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@european #1 port\endcsname{%
+ \pgfmathloop%
+ \ifnum\pgfmathcounter>#3%
+ \else%
+ %\pgfutil@ifundefined{pgf@anchor@european #1 port@in \pgfmathcounter}{% redundant
+ \expandafter\xdef\csname pgf@anchor@european #1 port@in \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
+ }%
+ \expandafter\xdef\csname pgf@anchor@european #1 port@bin \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{4}{#1}% defined above
+ }%
+ %}{}%
+ \repeatpgfmathloop%
+ }
+ \fi
+ \anchor{out}{\northeast\pgf@y=0pt}
+ \anchor{bout}{\right\pgf@y=0pt}
+
+ \anchor{left}{\left}% edges of component minus leads
+ \anchor{right}{\right}
+
+ \anchor{north east}{\northeast}% see \Compass macro
+ \anchor{south west}{\southwest}
+ \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfpoint{0cm}{\pgf@circ@res@up}}
+ \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{0cm}}
+ \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfpoint{0cm}{\pgf@circ@res@down}}
+ \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{0cm}}
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \ifpgfcirc@draw@leads
+ %input leads
+ \ifnum#3=1\relax
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}%
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
+ \else
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ %\pgf@circ@res@count = #3\relax% redundant
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}
+ {\pgf@circ@res@temp}}
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+ \fi
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{%
+ \pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
+ %
+ \edef\pgf@temp{not}
+ \edef\pgf@circ@temp{#4}
+ \ifx\pgf@temp\pgf@circ@temp % is a not
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/european #1 port/not height}\pgf@circ@res@up}}
+ \fi
+ %
+ \pgfusepath{draw}
+ %
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgftext{#2}
+ }
+ }
+}
+\pgfcircdeclareeurologicport{and}{\&}{\pgf@circ@res@count}{}
+\pgfcircdeclareeurologicport{or}{$\ge 1$}{\pgf@circ@res@count}{}
+\pgfcircdeclareeurologicport{xor}{$=1$}{\pgf@circ@res@count}{}
+\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
+\pgfcircdeclareeurologicport{buffer}{$1$}{1}{}
+\pgfcircdeclareeurologicport{nand}{\&}{\pgf@circ@res@count}{not}
+\pgfcircdeclareeurologicport{nor}{$\ge 1$}{\pgf@circ@res@count}{not}
+\pgfcircdeclareeurologicport{xnor}{$=1$}{\pgf@circ@res@count}{not}
+
+%% end european logic ports
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% Transistors
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\long\def\pgfcircdeclaretransistor#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{transistors}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northeast{% upper right
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/#1/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%center left
+ \pgf@y=0pt
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/#1/width}\pgf@circ@scaled@Rlen
+ }
+ \savedanchor\right{%center right -- added by Burak Kelleci % this is really 0,0
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{text}{
+ \northeast
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@transisors@fixlabels
+ \ifpgf@circuit@fet@bodydiode
+ % try to put the text to the right of the flyback diode
+ \pgfmathsetlength{\pgf@circ@res@other}{(
+ \ctikzvalof{tripoles/#1/bodydiode distance}*
+ \ctikzvalof{tripoles/#1/width} +
+ \ctikzvalof{tripoles/#1/bodydiode scale}*
+ \ctikzvalof{bipoles/diode/height}/2
+ )*\pgf@circ@scaled@Rlen}
+ \advance\pgf@x by \pgf@circ@res@other
+ \fi
+ % add a bit of space to avoid central (substrate) terminal if drawn
+ \advance\pgf@x by 0.05\pgf@circ@scaled@Rlen\relax
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ \else
+ \pgf@y=.7\pgf@y
+ \pgf@x= \pgf@circ@scaled@Rlen
+ \pgf@x=0.1\pgf@x
+ \fi
+ }
+ \anchor{pathstart}{ % south
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{pathend}{
+ \northeast
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \northeast
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ }
+ \anchor{north east}{
+ \northeast
+ }
+ \anchor{north west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{south east}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{base}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{bulk}{ %added by Burak Kelleci
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \right
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{nobulk}{ %added by Burak Kelleci
+ \left
+ \pgf@x=\ctikzvalof{tripoles/#1/base width}\pgf@x
+ }
+ \anchor{G}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{gate}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{nobase}{
+ \left
+ \pgf@x=\ctikzvalof{tripoles/#1/base width}\pgf@x
+ }
+ \anchor{nogate}{
+ \left
+ \pgf@x=\ctikzvalof{tripoles/#1/gate width}\pgf@x
+ }
+ \anchor{E}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{emitter}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{C}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{collector}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{D}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{drain}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{body C in}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y
+ }
+ \anchor{body E in}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y
+ }
+ \anchor{body C out}{
+ \northeast
+ \pgf@ya=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ \pgf@ya=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@ya
+ \pgf@y=\pgf@ya
+ \left
+ \pgf@x=-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@x
+ \pgf@y=\pgf@ya
+ }
+ \anchor{body E out}{
+ \northeast
+ \pgf@ya=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ \pgf@ya=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@ya
+ \pgf@y=\pgf@ya
+ \left
+ \pgf@x=-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@x
+ \pgf@y=\pgf@ya
+ }
+ #2
+ \backgroundpath{
+ \pgftransformationadjustments
+ \pgfsetcolor{\ctikzvalof{color}}
+ %
+ \ifnum \ctikzvalof{tripoles/#1/curr direction} > 0
+ \pgf@circuit@trans@ntypetrue
+ \else
+ \pgf@circuit@trans@ntypefalse
+ \fi
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \left
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ %
+ #3
+ % BODY DIODE
+ \ifpgf@circuit@fet@bodydiode
+ \drawbodydiode{#1}
+ \fi
+ %
+ }
+}
+}
+
+\long\def\drawbodydiode#1{
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgftransformrotate{90}
+ % diode scale and bodydiode scale interacts. We want the size of the diode
+ % proportional to the transistor, so we will:
+ % 1) undo diode scale 2) apply transistor scale (using the current class) 3) apply bodydiode scale
+ \pgfmathsetmacro{\@@BDscale}{\ctikzvalof{tripoles/#1/bodydiode scale}* \ctikzvalof{\ctikzclass/scale}/\ctikzvalof{diodes/scale}}
+ \pgftransformscale{\@@BDscale}
+ \ifpgf@circuit@fulldiode
+ \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \else
+ \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \fi
+ \endpgfscope
+ % Draw stroke line
+ \ifpgf@circuit@strokediode
+ \pgfpathmoveto{\pgfpointanchor{pgf@bodydiode}{west}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
+ \pgfusepath{stroke}
+ \fi
+ %Draw upper connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope{}
+ %Draw lower connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+}
+
+\long\def\declarebpt#1{
+ \pgfcircdeclaretransistor{#1}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/base height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/base height}\pgf@y
+ }
+ }{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transistor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \edef\@@anchor{center}
+ \ifpgf@circuit@trans@ntype
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{btip}
+ \pgftransformlineattime{1.0}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{\ctikzvalof{tripoles/#1/arrow pos}}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}%
+ }
+ \fi
+ \else % p-type
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{tip}
+ \pgftransformlineattime{1.0}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}%
+ }
+ \else
+ \pgftransformlineattime{\ctikzvalof{tripoles/#1/arrow pos}}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \fi
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \ifpgf@circuit@bpt@drawphoto
+ \pgfscope
+ \pgfsetarrowsstart{latexslim}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \else
+ \ifpgf@circuit@bpt@drawbase
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+ \fi
+ }
+}
+
+\declarebpt{npn}
+\declarebpt{pnp}
+%
+% multi-emitter and multi-collector BJTs by Romano Giannetti
+%
+\def\pgf@circ@bjt@C@anchor#1{% #1: collector number
+ \pgfextractx{\pgf@circ@res@temp}{\basedimension}
+ \pgfextracty{\pgf@circ@res@other}{\basedimension}
+ \ifnum\cdir>0 % NPN, above
+ \pgfpoint{\pgf@circ@res@temp}{%
+ \pgf@circ@res@other+\pgfverticaltransformationadjustment*.5*\pgflinewidth+(#1-1)*\multistep}
+ \else % PNP, below
+ \pgfpoint{\pgf@circ@res@temp}{%
+ -\pgf@circ@res@other-\pgfverticaltransformationadjustment*.5*\pgflinewidth-(#1-1)*\multistep}
+ \fi
+}
+\def\pgf@circ@bjt@E@anchor#1{% #1: collector number
+ \pgfextractx{\pgf@circ@res@temp}{\basedimension}
+ \pgfextracty{\pgf@circ@res@other}{\basedimension}
+ \ifnum\cdir<0 % PNP, above
+ \pgfpoint{\pgf@circ@res@temp}{%
+ \pgf@circ@res@other+\pgfverticaltransformationadjustment*.5*\pgflinewidth+(#1-1)*\multistep}
+ \else % PNP, below
+ \pgfpoint{\pgf@circ@res@temp}{%
+ -\pgf@circ@res@other-\pgfverticaltransformationadjustment*.5*\pgflinewidth-(#1-1)*\multistep}
+ \fi
+}
+
+\long\def\declarebjt#1{
+ \pgfdeclareshape{bjt#1}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{transistors}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ % \cdir is 1 for npn, -1 for pnp
+ \savedmacro{\cdir}{\edef\cdir{\ctikzvalof{tripoles/bjt/#1/curr direction}}}
+ \savedmacro{\numE}{\edef\numE{\ctikzvalof{tripoles/bjt/emitters}}}
+ \savedmacro{\numC}{\edef\numC{\ctikzvalof{tripoles/bjt/collectors}}}
+ % step up or down for the additional C/Es
+ \saveddimen{\multistep}{\pgfmathsetlength{\pgf@x}{%
+ \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
+ \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}}
+ \saveddimen{\external}{\pgfmathsetlength{\pgf@x}{%
+ \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}}
+ \savedanchor\basedimension{% these are the dimensions if nC=1 y nE=1
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\northeast{% upper right
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@step}{%
+ \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
+ \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \ifnum\cdir> 0
+ \edef\numup{\numC}\edef\numdown{\numE}
+ \else
+ \edef\numup{\numE}\edef\numdown{\numC}
+ \fi
+ \pgfmathsetlength{\pgf@y}{0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
+ + (\numup-1)*\pgf@circ@res@step+\pgfverticaltransformationadjustment*.5*\pgflinewidth
+ + \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\southeast{% lower right
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@step}{%
+ \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
+ \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \ifnum\cdir> 0
+ \edef\numup{\numC}\edef\numdown{\numE}
+ \else
+ \edef\numup{\numE}\edef\numdown{\numC}
+ \fi
+ \pgfmathsetlength{\pgf@y}{-0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
+ - (\numdown-1)*\pgf@circ@res@step-\pgfverticaltransformationadjustment*.5*\pgflinewidth
+ - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\southwest{% lower left
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@step}{%
+ \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
+ \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \ifnum\cdir> 0
+ \edef\numup{\numC}\edef\numdown{\numE}
+ \else
+ \edef\numup{\numE}\edef\numdown{\numC}
+ \fi
+ \pgfmathsetlength{\pgf@y}{-0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
+ - (\numdown-1)*\pgf@circ@res@step-\pgfverticaltransformationadjustment*.5*\pgflinewidth
+ - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{tripoles/bjt/width}*\pgf@circ@scaled@Rlen
+ - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\southwest\pgf@x=0cm\relax}
+ \anchor{west}{\southwest\pgf@y=0cm}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@ya=\pgf@y\southwest\pgf@y=\pgf@ya}
+ \anchor{south west}{\southwest}
+ \anchor{south east}{\southeast}
+
+ \anchor{text}{\northeast\pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax}
+ \anchor{B}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x\advance\pgf@x by -\external}
+ \anchor{base}{\basedimension\pgf@y=0cm\pgf@x=-\pgf@x\advance\pgf@x by -\external}
+ \anchor{nobase}{\basedimension\pgf@y=0cm\pgf@x=-\pgf@x}
+ % center of the base "bar"
+ \anchor{cbase}{\basedimension\pgf@x=-\pgf@x
+ \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
+ }
+ % geometrical centers
+ \anchor{vcenter}{\pgf@x=0cm\relax
+ \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
+ }
+ \anchor{gcenter}{%
+ \northeast\pgf@xa=0.5\pgf@x
+ \southwest\advance\pgf@xa by 0.5\pgf@x
+ \pgf@x=\pgf@xa
+ \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
+ }
+ % external connections
+ \anchor{E}{
+ \ifnum\cdir>0% npn, emitter down
+ \southeast
+ \else
+ \northeast
+ \fi
+ }% first emitter
+ \anchor{emitter}{\ifnum\cdir>0\southeast\else\northeast\fi}% first emitter
+ \anchor{C}{\ifnum\cdir<0\southeast\else\northeast\fi}
+ \anchor{collector}{\ifnum\cdir<0\southeast\else\northeast\fi}
+
+ \backgroundpath{
+ \pgftransformationadjustments
+ \pgfsetcolor{\ctikzvalof{color}}
+ %
+ % set the type and up and down number of connections
+ %
+ \ifnum\cdir> 0
+ \pgf@circuit@trans@ntypetrue
+ \edef\numup{\numC}
+ \edef\numdown{\numE}
+ \else
+ \pgf@circuit@trans@ntypefalse
+ \edef\numup{\numE}
+ \edef\numdown{\numC}
+ \fi
+ \basedimension
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \pgf@circ@res@left = -\pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\multistep
+ %
+ % set arrow positions options
+ %
+ \edef\@@anchor{center}\edef\@@pos{\ctikzvalof{tripoles/#1/arrow pos}}
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@pos{1.0}
+ \ifpgf@circuit@trans@ntype % arrow is toward outside, push it a bit
+ \edef\@@anchor{btip}
+ \else
+ \edef\@@anchor{tip}
+ \fi
+ \fi
+ %
+ % Drawing upper connections
+ %
+ \pgfscope
+ \pgf@circ@count@a=\numup\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \advance\pgf@circ@count@a-1\relax
+ \pgfmathsetlength{\pgf@circ@res@other}{\the\pgf@circ@count@a*\multistep}%
+ \ifnum\pgf@circ@count@a=\numexpr\numup-1\relax % draw the external pin connection
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\external+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
+ \pgfpathlineto{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
+ \fi
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@up+\pgf@circ@res@other}}%
+ \pgfsetroundcap % better when connecting to sloped lines
+ \pgfusepath{draw}
+ \ifpgf@circuit@trans@ntype\else % it's a PNP; draw arrow
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}%
+ }{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@up+\pgf@circ@res@other}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+ \repeatpgfmathloop
+ \endpgfscope
+ %
+ % Drawing base
+ %
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfsetroundcap % I like it more...
+ \pgfusepath{draw}
+ \endpgfscope
+ %
+ % draw base external connection
+ %
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-\external}{0pt}}
+ \pgfusepath{draw}
+ %
+ % Drawing lower connections
+ %
+ \pgfscope
+ \pgf@circ@count@a=\numdown\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \advance\pgf@circ@count@a-1\relax
+ \pgfmathsetlength{\pgf@circ@res@other}{\the\pgf@circ@count@a*\multistep}%
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint
+ {\pgf@circ@res@right}
+ {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other}}
+ \ifnum\pgf@circ@count@a=\numexpr\numdown-1\relax % draw the external pin connection
+ \pgfpathlineto{\pgfpoint
+ {\pgf@circ@res@right}
+ {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other-\external}}
+ \fi
+ \pgfsetroundcap % better when connecting to sloped lines
+ \pgfusepath{draw}
+ \ifpgf@circuit@trans@ntype % it's a NPN; draw arrow
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@down-\pgf@circ@res@other}%
+ }{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+ \repeatpgfmathloop
+ \endpgfscope
+ }
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@bjt#1\endcsname{%
+ % Start with the maximum collector number and go backwards.
+ \pgf@circ@count@a=\numC\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@bjt#1@C\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@bjt@C@anchor{\the\pgf@circ@count@a}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ % and emitters
+ \pgf@circ@count@a=\numE\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@bjt#1@E\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@bjt@E@anchor{\the\pgf@circ@count@a}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+ }
+}
+
+\declarebjt{npn}
+\declarebjt{pnp}
+
+% end of multi-bjts
+
+\long\def\declareigbt#1{
+ \pgfcircdeclaretransistor{#1}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/gate height}\pgf@y
+ }
+ }
+ {
+ %draw upper connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ %draw thicker gate lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %draw lower connection
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transistor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \ifpgf@circuit@trans@ntype
+ \edef\@@anchor{btip}\edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{tip}\edef\@@pos{1.0}
+ \fi
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.5}
+ \fi
+ \ifpgf@circuit@trans@ntype
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ %draw gate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}}
+ \fi
+ \pgfusepath{draw}
+ }
+}
+
+\declareigbt{pigbt}
+\declareigbt{nigbt}
+\declareigbt{Lnigbt}
+\declareigbt{Lpigbt}
+
+\pgfcircdeclaretransistor{nmos}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/nmos/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/nmos/gate height}\pgf@y
+ }
+ }{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \ifpgf@circuit@trans@arrowatend
+ \pgftransformshift{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{trarrow}{btip}{}{}{\pgfusepath{stroke}}
+ \else
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\ctikzvalof{tripoles/nmos/arrow pos}}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \fi
+ \endpgfscope
+ \fi
+
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+
+ \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+}
+
+\pgfcircdeclaretransistor{pmos}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/pmos/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/pmos/gate height}\pgf@y
+ }
+ }{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \ifpgf@circuit@trans@arrowatend
+ \pgftransformshift{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }
+ \pgftransformrotate{180}
+ \pgfnode{trarrow}{tip}{}{}{\pgfusepath{stroke}}
+ \else
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\ctikzvalof{tripoles/pmos/arrow pos}}{%
+ \pgfpoint%
+ {\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \fi
+ \endpgfscope
+ \fi
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+
+
+ \pgfusepath{draw}
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+
+ \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+
+ \ifpgf@circuit@pmos@nocircle\else
+ % we are not scaling the circle with the MOS --- I think it's better to have it
+ % coherent with the poles/nodes of the rest of the circuit.
+ \pgfpathcircle{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left - \ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \ifpgf@circuit@pmos@emptycircle
+ \pgfsetfillcolor{white}
+ \fi
+ \pgfusepath{draw,fill}
+ \fi
+}
+
+%% HEMT FET Transistor
+\pgfcircdeclaretransistor{hemt}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/hemt/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/hemt/gate height}\pgf@y
+ }
+ }{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/hemt/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/hemt/base height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+\long\def\drawfetcore#1{
+ \pgftransformationadjustments
+ %top connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
+ \ifpgf@circuit@trans@depletiontype
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \else
+
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up*0.45}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up*0.25}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down*0.25}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \fi
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %Bulk connection line
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ %bottom connection
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ %draw thick gate line
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ % arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \ifpgf@circuit@trans@ntype
+ \edef\@@anchor{tip}
+ \edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{btip}
+ \edef\@@pos{0.0}
+ \fi
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.6}
+ \fi
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \ifpgf@circuit@trans@ntype
+ \else
+ \pgftransformrotate{180}
+ \fi
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+% GATE CONNECTION
+\ifpgf@circuit@bpt@drawgate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {-\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+\fi
+
+}
+
+\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
+{\pgfcircdeclaretransistor{#1}{
+ \anchor{bulk}{\left\pgf@x=0pt}
+ \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/gate height}\pgf@y
+ }
+ #2
+ }
+ {#3}
+}
+
+\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nfet}
+}
+
+\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pfet}
+}
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfete}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+\fi
+}
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
+\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfetebulk}
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+% N-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{nigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfete}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/pigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
+\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfetebulk}
+}
+
+% P-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{pigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+\pgfcircdeclaretransistor{njfet}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/njfet/gate height 2}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/njfet/gate height 2}\pgf@y
+ }
+ }{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ % arrow
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{tip}\edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.6}
+ \fi
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclaretransistor{pjfet}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@y
+ }
+ }{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{btip}\edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.4}
+ \fi
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+\pgfdeclaretransistorwrapperaddbulk{isfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ % DRAIN CONNECTION
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@up}}
+ % DRAIN
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % GATE, DEPLETION TYPE
+ \pgfscope %% added
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/isfet/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/isfet/base height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth} %% added
+ \pgfusepath{draw} %% added
+ \endpgfscope %% added
+
+ % BULK
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ % SOURCE
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@down}}
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+ % ARROW
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{tip}\edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.6}
+ \fi
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfusepath{draw}
+
+ % Wavy lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% end of transistors
+
+%%%%%%%%%%%%%
+%% Switches
+%%%%%%%%%%%%%
+
+\pgfcircdeclarebipole{
+ \anchor{out 1}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{out 2}{
+ \northeast
+ \pgf@y=.8\pgf@y
+ }
+}
+{\ctikzvalof{tripoles/toggleswitch/height 2}}
+{toggleswitch}
+{\ctikzvalof{tripoles/toggleswitch/height}}
+{\ctikzvalof{tripoles/toggleswitch/width}}
+{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetdash{}{0cm}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% operational and instrumentation amplifiers
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{op amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ % Triangle
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Output terminal
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@right}{0pt}}
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+% Op amp shape as in european standard EN 60617
+\pgfdeclareshape{en amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{up}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{down}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/en amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+
+ \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\hbox{\ctikzvalof{tripoles/en amp/font2}\ctikzvalof{tripoles/en amp/text}}}
+ % \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font2}$\mathstrut{\triangleright}\,\mathrm{A}$}
+ }
+}
+
+% Fully differential output op amp
+% Contributed by Kristofer M. Monisit
+\pgfdeclareshape{fd op amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\outline{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y\pgf@x=0pt\relax
+ }
+ \anchor{north}{
+ \northwest\pgf@x=0pt\relax
+ }
+ \savedanchor\left{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/fd op amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out up}{
+ \northwest
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{out down}{
+ \northwest
+ \pgf@y=-\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{out +}{
+ \outline
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{out -}{
+ \outline
+ \pgf@y=-\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bout +}{
+ \outline
+ \pgf@xa=\pgf@x\pgf@ya=\pgf@y
+ \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+ {\pgfpoint{\pgf@xa}{0pt}}
+ {\pgfpoint{0pt}{\pgf@ya}}
+ }
+ \anchor{bout -}{
+ \outline
+ \pgf@xa=\pgf@x\pgf@ya=\pgf@y
+ \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+ {\pgfpoint{\pgf@xa}{0pt}}
+ {\pgfpoint{0pt}{\pgf@ya}}
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bout up}{
+ \northwest
+ \pgf@xa=\pgf@x\pgf@ya=\pgf@y
+ \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+ {\pgfpoint{\pgf@xa}{0pt}}
+ {\pgfpoint{0pt}{\pgf@ya}}
+ }
+ \anchor{bout down}{
+ \northwest
+ \pgf@xa=\pgf@x\pgf@ya=\pgf@y
+ \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+ {\pgfpoint{\pgf@xa}{0pt}}
+ {\pgfpoint{0pt}{\pgf@ya}}
+ \pgf@y=-\pgf@y
+ }
+ % end border anchors
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{out}{% should not be used
+ \left
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x \pgf@y=-\pgf@y }
+ \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ % Triangle
+ % Includes output terminals in the traingular shape
+ % to ensure that diagonal joins are properly displayed
+ % we first draw the main triangle and the leads with normal thickness,
+ % and the redraw the main triangle with the component shape
+ \pgfscope
+ % shift origin a bit to ease calculations
+ \pgftransformxshift{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@step
+
+ % Initial point (right vertex)
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+
+ % Negative output terminal
+ \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\ctikzvalof{tripoles/fd op amp/output height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@up}}}
+
+ % Top vertex
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+
+ % Bottom vertex
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+
+ % Positive output terminal
+ \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@down}}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\ctikzvalof{tripoles/fd op amp/output height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@down}}}
+
+ % Right vertex
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+
+ \pgfpathclose
+ \pgfusepath{stroke}
+
+ % ok, now we'll redraw the triangle with the class specific
+ % thickness and optionally fill
+
+ \pgfscope
+ \pgf@circ@setlinewidth{quadpoles}{\pgflinewidth}
+
+ % Initial point (right vertex)
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ % Top vertex
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ % Bottom vertex
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope % thick and fill
+ \endpgfscope % shift
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Negative output terminal label
+ \pgftext[right, bottom, x=3pt, y=1pt, at=\pgfpoint{0pt}{0.425\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@oplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Positive output terminal label
+ \pgftext[right, top, x=3pt, y=-1pt, at=\pgfpoint{0pt}{0.425\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@oplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+
+% Instrumentation amplifier with differential output
+\pgfdeclareshape{fd inst amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ % when tikz calls the anchor it wants the relative position in the lengths
+ % \pgf@x \pgf@y
+ % \pgfpoint* functions set that variables
+ % anchors are visible outside and run on use
+ \anchor{center}{\pgfpointorigin}
+ % savedanchors are internals and run on node creation (not use)
+ % bounding-box top left
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{nw}{
+ \northwest
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y\pgf@x=0pt\relax
+ }
+ \anchor{north}{
+ \northwest\pgf@x=0pt\relax
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \ctikzvalof{tripoles/fd inst amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/fd inst amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ % reference voltage input anchors.
+ \savedanchor\refv{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/fd inst amp/refv pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
+ }
+ % we need both because they are normally drawn under the amp, and if you
+ % mirror it vertically you need them
+ \anchor{refv up}{
+ \refv
+ }
+ \anchor{refv down}{
+ \refv
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\outport{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
+ }
+ \anchor{out}{
+ \outport
+ \pgf@y=0pt
+ }
+ \anchor{out +}{
+ \outport
+ }
+ \anchor{out -}{
+ \outport
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\outportfixed{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ }
+ \anchor{out up}{
+ \outportfixed
+ }
+ \anchor{out down}{
+ \outportfixed
+ \pgf@y=-\pgf@y
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/fd inst amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@x=-\pgf@x \pgf@y=0pt
+ }
+ \anchor{bout +}{
+ \outport
+ \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
+ }
+ \anchor{bout -}{
+ \outport
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
+ }
+ \anchor{bout up}{
+ \outportfixed
+ \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
+ }
+ \anchor{bout down}{
+ \outportfixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
+ }
+ % end border anchors
+ %
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ % let's start drawing the component
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ %
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ % main component, normally in thicker lines
+ \pgfscope
+ \newdimen\pgf@circ@res@right@double
+ \pgf@circ@res@right@double=2\pgf@circ@res@right
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@step
+ %first point (near output)
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{0}}
+ %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
+ % and then to the input "front up", "down", to the output short side "down"
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@down}}
+ % ...and close
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ % input terminal up
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % input terminal down
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % output leads down and up
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}} %
+ \pgftext[right, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$-\;$\else$+\;$\fi}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}} %
+ \pgftext[right, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$+\;$\else$-\;$\fi}
+ %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+% Transconductance amplifier (Transkonduktanzverstรคrker)
+\pgfdeclareshape{gm amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/gm amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/gm amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/gm amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/gm amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgfscope
+ \newdimen\pgf@circ@res@right@double
+ \pgf@circ@res@right@double=2\pgf@circ@res@right
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@step
+ %Umrandung:
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{0}} %geรคndert startpunkt neu am ausgangsstrich
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@up}}%vom Ausgang nach oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@down}}%ecke links unten nach rechts unten
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right}{0pt}} %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+ }
+}
+
+% Instrumentation amplifier
+\pgfdeclareshape{inst amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ % when tikz calls the anchor it wants the relative position in the lengths
+ % \pgf@x \pgf@y
+ % \pgfpoint* functions set that variables
+ % anchors are visible outside and run on use
+ \anchor{center}{\pgfpointorigin}
+ % savedanchors are internals and run on node creation (not use)
+ % bounding-box top left
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{nw}{
+ \northwest
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/inst amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ % reference voltage input anchors.
+ \savedanchor\refv{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/inst amp/refv pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
+ }
+ % we need both because they are normally drawn under the amp, and if you
+ % mirror it vertically you need them
+ \anchor{refv up}{
+ \refv
+ }
+ \anchor{refv down}{
+ \refv
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/inst amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ % let's start drawing the component
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ %
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ % main component, normally in thicker lines
+ \pgfscope
+ \newdimen\pgf@circ@res@right@double
+ \pgf@circ@res@right@double=2\pgf@circ@res@right
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@step
+ %first point (near output)
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{0}}
+ %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
+ % and then to the input "front up", "down", to the output short side "down"
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@down}}
+ % ...and close
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Output terminal
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{0pt}} %
+ %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+% Instrumentation amplifier with terminals for gain resistance between inputs
+\pgfdeclareshape{inst amp ra}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ % bounding-box top left
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{nw}{
+ \northwest
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y\pgf@x=0pt\relax
+ }
+ \anchor{north}{
+ \northwest\pgf@x=0pt\relax
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
+ }
+ % inputs (+-)
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ % R ampli anchors. They are by default at 20% more than R-length distance
+ % you can change that with the `ra pos` key (use 0.5 for one-R).
+ \savedanchor\raOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\pgf@circ@scaled@Rlen
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{ra up}{
+ \raOneFixed
+ }
+ \anchor{ra down}{
+ \raOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\raOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\pgf@circ@scaled@Rlen
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{ra-}{
+ \raOne
+ }
+ \anchor{ra+}{
+ \raOne
+ \pgf@y=-\pgf@y
+ }
+ % power supplies
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/inst amp ra/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ % reference voltage input anchors.
+ \savedanchor\refv{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=0.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=0.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/inst amp ra/refv pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
+ }
+ % we need both because they are normally drawn under the amp, and if you
+ % mirror it vertically you need them
+ \anchor{refv up}{
+ \refv
+ }
+ \anchor{refv down}{
+ \refv
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/inst amp ra/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bra up}{
+ \raOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bra down}{
+ \raOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bra-}{
+ \raOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bra+}{
+ \raOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ % drawing of the component
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \newdimen\pgf@circ@res@right@double
+ \pgf@circ@res@right@double=2\pgf@circ@res@right
+
+ % main component, normally in thicker lines
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@step
+ %primer punto: la linea de salida (lado componente)
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{0}}
+ %from the exit to the top (short side)... (note that the .6 must be copied in \up anchor
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
+ % and then to the input "front up", "down", to the output short side "down"
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@down}}
+ % ...and close
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ % ra terminal -
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+ % ra terminal +
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {-\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {-\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}}
+ %
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Output terminal
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{0pt}} %
+ %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+% Buffer
+% Contributed by Danilo Piazzalunga
+\pgfdeclareshape{buffer}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/buffer/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/buffer/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+
+ \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+ }
+}
+
+% plain amplifier, no symbols
+\pgfdeclareshape{plain amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/plain amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/plain amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/plain amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/plain amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@up}}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+ }
+}
+
+% plain amplifier, no symbols, one input
+\pgfdeclareshape{plain mono amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt\relax
+ }
+ \anchor{in}{
+ \inOne
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/plain amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/plain amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+ }
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% electromechanical device (motor/generator)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{elmech}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{electromechanicals}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/elmech/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/elmech/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{%
+ \@tempdima=\pgf@x\@tempdimb=\pgf@y
+ \northwest\pgf@circ@res@other=-\pgf@x
+ \pgfpointborderellipse{\pgfqpoint{\@tempdima}{\@tempdimb}}{\pgfqpoint{\pgf@circ@res@other}{\pgf@circ@res@other}}
+ }
+ \anchor{block north west}{\northwest\pgf@x=0.5\pgf@x}
+ \anchor{block south west}{\northwest\pgf@x=0.5\pgf@x\pgf@y=-\pgf@y}
+ \anchor{block north east}{\northwest\pgf@x=-0.5\pgf@x}
+ \anchor{block south east}{\northwest\pgf@x=-0.5\pgf@x\pgf@y=-\pgf@y}
+ \anchor{block up right}{
+ \northwest
+ % remember that pgf@x is negative
+ % center of the block is at 0.5*H+W*cos(30)/2
+ \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
+ \pgf@x=-0.5\pgf@x
+ }
+ \anchor{block up left}{
+ \northwest
+ % remember that pgf@x is negative
+ % center of the block is at 0.5*H+W*cos(30)/2
+ \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
+ \pgf@x=0.5\pgf@x
+ }
+ \anchor{block down right}{
+ \northwest
+ % remember that pgf@x is negative
+ % center of the block is at 0.5*H+W*cos(30)/2
+ \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
+ \pgf@y=-\pgf@y
+ \pgf@x=-0.5\pgf@x
+ }
+ \anchor{block down left}{
+ \northwest
+ % remember that pgf@x is negative
+ % center of the block is at 0.5*H+W*cos(30)/2
+ \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
+ \pgf@y=-\pgf@y
+ \pgf@x=0.5\pgf@x
+ }
+ \behindbackgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope % clip the bar: whole size minus the circle
+ \pgfpathrectanglecorners{\pgfpoint{-.5\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{\ctikzvalof{color}}
+ \pgfusepath{fill, draw}
+ \endpgfscope
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{white}
+ % ...but override it if the class is defined!
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{draw, fill}
+ \fi
+ \endpgfscope
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%
+%% Magnetron
+%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{magnetron}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}} % class of these components
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{anode}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{cathode1}{
+ \northwest
+ \pgf@circ@res@step=\pgf@y
+ \pgfmathparse{cos(105)}
+ \pgf@x=\pgfmathresult\pgf@circ@res@step
+ \pgfmathparse{sin(105)}
+ \pgf@y=\pgfmathresult\pgf@circ@res@step
+ %\pgfpointorigin
+ %\pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
+ }
+ \anchor{cathode2}{
+ \northwest
+ \pgf@circ@res@step=\pgf@y
+ \pgfmathparse{cos(75)}
+ \pgf@x=\pgfmathresult\pgf@circ@res@step
+ \pgfmathparse{sin(75)}
+ \pgf@y=\pgfmathresult\pgf@circ@res@step
+ %\pgfpointorigin
+ %\pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfmathsetlength{\pgf@circ@res@other}{sin(15)*\pgf@circ@res@up}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ %create outer circle
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@right}
+ \pgf@circ@draworfill
+ %create chambers
+ \foreach \angle in {45,135,225,315}{
+ \pgfpathmoveto{ \pgfpointpolar{\angle}{0.6\pgf@circ@res@right}}
+ \pgfpathlineto{ \pgfpointpolar{\angle}{\pgf@circ@res@right}}
+ }
+ \pgfsetroundcap
+ \pgfusepath{draw}
+ \pgfscope
+ %draw connection from outside
+ %anode
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ %cathodes
+ \pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ %create cathode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.15\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ %create anode
+ \pgfpathmoveto{\pgfpoint{0.3\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Electronic tubes, submitted by J. op den Brouw
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Draw tube outline
+\def\pgf@circ@tubes@drawtube{%
+ \ifdim\ctikzvalof{tubes/width}pt>\ctikzvalof{tubes/height}pt\relax
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfutil@tempdima=\pgf@circ@res@right
+ \advance\pgfutil@tempdima by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgfutil@tempdima}{\pgf@circ@res@up}}
+ \pgfpatharc{90}{-90}{\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{-\pgfutil@tempdima}{-\pgf@circ@res@up}}
+ \pgfpatharc{270}{90}{\pgf@circ@res@up}
+ \else
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{0pt}}
+ \pgfutil@tempdima=\pgf@circ@res@up
+ \advance\pgfutil@tempdima by -\pgf@circ@res@right
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
+ \pgfpatharc{180}{0}{\pgf@circ@res@right}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfutil@tempdima}}
+ \pgfpatharc{180}{0}{-\pgf@circ@res@right}
+ \fi
+ \pgfpathclose
+}
+
+%% The diode (tube), triode, tetrode and pentode only differ in the
+%% number of grids. So we construct a generic declare function in
+%% which we can put code for the grid anchors and grid drawing code
+%% \pgfcircdeclaretube{tube name}{grid anchors}{grid drawing code}
+\long\def\pgfcircdeclaretube#1#2#3{%
+ \pgfdeclareshape{#1}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
+ % x and y should be half the Rlen
+ \pgf@y=\pgf@circ@res@up
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgf@circ@res@right
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{north} {%
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{east}{%
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{south}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{west}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{north west}{%
+ \northwest
+ }
+ \anchor{north east}{%
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{anode} {%
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{cathode}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
+ }
+ \anchor{cathode 1}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
+ }
+ \anchor{cathode 2}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=-\ctikzvalof{tubes/cathode width}\pgf@x
+ }
+ \anchor{filament 1}{%
+ \northwest
+ \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgf@x=\pgfmathresult\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{filament 2}{%
+ \northwest
+ \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgf@x=-\pgfmathresult\pgf@x
+ \pgf@y=-\pgf@y
+ }
+
+ % Extra anchors
+ #2
+
+ \backgroundpath{
+ \pgfscope
+ % Line width for tripoles
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ % Setup to draw tube
+ \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up=\ctikzvalof{tubes/tube radius}\pgf@circ@res@up
+ \pgf@circ@res@right=\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+
+ % Tube outline
+ \pgf@circ@tubes@drawtube
+
+ % Setup to draw grid, filament, anode and cathode
+ \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up=0.5\pgf@circ@res@up
+ \pgf@circ@res@right=0.5\pgf@circ@res@right
+
+ % Tube fill color (if any)
+ \pgf@circ@draworfill
+
+ % Grid drawing
+ #3
+
+ % Filament (is not drawn by default)
+ \ifpgf@circuit@tubes@filament
+ \pgf@circ@res@temp=-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up
+ \advance\pgf@circ@res@temp by -\ctikzvalof{tubes/filament distance}\pgf@circ@res@up
+ \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgf@xa=\pgfmathresult\pgf@circ@res@right
+ \pgfmathparse{\ctikzvalof{tubes/tube radius}+\ctikzvalof{tubes/tube radius}*cos(\ctikzvalof{tubes/filament angle}}
+ \pgf@ya=\pgfmathresult\pgf@circ@res@up
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@ya}}
+ \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@ya}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@circ@res@up}}
+ \pgf@circuit@tubes@filamentfalse
+ \fi
+
+ % Anode (or plate)
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}} % north
+ \pgfpathlineto{\pgfpoint{0pt}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
+
+ % Cathode
+ \ifpgf@circuit@tubes@nocathode
+ \pgf@circuit@tubes@nocathodefalse
+ \else
+ \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
+ \ifpgf@circuit@tubes@fullcathode
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
+ \pgf@circuit@tubes@fullcathodefalse
+ \else
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-\ctikzvalof{tubes/cathode right extend}\pgf@circ@res@up}}
+ \fi
+ \fi
+
+ % Draw the background
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+}
+
+\pgfcircdeclaretube{diodetube}{}{} % shape diode already exists
+
+\pgfcircdeclaretube{triode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+ \anchor{control} {%
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+}
+{
+ % Grid protrusion
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+}
+
+\pgfcircdeclaretube{tetrode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{screen} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+}
+{
+ % Grid x/y points
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
+ \pgfutil@tempdimb=-\pgfutil@tempdima
+ \pgfutil@tempdima=0.5\pgfutil@tempdima
+ \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \pgfutil@tempdimb=0.5\pgfutil@tempdimb
+ \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ % Grid protrusion
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+}
+
+\pgfcircdeclaretube{pentode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{screen} {%
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+ \anchor{suppressor} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+}
+{
+ % Grid x/y points
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
+ \pgfutil@tempdimb=-\pgfutil@tempdima
+ \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ % Grid protrusion
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+}
+
+\pgfcircdeclaretube{pentode suppressor to cathode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{screen} {%
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+}
+{
+ % Grid x/y points
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
+ \pgfutil@tempdimb=-\pgfutil@tempdima
+ \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ % Grid protrusion
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \ifnum\pgf@circ@count@a>1\relax
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
+ \fi
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+ % Grid: connection from suppressor to cathode
+ \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima-2*\ctikzvalof{tubes/grid separation}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
+
+}
+
+%%%---------- close: tex/pgfcirctripoles
+%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
+%%%---------- open: tex/pgfcircquadpoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Quadripoles
+
+\long\def\pgfcircdeclarequadpole#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{inductors}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedmacro{\stretto}{\def\stretto{\ctikzvalof{quadpoles/#1/inner}}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{quadpoles/#1/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=.5\pgf@circ@scaled@Rlen
+ \pgf@x=-\ctikzvalof{quadpoles/#1/width}\pgf@x
+ }
+ %% we define the upper right (positive coord) dot (which is B1)
+ \savedanchor{\innerdot}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@xa=.5\pgf@circ@scaled@Rlen
+ \pgf@xa=-\ctikzvalof{quadpoles/#1/width}\pgf@xa
+ % by default use the cute inductor size
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@scaled@Rlen/2}
+ % check if it's american
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}
+ \edef\pgf@temp{american}
+ \ifx\pgf@circ@temp\pgf@temp
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/americaninductor/height}*\pgf@circ@scaled@Rlen/2}
+ \fi
+ % check if it's european
+ \edef\pgf@temp{european}
+ \ifx\pgf@circ@temp\pgf@temp
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/fullgeneric/height}*\pgf@circ@scaled@Rlen/2}
+ \fi
+ \pgfmathsetlength\pgf@y{0.5*\pgf@circ@scaled@Rlen}
+ }
+ \savedanchor{\outerdot}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@xa=.5\pgf@circ@scaled@Rlen
+ \pgf@xa=-\ctikzvalof{quadpoles/#1/width}\pgf@xa
+ % by default use the cute inductor size
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@scaled@Rlen/2}
+ % check if it's american
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}
+ \edef\pgf@temp{american}
+ \ifx\pgf@circ@temp\pgf@temp
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/americaninductor/height}*\pgf@circ@scaled@Rlen/2}
+ \fi
+ % check if it's european
+ \edef\pgf@temp{european}
+ \ifx\pgf@circ@temp\pgf@temp
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/fullgeneric/height}*\pgf@circ@scaled@Rlen/2}
+ \fi
+ \pgfmathsetlength\pgf@y{0.5*\pgf@circ@scaled@Rlen}
+ }
+ \anchor{A2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{A1}{
+ \northwest
+ }
+ \anchor{B2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ %% dot's anchors
+ \anchor{inner dot A1}{\innerdot\pgf@x=-\pgf@x}
+ \anchor{outer dot A1}{\outerdot\pgf@x=-\pgf@x}
+ \anchor{inner dot A2}{\innerdot\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{outer dot A2}{\outerdot\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{inner dot B1}{\innerdot}
+ \anchor{outer dot B1}{\outerdot}
+ \anchor{inner dot B2}{\innerdot\pgf@y=-\pgf@y}
+ \anchor{outer dot B2}{\outerdot\pgf@y=-\pgf@y}
+ % geographical
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{base}{
+ \northwest
+ \pgf@x=0pt
+ }
+ #3
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ #2
+ }
+ }
+}
+
+
+\def\pgf@circ@drawtransformerbasicanchor{
+ \ctikzvalof{quadpoles/trans/height}
+ \anchor{AA2}{
+ \northwest
+ \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{AA1}{
+ \northwest
+ \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
+ }
+}
+
+%% Null styles that can be used to change individually the L1 and L2
+%% inductors of the transformer.
+
+\ctikzset{transformer L1/.style={}}
+\ctikzset{transformer L2/.style={}}
+
+\def\pgf@circ@drawtransformerbasicbody{
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@down}%
+ }
+
+ \pgfkeys{\circuitikzbasekey/.cd, transformer L1}
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+
+ \endpgfscope
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@up}%
+ }
+
+ \pgfkeys{\circuitikzbasekey/.cd, transformer L2}
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{\thisshape-L1}{b}}
+
+ \pgfpathmoveto{\pgfpointanchor{\thisshape-L1}{a}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{\thisshape-L2}{a}}
+
+ \pgfpathmoveto{\pgfpointanchor{\thisshape-L2}{b}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+}
+
+
+\pgfcircdeclarequadpole{transformer}{
+ \pgf@circ@drawtransformerbasicbody
+}{\pgf@circ@drawtransformerbasicanchor}
+
+\pgfcircdeclarequadpole{transformer core}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+ % use the chocke line thickness
+ \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
+
+ % Find the distance from center for the lines representing the core
+ % the 2.5 is for backward compatibility --- the distance was calculated as a fraction
+ % of the whole component, now as a fraction of the distance between coils, to be
+ % compatible with the quadpoles "inner" style.
+ \pgfmathsetlength{\pgf@circ@res@other}{2.5*\stretto*\ctikzvalof{quadpoles/transformer core/core width}*\pgf@circ@res@right}
+
+ \pgfmoveto{\pgfpoint%
+ {\pgf@circ@res@other}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint%
+ {\pgf@circ@res@other}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ %% this should be just -\pgf@circ@res@other, but in case someone define an asymmetric trafo someday...
+ \pgfmathsetlength{\pgf@circ@res@other}{2.5*\stretto*\ctikzvalof{quadpoles/transformer core/core width}*\pgf@circ@res@left}
+ \pgfmoveto{\pgfpoint%
+ {\pgf@circ@res@other}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint%
+ {\pgf@circ@res@other}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgfusepath{draw}
+}{\pgf@circ@drawtransformerbasicanchor}
+
+
+\pgfcircdeclarequadpole{gyrator}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{quadpoles}{\pgflinewidth}
+ \pgfmathsetlength{\pgf@circ@res@other}{min(.7*\stretto*\pgf@circ@res@up, .8*\pgf@circ@res@right)} % radius
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{-\pgf@circ@res@other}}
+ \pgfpatharc{-90}{90}{\pgf@circ@res@other}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpatharc{90}{270}{\pgf@circ@res@other}
+ \pgfpathclose
+ \pgf@circ@draworfill
+}{}
+
+%%%%%%%%%%%%%%%%%%%%
+%% Block elements
+%%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{mixer}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@boxed
+ \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{adder}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@boxed
+ \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{oscillator}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@boxed
+ \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \else
+ \pgf@y=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y}
+ \anchor{north east}{ \northwest \pgf@x=0pt\relax}
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{text}{
+ \pgf@x=-2\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen{}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
+
+ % draw outer box
+ \ifpgf@circuit@boxed{}
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{circulator}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@boxed
+ \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed{}
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % inner arrow
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
+ \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+ }
+
+
+% Wilkinson divider
+\pgfdeclareshape{wilkinson}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/wilkinson/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\ctikzvalof{tripoles/wilkinson/width}\pgf@x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{out2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ % draw inner resisitor - european or american style is recognised
+ {
+ \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgftransformrotate{90}
+
+ % calculate size of resistor
+ \ifpgf@circuit@europeanresistor
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{genericshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{resistorshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
+ \fi
+ }
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{wilk@int@R}{right}}
+
+ \pgfpathmoveto{\pgfpointanchor{wilk@int@R}{left}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+
+%% couplers generics
+\long\def\pgfcircdeclarefourport#1#2{
+
+ \pgfdeclareshape{#1}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{quadpoles/#1/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=.5\pgf@circ@scaled@Rlen
+ \pgf@x=-\ctikzvalof{quadpoles/#1/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{port1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{port4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+
+ % draw inner stuff
+ #2
+
+ % draw inner text
+ \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+ }
+ }
+}
+
+% four-port
+\pgfcircdeclarefourport{fourport}{}
+
+% straight coupler
+\pgfcircdeclarefourport{coupler}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+}
+
+% "bended" coupler
+\pgfcircdeclarefourport{coupler2}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%%%---------- close: tex/pgfcircquadpoles
+%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
+%%%---------- open: tex/pgfcircmultipoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Multipoles by Romano Giannetti
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%
+%% Chips
+%%%%%%%%%
+
+% let's use the same shifts everywhere, no magic numbers
+\def\pgf@circ@dip@pin@shift{0.5}
+\def\pgf@circ@qfp@pin@shift{0.25}
+
+% derived from https://tex.stackexchange.com/a/146753/38080
+% original author Mark Wibrow
+% Thanks also to John Kormylo https://tex.stackexchange.com/a/372996/38080
+% a lot of thanks to @marmot for the un-rotation hint
+% https://tex.stackexchange.com/a/473571/38080
+
+% DIP (dual in line package) chips
+
+\pgfdeclareshape{dipchip}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{chips}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro\numpins{%
+ \pgf@circ@count@a=\ctikzvalof{multipoles/dipchip/num pins}%
+ \def\numpins{\the\pgf@circ@count@a}
+ }
+ \savedanchor\centerpoint{%
+ \pgf@x=-.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \savedanchor\origin{\pgfpoint{0pt}{0pt}}
+ \anchor{center}{\origin}
+ \anchor{text}{\centerpoint}% to adjust text
+ \saveddimen\height{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{((\numpins)
+ *\ctikzvalof{multipoles/dipchip/pin spacing})*\pgf@circ@scaled@Rlen/2}%
+ }%
+ \saveddimen{\chipspacing}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/pin spacing}}}
+ \saveddimen{\width}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/width}}}
+ \saveddimen{\extshift}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
+ % standard anchors
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{0.5*((\numpins)
+ *\ctikzvalof{multipoles/dipchip/pin spacing})*\pgf@circ@scaled@Rlen/2}%
+ \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/width}}
+ }
+ \anchor{dot}{\northwest
+ \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
+ \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ % start drawing
+ \backgroundpath{%
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step = \ctikzvalof{multipoles/dipchip/pin spacing}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
+ \pgfscope% (for the line width)
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
+ \pgf@circ@draworfill
+ %% upside mark
+ \ifpgf@circuit@chip@topmark
+ \pgfpathmoveto{\pgfpoint{0.2*\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpatharc{0}{180}{0.2*\pgf@circ@res@left}
+ \fi
+ \pgfusepath{stroke}%
+ \pgfsetcolor{\ctikzvalof{color}}
+ % Adding the pin number
+ \ifpgf@circuit@chip@shownumbers
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
+ \ifpgf@circuit@chip@straightnumbers
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
+ \else
+ \pgfmathsetmacro{\rot}{0}
+ \pgfmathsetmacro{\quadrant}{0}
+ \fi
+ \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
+ \def\mytext{\ctikzvalof{multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \ifcase\quadrant % rotation 0
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \fi
+ \endpgfscope
+ \ifdim\pgf@circ@res@other>0pt
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \edef\padfrac{\ctikzvalof{multipoles/external pad fraction}}
+ \ifnum\padfrac>0
+ \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
+ % left side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % right side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \else
+ % left side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % right side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{stroke}
+ \endpgfscope
+ \fi
+ }%
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@dipchip{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\numpins\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@dipchip@pin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@dipchip@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+ }
+
+% QFP (quad flat package) chips
+
+\pgfdeclareshape{qfpchip}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{chips}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro\numpins{%
+ \pgf@circ@count@a=\ctikzvalof{multipoles/qfpchip/num pins}%
+ \def\numpins{\the\pgf@circ@count@a}
+ }
+ \savedanchor\centerpoint{%
+ \pgf@x=-.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \savedanchor\origin{\pgfpoint{0pt}{0pt}}
+ \anchor{center}{\origin}
+ \anchor{text}{\centerpoint}% to adjust text
+ \saveddimen\height{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{((\numpins+2)
+ *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
+ }%
+ \saveddimen\width{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{((\numpins+2)
+ *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
+ }%
+ \saveddimen{\chipspacing}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/qfpchip/pin spacing}}}
+ \saveddimen{\extshift}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
+ % standard anchors
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{0.5*((\numpins+2)
+ *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
+ \pgf@x=-\pgf@y
+ }
+ \anchor{dot}{\northwest
+ \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
+ \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ % start drawing
+ \backgroundpath{%
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step = \ctikzvalof{multipoles/qfpchip/pin spacing}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
+ \pgfscope% (for the line width)
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ %% upside mark
+ \ifpgf@circuit@chip@topmark
+ \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2-\pgf@circ@res@step/2}}
+ \pgfpathlineto{\pgfpoint{-\width/2+\pgf@circ@res@step/2}{\height/2}}
+ \else
+ \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2}}
+ \fi
+ %% rest of the shape
+ \pgfpathlineto{\pgfpoint{\width/2}{\height/2}}
+ \pgfpathlineto{\pgfpoint{\width/2}{-\height/2}}
+ \pgfpathlineto{\pgfpoint{-\width/2}{-\height/2}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ % Adding the pin number
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifpgf@circuit@chip@shownumbers
+ \pgf@circ@count@a=\numpins%
+ \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
+ % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
+ \ifpgf@circuit@chip@straightnumbers
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
+ \else
+ \pgfmathsetmacro{\rot}{0}
+ \pgfmathsetmacro{\quadrant}{0}
+ \fi
+ \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
+ \def\mytext{\ctikzvalof{multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \ifcase\quadrant % rotation 0
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \fi
+ \endpgfscope
+ \ifdim\pgf@circ@res@other>0pt
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins%
+ \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \edef\padfrac{\ctikzvalof{multipoles/external pad fraction}}
+ \ifnum\padfrac>0
+ \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
+ % left side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % bottom side pads
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
+ % right side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % top side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \else
+ % left side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % bottom side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ % right side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % top side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{stroke}
+ \endpgfscope
+ \fi
+ }%
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@qfpchip{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\numpins%
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \expandafter\xdef\csname pgf@anchor@qfpchip@pin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@qfpchip@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop%
+ }%
+ }
+
+%% anchors for DIP
+\def\pgf@circ@dippinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \c@pgf@countc=\numpins\relax
+ \divide\c@pgf@countc by 2
+ \ifnum #1 > \the\c@pgf@countc
+ % right side
+ \pgfpoint{\width/2+#2*\extshift}{-\height/2+(\pgf@circ@dip@pin@shift-\c@pgf@countc+#1-1)*\chipspacing}
+ \else
+ \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@dip@pin@shift-#1)*\chipspacing}
+\fi
+}
+
+%% anchors for QFP
+\def\pgf@circ@qfppinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \c@pgf@countc=\numpins\relax
+ \divide\c@pgf@countc by 4
+ \ifnum #1 > \the\c@pgf@countc
+ \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 2
+ \ifnum #1 > \the\c@pgf@countb
+ \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 3
+ \ifnum #1 > \the\c@pgf@countb
+ % 3*npins/4 < pin, top side
+ \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift+\c@pgf@countb-#1)*\chipspacing}{\height/2+#2*\extshift}%
+ \else
+ % 2*npins/4 < pin <= 3*npins/4, right side
+ \pgfpoint{\width/2+#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}%
+ \fi
+ \else
+ % npins/4 < pin <= 2*npins/4, bottom side
+ \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}{-\height/2-#2*\extshift}%
+ \fi
+ \else
+ % <= npins/4, left side
+ \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-#1)*\chipspacing}%
+ \fi
+}
+
+%%%%%%%%%%%%%%%%%
+%% Rotary Switch
+%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{rotaryswitch}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northeast{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ % the magic number is 0.25/cos(35)
+ % try to recalculate it for the actual switch
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=.3052\pgf@circ@res@temp
+ \edef\a{\ctikzvalof{multipoles/rotary/angle}}
+ \edef\r{\ctikzvalof{nodes width}}
+ \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@x}{\r*\pgf@circ@scaled@Rlen + \pgf@circ@res@temp}
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ % the magic number is 0.25/cos(35)
+ % try to recalculate it for the actual switch
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=.3052\pgf@circ@res@temp
+ \edef\a{\ctikzvalof{multipoles/rotary/angle}}
+ \edef\r{\ctikzvalof{nodes width}}
+ \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@x}{-\r*\pgf@circ@scaled@Rlen - (\a<90 ? 1 : 1-2*cos(\a))*\pgf@circ@res@temp}
+ }
+ \savedanchor\central{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ % the magic number is 0.25/cos(35)
+ % try to recalculate it for the actual switch
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=.3052\pgf@circ@res@temp
+ \edef\a{\ctikzvalof{multipoles/rotary/angle}}
+ \edef\r{\ctikzvalof{nodes width}}
+ \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@x}{(\a<90 ? 0 : cos(\a))*\pgf@circ@res@temp}
+ }
+ % external square limits
+ \savedanchor\extnorthwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ \pgf@x=.3052\pgf@x % the magic number is 0.25/cos(35)
+ \pgf@x=2.5\pgf@x % external square size
+ \pgf@y=-\pgf@x %square thing when angle=180?
+ }
+ \saveddimen{\width}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{0.3052*\pgf@circ@scaled@Rlen*\ctikzvalof{tripoles/spdt/width}}}
+ % radius of the connector
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % shape type
+ \savedmacro{\cshape}{\def\cshape{\ctikzvalof{multipoles/rotary/shape}}}
+ \savedmacro{\channels}{\def\channels{\ctikzvalof{multipoles/rotary/channels}}}
+ \savedmacro{\angle}{\def\angle{\ctikzvalof{multipoles/rotary/angle}}}
+ \savedmacro{\wiper}{\def\wiper{\ctikzvalof{multipoles/rotary/wiper}}}
+ \savedmacro{\stepa}{\pgfmathsetmacro{\stepa}{2*\ctikzvalof{multipoles/rotary/angle}/(\ctikzvalof{multipoles/rotary/channels}-1)}}
+ % mid of the lever, to stack switches
+ %\anchor{mid}{\midlever}
+ \anchor{mid}{\northwest
+ \pgf@circ@res@temp=-\pgf@x
+ \pgfmathsetlength{\pgf@x}{\pgf@circ@res@temp*(-1+cos(\wiper))}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp*sin(\wiper)}
+ }
+ % center anchors
+ \anchor{cin}{ \northwest \pgf@y=0pt\advance\pgf@x by \radius}
+ % horizontal angles
+ \anchor{in}{ \northwest \pgf@y=0pt}
+ \anchor{ain}{ \northwest \pgf@y=0pt}
+
+ \anchor{center}{ \central \pgf@y=0pt }
+ \anchor{east}{ \northeast \pgf@y=0pt }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \central \pgf@y=-\pgf@y }
+ \anchor{north}{ \central }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northeast }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northeast \pgf@y=-\pgf@y }
+
+ \anchor{ext center}{ \pgf@y=0pt \pgf@x=0pt \advance\pgf@x by -\width}
+ \anchor{ext east}{ \extnorthwest \pgf@y=0pt \pgf@x=-\pgf@x \advance\pgf@x by -\width}
+ \anchor{ext west}{ \extnorthwest \pgf@y=0pt \advance\pgf@x by -\width}
+ \anchor{ext south}{ \extnorthwest \pgf@x=0pt \pgf@y=-\pgf@y \advance\pgf@x by -\width}
+ \anchor{ext north}{ \extnorthwest \pgf@x=0pt \advance\pgf@x by -\width}
+ \anchor{ext south west}{ \extnorthwest \pgf@y=-\pgf@y \advance\pgf@x by -\width}
+ \anchor{ext north east}{ \extnorthwest \pgf@x=-\pgf@x \advance\pgf@x by -\width}
+ \anchor{ext north west}{ \extnorthwest \advance\pgf@x by -\width}
+ \anchor{ext south east}{ \extnorthwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y \advance\pgf@x by -\width}
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@res@right = \width
+ \pgf@circ@res@left = -\width
+
+ \pgfscope %wiper
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \pgf@circ@res@temp=\radius\relax
+ \pgf@circ@res@temp=\ctikzvalof{multipoles/rotary/thickness}\pgf@circ@res@temp
+ \pgfsetlinewidth{2\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\wiper}{2\pgf@circ@res@right}}}
+ \pgfsetroundcap\pgfusepath{draw}
+ \endpgfscope
+
+ \ifpgf@circ@rotaryarrow
+ \pgfscope % arrow
+ \ifpgf@circ@rotaryarrow@ccw\pgfsetarrowsstart{latexslim}\fi
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % center of cin node
+ \pgftransformrotate{\wiper}
+ \pgfpathmoveto{\pgfpointpolar{50}{1.0\pgf@circ@res@right}}
+ \pgfpatharc{50}{-50}{1.0\pgf@circ@res@right}
+ \ifpgf@circ@rotaryarrow@cw\pgfsetarrowsend{latexslim}\fi
+ \pgfusepath{draw}
+ \endpgfscope
+ \fi
+
+ % \typeout{CHANNELS\space\channels\space ANGLE\space\angle STEPA\space\stepa}
+ \pgf@circ@count@a=\channels\relax
+ \pgfmathsetmacro{\currenta}{-\angle}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % \typeout{LOOPIN\space\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
+ \pgfscope
+ \pgftransformshift{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\currenta}{2\pgf@circ@res@right}}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out \the\pgf@circ@count@a}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfmathsetmacro{\currenta}{\currenta+\stepa}
+ % \typeout{LOOPOUT\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+
+ \pgfscope % input
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
+ \endpgfscope
+ }
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@rotaryswitch{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\channels\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@out\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{1}{0}%
+ }
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@cout\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{0}%
+ }
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@aout\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@sqout\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotarysqanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+}
+
+\def\pgf@circ@rotaryanchor#1#2#3{% #1: numero del pin; #2: 1 - x pos, 0 - center; #3 0: inner, 1 outer
+ \pgf@circ@res@temp=\width
+ \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
+ \pgfmathsetlength{\pgf@x}{2*(\pgf@circ@res@temp+#3*\radius/2)*cos(\myangle))+#2*\radius}
+ \pgfmathsetlength{\pgf@y}{2*(\pgf@circ@res@temp+#3*\radius/2)*sin(\myangle)}
+ \advance\pgf@x by -\pgf@circ@res@temp
+}
+
+\def\pgf@circ@rotarysqanchor#1{% external square anchors
+ \pgf@circ@res@temp=\width
+ \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
+ \pgfpointborderrectangle{\pgfpointpolar{\myangle}{1pt}}{\pgfpoint{2.5\pgf@circ@res@temp}{2.5\pgf@circ@res@temp}}
+ \advance\pgf@x by -\pgf@circ@res@temp
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Seven segments displays
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{bare7seg}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{displays}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\dotstatus}{\edef\dotstatus{\pgf@circ@sevenseg@dotstate}}
+ \saveddimen{\dotspace}{% the dot is on the right, and occupy the same as the thickness
+ \ifpgf@circ@sevenseg@dot
+ \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/thickness}}
+ \else
+ \pgf@x=0pt
+ \fi
+ }
+ % The object extension is more or less (-width/2,-width) to (width/2,width)
+ % and adjusted for line thickness (both sides) and eventually the dot
+ \saveddimen{\width}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}}
+ \saveddimen{\gap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/segment sep}}}
+ \saveddimen{\boxgap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/box sep}}}
+ \savedanchor{\southwest}{% both negative
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
+ -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
+ \pgfmathsetlength{\pgf@y}{-\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
+ -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
+ }
+ \savedanchor{\northeast}{% both positive
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circ@sevenseg@dot
+ \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{seven seg/thickness}}
+ \else
+ \pgf@circ@res@other=0pt
+ \fi
+ \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
+ +0.5*\ctikzvalof{seven seg/thickness}+\pgf@circ@res@other+\ctikzvalof{seven seg/box sep}}
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
+ +0.5*\ctikzvalof{seven seg/thickness}+\ctikzvalof{seven seg/box sep}}
+ }
+ \savedanchor{\topright}{% anchor without the box sep and the thickness
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{north west}{\southwest\pgf@y=-\pgf@y}
+ \anchor{north east}{\northeast}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\southwest}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0pt}
+ \anchor{south}{\southwest\pgf@x=0pt}
+ \anchor{west}{\southwest\pgf@y=0pt}
+ \anchor{a}{\topright\pgf@x=0pt}
+ \anchor{b}{\topright\pgf@y=0.5\pgf@y}
+ \anchor{c}{\topright\pgf@y=-0.5\pgf@y}
+ \anchor{d}{\topright\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{e}{\topright\pgf@x=-\pgf@x\pgf@y=-0.5\pgf@y}
+ \anchor{f}{\topright\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{g}{\pgfpointorigin}
+ \anchor{dot}{\topright\pgf@y=-\pgf@y\advance\pgf@x by \dotspace}
+ \behindbackgroundpath{%
+ \southwest % I do not want the dot here, it will stick out
+ \pgf@circ@res@up = -\pgf@y
+ \pgf@circ@res@down = \pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \pgf@circ@res@left = -\pgf@x
+ \pgfscope
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfpathrectanglecorners%
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@left+\dotspace}{\pgf@circ@res@up}}
+ \ifpgf@circ@sevenseg@box
+ \pgf@circ@draworfill
+ \else
+ \pgf@circ@maybefill
+ \fi
+ \endpgfscope
+ \edef\bits{\ctikzvalof{seven seg/bits}}
+ \pgfscope
+ \pfg@circ@sseg@drawbits{\bits}
+ \endpgfscope
+ \pgfscope
+ \ifpgf@circ@sevenseg@dot
+ \pgf@circ@sseg@drawdots
+ \fi
+ \endpgfscope
+ }
+}
+
+\def\pgf@circ@sseg@splitbits#1#2#3#4#5#6#7\relax{%split the seven bits
+ \edef\@@a{#1}\edef\@@b{#2}\edef\@@c{#3}\edef\@@d{#4}\edef\@@e{#5}\edef\@@f{#6}\edef\@@g{#7}%
+}
+\def\pgf@circ@sseg@drawone#1#2#3#4#5{% #1 on off the x1, y1, x2 , y2
+ \ifnum #1 > 0\relax
+ \pgfsetcolor{\ctikzvalof{seven seg/color on}}
+ \else
+ \pgfsetcolor{\ctikzvalof{seven seg/color off}}
+ \fi
+ \pgfpathmoveto{\pgfpoint{#2}{#3}}
+ \pgfpathlineto{\pgfpoint{#4}{#5}}
+ \pgfusepath{draw}
+}
+\def\pfg@circ@sseg@drawbits#1{% #1 must be 7 bits
+ \expandafter\pgf@circ@sseg@splitbits#1\relax% a bit of magic...
+ \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
+ \pgfsetlinewidth{\ctikzvalof{seven seg/thickness}}
+ % \pgfsetroundcap
+ \pgfsetarrowsstart{Triangle Cap[]}
+ \pgfsetarrowsend{Triangle Cap[]}
+ % segments
+ \pgf@circ@sseg@drawone{\@@a}{-\width/2+\gap}{\width}{\width/2-\gap}{\width}
+ \pgf@circ@sseg@drawone{\@@b}{\width/2}{\width-\gap}{\width/2}{0pt+\gap}
+ \pgf@circ@sseg@drawone{\@@c}{\width/2}{0pt-\gap}{\width/2}{-\width+\gap}
+ \pgf@circ@sseg@drawone{\@@d}{\width/2-\gap}{-\width}{-\width/2+\gap}{-\width}
+ \pgf@circ@sseg@drawone{\@@e}{-\width/2}{-\width+\gap}{-\width/2}{0pt-\gap}
+ \pgf@circ@sseg@drawone{\@@f}{-\width/2}{0pt+\gap}{-\width/2}{\width-\gap}
+ \pgf@circ@sseg@drawone{\@@g}{-\width/2+\gap}{0pt}{\width/2-\gap}{0pt}
+}
+\def\pgf@circ@sseg@drawdots{% dots
+ \edef\what{empty}
+ \ifx\what\pgf@circ@sevenseg@dotstate
+ % do nothing
+ \else
+ \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
+ \edef\what{off}
+ \ifx\what\pgf@circ@sevenseg@dotstate
+ % dot off
+ \pgfsetfillcolor{\ctikzvalof{seven seg/color off}}
+ \pgfsetcolor{\ctikzvalof{seven seg/color off}}
+ \else
+ % dot on
+ \pgfsetfillcolor{\ctikzvalof{seven seg/color on}}
+ \pgfsetcolor{\ctikzvalof{seven seg/color on}}
+ \fi
+ \pgfpathcircle{\pgfpoint{\width/2+2*\pgf@circ@res@other}{-\width}}{\pgf@circ@res@other}
+ \pgfusepath{draw,fill}
+ \fi
+}
+
+
+%%%%%%
+%%%%%% Flip-flops
+%%%%%%
+
+% Flip flops are a specialized kind of dipchip.
+% they have a class by themselves
+
+%% flip flop definitions --- by default empty
+%% pin texts
+\ctikzset{multipoles/flipflop/t1/.initial={}}
+\ctikzset{multipoles/flipflop/t2/.initial={}}
+\ctikzset{multipoles/flipflop/t3/.initial={}}
+\ctikzset{multipoles/flipflop/t4/.initial={}}
+\ctikzset{multipoles/flipflop/t5/.initial={}}
+\ctikzset{multipoles/flipflop/t6/.initial={}}
+\ctikzset{multipoles/flipflop/tu/.initial={}}
+\ctikzset{multipoles/flipflop/td/.initial={}}
+% pin clock wedge flags
+\ctikzset{multipoles/flipflop/c1/.initial={0}}
+\ctikzset{multipoles/flipflop/c2/.initial={0}}
+\ctikzset{multipoles/flipflop/c3/.initial={0}}
+\ctikzset{multipoles/flipflop/c4/.initial={0}}
+\ctikzset{multipoles/flipflop/c5/.initial={0}}
+\ctikzset{multipoles/flipflop/c6/.initial={0}}
+\ctikzset{multipoles/flipflop/cu/.initial={0}}
+\ctikzset{multipoles/flipflop/cd/.initial={0}}
+% pin negation circle flags
+\ctikzset{multipoles/flipflop/n1/.initial={0}}
+\ctikzset{multipoles/flipflop/n2/.initial={0}}
+\ctikzset{multipoles/flipflop/n3/.initial={0}}
+\ctikzset{multipoles/flipflop/n4/.initial={0}}
+\ctikzset{multipoles/flipflop/n5/.initial={0}}
+\ctikzset{multipoles/flipflop/n6/.initial={0}}
+\ctikzset{multipoles/flipflop/nu/.initial={0}}
+\ctikzset{multipoles/flipflop/nd/.initial={0}}
+
+
+% Thanks to @marmot
+\tikzset{flipflop def/.code=\pgfqkeys{\circuitikzbasekey/multipoles/flipflop}{#1}}
+
+% default set of flip flops
+\tikzset{
+ % async
+ latch/.style={flipflop, flipflop def={t1=D, t6=Q, t3=CLK, t4=\ctikztextnot{Q}}},
+ flipflop SR/.style={flipflop, flipflop def={t1=S, t3=R, t6=Q, t4=\ctikztextnot{Q}}},
+ % sync
+ flipflop D/.style={flipflop, flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
+ flipflop T/.style={flipflop, flipflop def={t1=T, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
+ flipflop JK/.style={flipflop, flipflop def={t1=J, t3=K, c2=1, t6=Q, t4=\ctikztextnot{Q}}},
+ % additional features
+ add async SR/.style={flipflop def={tu={\ctikztextnot{SET}}, td={\ctikztextnot{RST}}}},
+ dot on notQ/.style={flipflop def={t4={Q}, n4=1}},
+}
+
+%
+% commodity macro to draw the clock wedges. They leave the size of the
+% wedge in \pgf@circ@res@temp so that a possible label can be displaced.
+%
+\def\pgf@circ@do@wedge@left{
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step+\wedge}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\wedge}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step-\wedge}}
+ \pgfusepath{stroke}
+ \pgf@circ@res@temp=\wedge
+ \fi
+}
+\def\pgf@circ@do@wedge@right{
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step+\wedge}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\wedge}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step-\wedge}}
+ \pgfusepath{stroke}
+ \pgf@circ@res@temp=-\wedge
+ \fi
+}
+\def\pgf@circ@do@wedge@up{
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\ctikzvalof{multipoles/flipflop/cu}>0
+ \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up-\wedge}}
+ \pgfpathlineto{\pgfpoint{\wedge}{\pgf@circ@res@up}}
+ \pgfusepath{stroke}
+ \pgf@circ@res@temp=-\wedge
+ \fi
+}
+\def\pgf@circ@do@wedge@down{
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\ctikzvalof{multipoles/flipflop/cd}>0
+ \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down+\wedge}}
+ \pgfpathlineto{\pgfpoint{\wedge}{\pgf@circ@res@down}}
+ \pgfusepath{stroke}
+ \pgf@circ@res@temp=\wedge
+ \fi
+}
+% generic flip-flop shape
+\pgfdeclareshape{flipflop}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{flipflops}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ \savedmacro\numpins{\def\numpins{6}}
+ \savedanchor\centerpoint{%
+ \pgf@x=-.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \savedanchor\origin{\pgfpoint{0pt}{0pt}}
+ \anchor{center}{\origin}
+ \anchor{text}{\centerpoint}% to adjust text
+ \saveddimen\height{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{((\numpins)
+ *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf@circ@scaled@Rlen/2}%
+ }%
+ \saveddimen{\chipspacing}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/pin spacing}}}
+ \saveddimen{\width}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/width}}}
+ \saveddimen{\extshift}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
+ % standard anchors
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{0.5*((\numpins)
+ *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf@circ@scaled@Rlen/2}%
+ \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/width}}
+ }
+ \anchor{dot}{\northwest
+ \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
+ \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ % upper and lower pin
+ \anchor{up}{\northwest\pgf@x=0pt\advance\pgf@y by\extshift }
+ \anchor{down}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y\advance\pgf@y by-\extshift}
+ \anchor{bup}{\northwest\pgf@x=0pt }
+ \anchor{bdown}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ % start drawing
+ \backgroundpath{%
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step = \ctikzvalof{multipoles/flipflop/pin spacing}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfscope% (for the line width)
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
+ \pgf@circ@draworfill
+ \pgfusepath{stroke}%
+ \endpgfscope
+ % Adding the pin number
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
+ \ifpgf@circuit@chip@straightnumbers
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
+ \else
+ \pgfmathsetmacro{\rot}{0}
+ \pgfmathsetmacro{\quadrant}{0}
+ \fi
+ \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
+ % text
+ \def\mytext{\ctikzvalof{multipoles/flipflop/font}\space
+ \ctikzvalof{multipoles/flipflop/t\the\pgf@circ@count@c}%
+ \pgf@circ@strut\space}
+ % \typeout{TEXT\space\mytext}
+ \pgfmathloop%
+ \def\wedge{\ctikzvalof{multipoles/flipflop/clock wedge size}\pgf@circ@res@step}
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\pgf@circ@count@a>0
+ \ifcase\quadrant % rotation 0
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgf@circ@do@wedge@left
+ % \typeout{TEXT Left Q1\space\mytext}
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgf@circ@do@wedge@right
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgf@circ@do@wedge@left
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgf@circ@do@wedge@right
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgf@circ@do@wedge@left
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgf@circ@do@wedge@right
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgf@circ@do@wedge@left
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgf@circ@do@wedge@right
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ % Now the up and down text
+ % up
+ \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf@circ@strut\ctikzvalof{multipoles/flipflop/tu}\space}
+ \pgf@circ@do@wedge@up
+ \ifcase\quadrant % rotation 0
+ \pgftext[top,
+ at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ \pgftext[right,
+ at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ \pgftext[bottom,
+ at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ \pgftext[left,
+ at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \fi
+ % down
+ \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf@circ@strut\ctikzvalof{multipoles/flipflop/td}\space}
+ \pgf@circ@do@wedge@down
+ \ifcase\quadrant % rotation 0
+ \pgftext[bottom,
+ at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ \pgftext[left,
+ at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ \pgftext[top,
+ at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ \pgftext[right,
+ at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \fi
+ % external pins
+ \ifdim\pgf@circ@res@other>0pt
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % left side pins
+ \pgf@circ@count@c=\pgf@circ@count@a
+ %% we draw the pin only if it's defined either a text, a clock wedge or a not pin
+ %% Or'ing tests in core TeX is tough
+ \edef\@@or{0}
+ % Just expand the key the minimum needed
+ \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf@circ@count@c}}\edef\@@x{x}
+ \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \ifnum\@@or>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfusepath{stroke}
+ \fi
+ % right side pins
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \edef\@@or{0}
+ \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf@circ@count@c}}\edef\@@x{x}
+ \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ % \typeout{TEST\space\@@tmp\space\@@x}
+ \ifnum\@@or>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfusepath{stroke}
+ \fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+ % up side
+ \edef\@@or{0}
+ \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/tu}}\edef\@@x{x}
+ \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cu}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ % \typeout{TEST\space\@@tmp\space\@@x}
+ \ifnum\@@or>0
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \pgfusepath{stroke}
+ \fi
+ % down side
+ \edef\@@or{0}
+ \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/td}}\edef\@@x{x}
+ \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cd}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ % \typeout{TEST\space\@@tmp\space\@@x}
+ \ifnum\@@or>0
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfusepath{stroke}
+ \fi
+ \endpgfscope
+ \fi % external pin width >0
+ %
+ % draw "inverting" circles on outputs, they must be last
+ %
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % left side pins
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfnode{ocirc}{east}{}{\thisshape-N\the\pgf@circ@count@c}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ % right side pins
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfnode{ocirc}{west}{}{\thisshape-N\the\pgf@circ@count@c}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+ % up side
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
+ \ifnum\@@tmp>0\pgfscope
+ \pgftransformshift{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfnode{ocirc}{south}{}{\thisshape-Nu}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ % down side
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nd}}
+ \ifnum\@@tmp>0\pgfscope
+ \pgftransformshift{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfnode{ocirc}{north}{}{\thisshape-Nd}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ \endpgfscope
+ }%
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@flipflop{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\numpins\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@flipflop@pin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@flipflop@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+}
+
+%
+% MUX-DEMUXES
+%
+% Thanks to @marmot
+\tikzset{muxdemux def/.code=\pgfqkeys{\circuitikzbasekey/multipoles/muxdemux}{#1}}
+\tikzset{demux/.style={muxdemux, muxdemux def={Lh=4, Rh=8, NL=1, NB=3, NR=8}}}
+\tikzset{one bit adder/.style={muxdemux,
+ muxdemux def={Lh=4, NL=2, Rh=2, NR=1, NB=1, w=1.5,
+ inset w=0.5, inset Lh=2, inset Rh=1.5}}}
+\tikzset{ALU/.style={muxdemux,
+ muxdemux def={Lh=5, NL=2, Rh=2, NR=1, NB=2, NT=1, w=2,
+ inset w=1, inset Lh=2, inset Rh=0, square pins=1}}}
+%generic mux-demux shape
+\pgfdeclareshape{muxdemux}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{muxdemuxes}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % pins on the four sides
+ % \savedmacro\NL{%
+ % \pgf@circ@count@a=\ctikzvalof{multipoles/muxdemux/NL}%
+ % \def\NL{\the\pgf@circ@count@a}
+ % }
+ \savedmacro\NL{\edef\NL{\ctikzvalof{multipoles/muxdemux/NL}}}
+ \savedmacro\NR{\edef\NR{\ctikzvalof{multipoles/muxdemux/NR}}}
+ \savedmacro\NT{\edef\NT{\ctikzvalof{multipoles/muxdemux/NT}}}
+ \savedmacro\NB{\edef\NB{\ctikzvalof{multipoles/muxdemux/NB}}}
+ \savedmacro\squarepins{\edef\squarepins{\ctikzvalof{multipoles/muxdemux/square pins}}}
+ % topleft and topright sizes
+ \savedanchor{\topleft}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/Lh}*\pgf@circ@scaled@Rlen/2}
+ \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
+ }
+ \savedanchor{\topright}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/Rh}*\pgf@circ@scaled@Rlen/2}
+ \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
+ }
+ \savedanchor{\insetnortheast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/inset Lh}*\pgf@circ@scaled@Rlen/2}
+ \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*
+ (\ctikzvalof{multipoles/muxdemux/w}-2*\ctikzvalof{multipoles/muxdemux/inset w})*\pgf@circ@scaled@Rlen/2}
+ }
+ \saveddimen{\insethright}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/inset Rh}*\pgf@circ@scaled@Rlen/2}}
+ \saveddimen{\extshift}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
+ \savedanchor{\northwest}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*max(\ctikzvalof{multipoles/muxdemux/Rh},\ctikzvalof{multipoles/muxdemux/Lh})*\pgf@circ@scaled@Rlen/2}
+ \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{top right}{\topright}
+ \anchor{bottom right}{\topright\pgf@y=-\pgf@y}
+ \anchor{right}{\topright\pgf@y=0pt\relax}
+ \anchor{top left}{\topleft}
+ \anchor{bottom left}{\topleft\pgf@y=-\pgf@y}
+ \anchor{left}{\topleft\pgf@y=0pt\relax}
+ \anchor{top}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
+ \divide\pgf@y by 2 \pgf@x=0pt\relax}
+ \anchor{bottom}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
+ \divide\pgf@y by 2 \pgf@y=-\pgf@y \pgf@x=0pt\relax}
+ \anchor{inset top right}{\pgf@ya=\insethright\insetnortheast\advance\pgf@y by -0.5\pgf@ya}
+ \anchor{inset bottom right}{\pgf@ya=\insethright\insetnortheast\advance\pgf@y by -0.5\pgf@ya\pgf@y=-\pgf@y}
+ \anchor{inset right}{\insetnortheast\pgf@y=0pt\relax}
+ \anchor{inset top left}{\insetnortheast\pgf@ya=\pgf@y\topleft\pgf@y=\pgf@ya}
+ \anchor{inset bottom left}{\insetnortheast\pgf@ya=\pgf@y\topleft\pgf@y=-\pgf@ya}
+ \anchor{inset left}{\topleft\pgf@y=0pt\relax}
+ \anchor{inset bottom}{\topleft\pgf@xa=\pgf@x\pgf@ya=\insethright
+ \insetnortheast\pgf@xb=\pgf@x\pgf@yb=\pgf@x
+ \pgfpoint{(\pgf@xa+\pgf@xb)/2}{-\pgf@ya+\pgf@yb/2}}
+ \anchor{inset top}{\topleft\pgf@xa=\pgf@x\pgf@ya=\insethright
+ \insetnortheast\pgf@xb=\pgf@x\pgf@yb=\pgf@x
+ \pgfpoint{(\pgf@xa+\pgf@xb)/2}{\pgf@ya-\pgf@yb/2}}
+ \anchor{inset center}{\topleft\pgf@xa=\pgf@x\insetnortheast
+ \advance\pgf@x by \pgf@xa \divide\pgf@x by 2 \pgf@y=0pt\relax}
+ \anchor{narrow center}{\insetnortheast\pgf@xa=\pgf@x\topright
+ \advance\pgf@x by \pgf@xa \divide\pgf@x by 2\pgf@y=0pt\relax}
+ \anchor{center up}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
+ \divide\pgf@y by 2
+ \pgf@yb = \insethright \advance\pgf@y by \pgf@yb
+ \divide\pgf@y by 2 \pgf@x=0pt\relax}
+ \anchor{center down}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
+ \divide\pgf@y by 2
+ \pgf@yb = \insethright \advance\pgf@y by \pgf@yb
+ \divide\pgf@y by 2 \pgf@y=-\pgf@y \pgf@x=0pt\relax}
+ \anchor{text}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*
+ \ctikzvalof{multipoles/muxdemux/inset w}*\pgf@circ@scaled@Rlen/2}
+ \advance\pgf@x by -.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \backgroundpath{%
+ \topleft
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@left = \pgf@x
+ \topright
+ \pgf@circ@res@other = \pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \insetnortheast
+ \pgf@circ@res@step = \pgf@x
+ \pgf@circ@res@temp = \pgf@y
+ %
+ % external block
+ %
+ \pgfscope% (for the line width)
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ % inset, starting down
+ \ifdim\pgf@circ@res@temp>0pt % inset
+ % \typeout{INSETw\space\the\pgf@circ@res@right\space x\space\the\pgf@circ@res@step\space y\space\the\pgf@circ@res@temp}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\insethright}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\insethright}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}
+ \fi
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ % now we have to draw the pins, if needed
+ \ifdim\extshift>0pt\ifpgfcirc@draw@leads\pgfscope % let's avoid too much indent
+ % Ok, we have to draw the leads (a.k.a. pins)
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ % We mimic the anchors here --- probably there is a better way
+ % left pins
+ \ifnum\NL>0\relax % not indented, closed on \repeatpgfmathloop
+ \pgf@circ@count@a=\NL\relax
+ \pgf@circ@count@b=\NL \divide\pgf@circ@count@b by 2 % see https://tex.stackexchange.com/questions/146523/why-does-numexpr-integer-division-round-rather-than-truncate
+ \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
+ \insetnortheast\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
+ \ifdim\pgf@circ@res@down>0pt % check if we have an inset
+ % we have to check oddity
+ \ifodd\NL
+ \ifnum\NL=1
+ % only centerpin, step should not be used, but anyway...
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/(\NL)}
+ \else
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/(\NL-1)}
+ \fi
+ \else
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/\NL}
+ \fi
+ \else % no inset
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@up/\NL}
+ \fi
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ %%%%%
+ \ifdim\pgf@circ@res@down>0pt % check if we have an inset
+ \ifnum\pgf@circ@count@a>\pgf@circ@count@b\relax
+ % for lower pins we have to shift them down
+ % \typeout{DEBUGTEST1\space #1\space entering\space \NL}
+ \ifodd\NL
+ % odd number of pins
+ \ifnum\pgf@circ@count@a=\numexpr\the\pgf@circ@count@b+1\relax
+ % centerpin!
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \ifnum\squarepins>0
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{0pt}}
+ \else
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\extshift}{0pt}}
+ \fi
+ \else
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a+1)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a+1)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
+ \fi
+ \else
+ % even numer of pins: just go down
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
+ \fi
+ \else
+ % nothing need for #1<=NL/2
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \fi
+ \else
+ % no inset
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \fi
+ %%%%%
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop\fi%
+ % right pins
+ \ifnum\NR>0\pgf@circ@count@a=\NR\relax
+ \pgfmathloop%
+ \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@up=\pgf@y
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@up/\NR}
+ \ifnum\pgf@circ@count@a>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop\fi%
+ % bottom pins
+ \ifnum\NB>0\pgf@circ@count@a=\NB\relax %%%
+ \pgfmathloop%
+ \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
+ \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@right/\NB}
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@res@down-\pgf@circ@res@up)/(\pgf@circ@res@right-\pgf@circ@res@left)*\pgf@circ@res@step}
+ \ifnum\pgf@circ@count@a>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {-\pgf@circ@res@down+(\NB-\pgf@circ@count@a+0.5)*\pgf@circ@res@other}}
+ \ifnum\squarepins>0
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {-max(\pgf@circ@res@down, \pgf@circ@res@up)-\extshift}}
+ \else
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {-\pgf@circ@res@down+(\NB-\pgf@circ@count@a+0.5)*\pgf@circ@res@other-\extshift}}
+ \fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop\fi%
+ % top pins
+ \ifnum\NT>0\pgf@circ@count@a=\NT\relax
+ \pgfmathloop%
+ \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
+ \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@right/\NT}
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@res@down-\pgf@circ@res@up)/(\pgf@circ@res@right-\pgf@circ@res@left)*\pgf@circ@res@step}
+ \ifnum\pgf@circ@count@a>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {\pgf@circ@res@down-(\NT-\pgf@circ@count@a+0.5)*\pgf@circ@res@other}}
+ \ifnum\squarepins>0
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {max(\pgf@circ@res@down, \pgf@circ@res@up)+\extshift}}
+ \else
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {\pgf@circ@res@down-(\NT-\pgf@circ@count@a+0.5)*\pgf@circ@res@other+\extshift}}
+ \fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop\fi%
+ % end drawing pins; stroke them
+ \pgfusepath{stroke}
+ \endpgfscope\fi\fi
+ }
+ % let's start adding anchors
+ \pgfutil@g@addto@macro\pgf@sh@s@muxdemux{%
+ % left side anchors
+ \pgf@circ@count@a=\NL\relax
+ % \typeout{STARTGENERATINGLEFT\space\the\pgf@circ@count@a\space FOR\space\thisshape\space\NL}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % \typeout{GENERATINGLEFT\space\the\pgf@circ@count@a\space FOR\space\thisshape\space\NL}
+ % we will create two anchors per pin: the "normal one" like `lpin 1` for the
+ % external leads, and the "border one" like `blpin 1` for internal ones.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@muxdemux@lpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@L@anchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@muxdemux@blpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@L@anchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ % right anchors
+ \pgf@circ@count@a=\NR\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `rpin 1` for the
+ % external leads, and the "border one" like `brpin 1` for internal ones.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@muxdemux@rpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@R@anchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@muxdemux@brpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@R@anchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ % bottom anchors
+ \pgf@circ@count@a=\NB\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `bpin 1` for the
+ % external leads, and the "border one" like `bbpin 1` for internal ones.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@muxdemux@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@B@anchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@muxdemux@bbpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@B@anchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ % top anchors
+ \pgf@circ@count@a=\NT\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `tpin 1` for the
+ % external leads, and the "border one" like `btpin 1` for internal ones.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@muxdemux@tpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@T@anchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@muxdemux@btpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@T@anchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+}
+
+%% left anchors for muxdemux
+
+\def\pgf@circ@muxdemux@L@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \topleft
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \insetnortheast
+ \pgf@xb=\pgf@x
+ \pgf@yb=\pgf@y
+ \ifnum#1>\NL
+ \PackageError{circuitikz}{%
+ You requested left pin #1 for mux/demux shape \thisshape\space \MessageBreak
+ which has been defined with \NL\space left pins%
+ }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
+ \fi
+ \pgf@circ@count@a=\NL \divide\pgf@circ@count@a by 2 % see https://tex.stackexchange.com/questions/146523/why-does-numexpr-integer-division-round-rather-than-truncate
+ % \typeout{LEFT \the\pgf@xa \space \the\pgf@ya \space \NL}
+ \ifnum\NL>1
+ \ifdim\pgf@yb>0pt % check if we have an inset
+ % we have to check oddity
+ \ifodd\NL
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@ya-\pgf@yb)/(\NL-1)}
+ \else
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@ya-\pgf@yb)/\NL}
+ \fi
+ \else % no inset
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@ya/\NL}
+ \fi
+ \ifdim\pgf@yb>0pt % check if we have an inset
+ \ifnum#1>\pgf@circ@count@a\relax
+ % for lower pins we have to shift them down
+ % \typeout{DEBUGTEST1\space #1\space entering\space \NL}
+ \ifodd\NL
+ % odd number of pins
+ \ifnum#1=\numexpr\the\pgf@circ@count@a+1\relax
+ % centerpin!
+ \ifnum#2=0\relax
+ \pgfpoint{\pgf@xb}{0pt}
+ \else
+ \ifnum\squarepins>0
+ \pgfpoint{\pgf@xa-#2*\extshift}{0pt}
+ \else
+ \pgfpoint{\pgf@xb-#2*\extshift}{0pt}
+ \fi
+ \fi
+ \else
+ \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1+1)*\pgf@circ@res@step-2*\pgf@yb}
+ \fi
+ \else
+ % even numer of pins: just go down
+ \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step-2*\pgf@yb}
+ \fi
+ \else
+ % nothing need for #1<=NL/2
+ \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
+ \fi
+ \else
+ % no inset
+ \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
+ \fi
+ \else
+ \pgfpoint{\pgf@xa-#2*\extshift}{0pt}
+ \fi
+}
+
+% right anchors
+\def\pgf@circ@muxdemux@R@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \topright
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \ifnum#1>\NR
+ \PackageError{circuitikz}{%
+ You requested right pin #1 for mux/demux shape \thisshape\space \MessageBreak
+ which has been defined with \NR\space right pins%
+ }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
+ \fi
+ \ifnum\NR>1
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@ya/\NR}
+ \pgfpoint{\pgf@xa+#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
+ \else
+ \pgfpoint{\pgf@xa+#2*\extshift}{0pt}
+ \fi
+}
+
+% bottom anchors
+\def\pgf@circ@muxdemux@B@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \topleft
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \topright
+ \pgf@xb=\pgf@x
+ \pgf@yb=\pgf@y
+ \ifnum#1>\NB
+ \PackageError{circuitikz}{%
+ You requested bottom pin #1 for mux/demux shape \thisshape\space \MessageBreak
+ which has been defined with \NB\space bottom pins%
+ }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
+ \fi
+ \ifnum\NB>0
+ % \typeout{DEBUGTESTtopleft\space\the\pgf@ya \space topright\space\the\pgf@yb \space\NB}
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@xb/\NB}
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@yb-\pgf@ya)/(\pgf@xb-\pgf@xa)*\pgf@circ@res@step}
+ \pgfmathsetlength\pgf@x{\pgf@xa+(#1-0.5)*\pgf@circ@res@step}
+ \ifnum#2=0\relax
+ \pgfmathsetlength\pgf@y{-\pgf@yb+(\NB-#1+0.5)*\pgf@circ@res@other}
+ \else
+ \ifnum\squarepins>0\relax
+ \pgfmathsetlength\pgf@y{-max(\pgf@ya,\pgf@yb)-\extshift}
+ \else
+ \pgfmathsetlength\pgf@y{-\pgf@yb+(\NB-#1+0.5)*\pgf@circ@res@other-\extshift}
+ \fi
+ \fi
+ \else
+ % should not happen, give the same as pin 1 anyway
+ \ifnum#2=0\relax
+ \pgfpoint{0pt}{-\pgf@yb+(\pgf@yb-\pgf@ya)/2}
+ \else
+ \pgfpoint{0pt}{-max(\pgf@ya,\pgf@yb)-\extshift}
+ \fi
+ \fi
+}
+
+% top anchors
+\def\pgf@circ@muxdemux@T@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \topleft
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \topright
+ \pgf@xb=\pgf@x
+ \pgf@yb=\pgf@y
+ \ifnum#1>\NT
+ \PackageError{circuitikz}{%
+ You requested top pin #1 for mux/demux shape \thisshape\space \MessageBreak
+ which has been defined with \NT\space top pins%
+ }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
+ \fi
+ \ifnum\NT>0
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@xb/\NT}
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@yb-\pgf@ya)/(\pgf@xb-\pgf@xa)*\pgf@circ@res@step}
+ \pgfmathsetlength\pgf@x{\pgf@xa+(#1-0.5)*\pgf@circ@res@step}
+ \ifnum#2=0\relax
+ \pgfmathsetlength\pgf@y{\pgf@yb-(\NT-#1+0.5)*\pgf@circ@res@other}
+ \else
+ \ifnum\squarepins>0
+ \pgfmathsetlength\pgf@y{max(\pgf@ya,\pgf@yb)+\extshift}
+ \else
+ \pgfmathsetlength\pgf@y{\pgf@yb-(\NT-#1+0.5)*\pgf@circ@res@other+\extshift}
+ \fi
+ \fi
+ \else
+ % should not happen, give the same as pin 1 anyway
+ \ifnum#2=0\relax
+ \pgfpoint{0pt}{\pgf@yb-(\pgf@yb-\pgf@ya)/2}
+ \else
+ \pgfpoint{0pt}{max(\pgf@ya,\pgf@yb)+\extshift}
+ \fi
+ \fi
+}
+%%%---------- close: tex/pgfcircmultipoles
+
+%%%%%%%%%%% Springe nach tex/pgfcirclabel
+%%%---------- open: tex/pgfcirclabel.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Bipole label positioning
+
+%% bipole labels and annotation extra style
+
+\ctikzset{bipole label style/.style={}}
+\tikzset{bipole label style/.code={
+ \ctikzset{bipole label style/.style={#1}}
+}}
+\tikzset{bipole label append style/.code={
+ \ctikzset{bipole label style/.append style={#1}}
+}}
+\ctikzset{bipole annotation style/.style={}}
+\tikzset{bipole annotation style/.code={
+ \ctikzset{bipole annotation style/.style={#1}}
+}}
+\tikzset{bipole annotation append style/.code={
+ \ctikzset{bipole annotation style/.append style={#1}}
+}}
+
+%% Options
+\ctikzset{label/.style = { l=#1 } }
+\ctikzset{l/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
+ \ctikzsetvalof{bipole/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+
+\ctikzset{label above/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{l^/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{label below/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+\ctikzset{l_/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+\ctikzset{annotation/.style = { a=#1 } }
+\ctikzset{a/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/annotation/name=#1}
+ \ctikzsetvalof{bipole/annotation/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+
+\ctikzset{annotation above/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+
+\ctikzset{a^/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+
+\ctikzset{annotation below/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+\ctikzset{a_/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+
+% This is to adjust spacing for the labels so that they are not cramped on components
+\def\pgf@circ@ls{.75ex} % labelspace to have just one point to change
+
+\def\pgf@circ@drawlabels#1{
+ \pgfextra{
+ % This function will be called with argument #1 equal
+ % to "label" or "annotation" form pgfcircpath.tex.
+ % pgf@circ@direction is the direction of the path,
+ % its value is set in pgfcircpath.tex
+ \pgfmathsubtract{\pgf@circ@direction}{90}
+ \pgfmathround{\pgfmathresult} % avoid precision loss errors
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/position}}
+ \ifnum \pgf@circ@temp < 0
+ \pgfmathadd{\pgf@circ@labanc}{180}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ % \typeout{INI: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
+ %
+ % normalize the angle values
+ %
+ \pgfmathmod{\pgf@circ@labanc}{360}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ %
+ \ifpgf@circuit@bipole@inverted
+ \pgfmathadd{\pgf@circ@temp}{180} %If shape is inverted, use opposite anchor
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ %
+ \ifnum \ctikzvalof{mirror value} = -1
+ \pgfmathadd{\pgf@circ@temp}{180} %If shape is mirrored, use opposite anchor
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ % \typeout{FIN: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
+ }
+ %Firstly, place a coordinate directly at the edge of the shape
+ (\ctikzvalof{bipole/name}.\pgf@circ@temp) coordinate (labelcoor)
+ %now decide, which labels should be drawn
+ \pgfextra{
+ \edef\pgf@temp{\ctikzvalof{label/align}}
+ \def\pgf@circ@temp{straight}
+ }
+ \ifx\pgf@temp\pgf@circ@temp %straight
+ \pgf@circ@drawreglabels{#1}
+ \else
+ \pgfextra{\def\pgf@circ@temp{rotate}}
+ \ifx\pgf@temp\pgf@circ@temp %rotate
+ \pgf@circ@drawrotlabels{#1}
+ \else% smart
+ \pgf@circ@drawsmartlabels{#1}
+ \fi
+ \fi
+}
+
+
+\def\pgf@circ@drawsmartlabels#1{
+ \pgfextra{
+ \pgfmathmod{\pgf@circ@direction}{90}
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ \ifnum \pgfcircmathresult > 20
+ \ifnum \pgfcircmathresult < 70
+ \pgf@circ@drawrotlabels{#1}
+ \else
+ \pgf@circ@drawreglabels{#1}
+ \fi
+ \else
+ \pgf@circ@drawreglabels{#1}
+ \fi
+ }
+
+
+\def\pgf@circ@drawrotlabels#1{
+ \pgfextra{
+ % scale the distances in function of zoom, so that they are not
+ % dependent on it but on font size. Thanks to @marmot
+ % https://tex.stackexchange.com/a/476018/38080
+ % the coeffcient is adjusted so that the distance is more or less
+ % the same for rotated labels and straight ones (although it will
+ % depend on the font, so it's not exact).
+ \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\myscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
+ % \typeout{ROT\tmpa\space\tmpb\space\tmpc\space\tmpd\space\myscale}
+ \pgfmathsetlength\pgf@circ@res@temp{1.5*\pgf@circ@ls/\myscale}
+ \ifnum \ctikzvalof{bipole/#1/position}>0
+ %we need some more space for placement below, due to mid-anchor
+ \else % we do not have <= in \ifnum...
+ \pgf@circ@res@temp=1.5\pgf@circ@res@temp
+ \fi
+ %Calculate rotation of the label from direction and strip decimals
+ \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ % rotate the label at second or third quadrant:
+ \ifnum \pgfcirclabrot > 90 \ifnum \pgfcirclabrot < 270
+ \pgfmathsubtract{\pgf@circ@direction}{180}
+ \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ %invert the space relationships due to rotated strings
+ \ifnum \ctikzvalof{bipole/#1/position}>0
+ \pgf@circ@res@temp=1.5\pgf@circ@res@temp
+ \fi
+ \fi\fi
+ \pgfmathparse{\ctikzvalof{bipole/#1/position}>0?\pgf@circ@direction+90:\pgf@circ@direction-90}
+ \edef\pgf@circ@labposangle{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ % reset cm is not working correctly here
+ (labelcoor)++(\pgf@circ@labposangle:\the\pgf@circ@res@temp) coordinate(labelcoor)
+ node[anchor=mid, rotate=\pgfcirclabrot, \circuitikzbasekey/bipole #1 style]
+ (\ctikzvalof{bipole/name}#1){\pgf@circ@finallabels{#1}}
+}
+
+\def\pgf@circ@drawreglabels#1{
+ %Now calculate all shape positions
+ %Use mid-anchor at x-axis and base-anchor at y-axis, respectively.
+ %All points between will be addressed by angled-anchors:
+ \pgfextra{
+ % scale ex-distance to make it independent on scale
+ % thanks @marmot see https://tex.stackexchange.com/a/476018/38080
+ \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\myscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
+ % \typeout{ROT\tmpa\space\tmpb\space\tmpc\space\tmpd\space\myscale}
+ \pgfmathsetlength\pgf@circ@res@temp{\pgf@circ@ls/\myscale}
+ \pgfmathadd{\pgf@circ@labanc}{90}
+ \pgfmathround{\pgfmathresult}
+ \def\pgf@circ@labanctext{\pgf@circ@labanc}
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \pgfmathparse{mod(\pgf@circ@temp,180)>135?mod(\pgf@circ@temp,180)-180:mod(\pgf@circ@temp,180)}
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ %Values around 90 are at both y-axis
+ \ifnum \pgfcircmathresult > 84 \ifnum \pgfcircmathresult< 96
+ \pgfextra{\edef\pgf@circ@labpos{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}}
+ \ifnum \pgf@circ@labpos > 180
+ \ifnum \ctikzvalof{bipole/#1/position} > 0
+ \pgfextra{\def\pgf@circ@labanctext{mid west}}
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{mid east}}
+ \fi
+ \else
+ \ifnum \ctikzvalof{bipole/#1/position} > 0
+ \pgfextra{\def\pgf@circ@labanctext{mid east}}
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{mid west}}
+ \fi
+ \fi
+ \fi\fi
+ %Values between -5 and 5 are at pos /neg x-axis
+ \pgfextra{\def\uffa{}\newdimen\realshift\realshift=\dimexpr1pt\relax}
+ \ifnum \pgfcircmathresult <6 \ifnum \pgfcircmathresult > -6
+ \ifnum \ctikzvalof{bipole/#1/position} < 0
+ \ifnum \pgf@circ@labanc > 90
+ % using base coordinate instead of south to naturally align
+ % symbols with descendants; but this invalidate the effect of
+ % the inner sep, so recover it by shifting the anchor
+ % reset cm is not working sometime, use @marmot solution
+ % see https://tex.stackexchange.com/a/476018/38080
+ (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
+ \pgfextra{\def\pgf@circ@labanctext{base}}%base
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{north}}%north
+ \fi
+ \else
+ \ifnum \pgf@circ@labanc < 90
+ % shift, as above
+ (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
+ \pgfextra{\def\pgf@circ@labanctext{base}}%base
+ \else
+ \ifnum \pgf@circ@labanc > 180
+ % this shouldn't happen, but somehow it does (270 degree anchors)
+ % shift, as above
+ (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
+ \pgfextra{\def\pgf@circ@labanctext{base}}%base
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{north}}%north
+ \fi
+ \fi
+ \fi
+ \fi\fi
+ (labelcoor) node[anchor=\pgf@circ@labanctext,
+ inner sep=0.5\pgf@circ@res@temp, outer sep=0pt, \circuitikzbasekey/bipole #1 style,
+ ](\ctikzvalof{bipole/name}#1){\strut\pgf@circ@finallabels{#1}%
+ }
+}
+
+\def\pgf@circ@finallabels#1{%
+ \edef\pgf@temp{}%
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/unit}}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \ctikzvalof{bipole/#1/name}%
+ \else%
+ $\SI{\ctikzvalof{bipole/#1/name}}{\ctikzvalof{bipole/#1/unit}}$%
+ \fi%
+}
+
+\ctikzset{text/.style={t=#1}}
+\ctikzset{t/.code={%
+ \ctikzsetvalof{bipoles/twoport/text}{#1}%
+}}
+
+%%%% Stacked labels
+%
+% stacked labels by Romano Giannetti romano@rgtti.com
+% heavily based on Claudo Fiandrinos's https://tex.stackexchange.com/a/65792/38080
+% \expandafter trick inspired by Matthew Leingang's https://tex.stackexchange.com/a/12272/38080
+%
+% labels are in a tabular, globally aligned:
+% vertically with key l2 valign (default c)
+% c: center t: top b: bottom
+% horizontally with key l2 align (default l)
+% l: left c: centered r: right
+% you can switch sides using l2_=... and l2^=...
+% syntax is l2_ = line1 and line2 (same for l2^)
+%
+\ctikzset{%
+ l2 valign/.store in=\ltwo@valign, l2 valign=c,
+ l2 halign/.store in=\ltwo@halign, l2 halign=l,
+}
+\ctikzset{l2base/.code n args={2}{
+ \pgfkeys{/tikz/circuitikz/bipole/label/name=%
+ \bgroup
+ \setlength{\tabcolsep}{2pt}%
+ \def\ltwo@tabu{\tabular[\ltwo@valign]}%
+ \expandafter\ltwo@tabu\expandafter{\ltwo@halign}%
+ #1\\ #2%
+ \endtabular
+ \egroup
+ }%
+ \ctikzsetvalof{bipole/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#2}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+\ctikzset{l2/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l2 above/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l2^/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l2 below/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+\ctikzset{l2_/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+%%%---------- close: tex/pgfcirclabel
+%%%%%%%%%%% Springe nach tex/pgfcircvoltage
+%%%---------- open: tex/pgfcircvoltage.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Voltage management
+
+%% styles
+\ctikzset{bipole voltage style/.style={}}
+\tikzset{bipole voltage style/.code={
+ \ctikzset{bipole voltage style/.style={#1}}
+}}
+\tikzset{bipole voltage append style/.code={
+ \ctikzset{bipole voltage style/.append style={#1}}
+}}
+
+\ctikzset{v^>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v^</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v_>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
+\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
+\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
+\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
+
+% Default position varies whether the component is a voltage source
+% or not
+\ctikzset{v/.code = {
+ \ifpgf@circuit@bipole@isvoltage
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \fi
+ \fi
+ \ifpgf@circ@oldvoltagedirection
+ \ifpgf@circuit@bipole@iscurrent\ifpgf@circ@fixbatteries
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \fi\fi
+ \else
+ \ifpgf@circuit@bipole@iscurrent
+ \ifpgf@circuit@bipole@current@backward
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \fi\fi\fi
+ \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
+ \ctikzsetvalof{bipole/voltage/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ }
+}
+
+% american voltage font selection and symbol definition
+% the default font command is {} --- nothing
+\def\pgf@circ@avfont{\ctikzvalof{voltage/american font}}
+%
+% plus and minus symbols (default is $+$ and $-$, see pgfcirc.defines.tex)
+%
+\def\pgf@circ@avplus{\ctikzvalof{voltage/american plus}}
+\def\pgf@circ@avminus{\ctikzvalof{voltage/american minus}}
+
+%%
+\def\setscaledRlenforclass{%
+ \csname pgf@sh@ma@\ctikzvalof{bipole/name}\endcsname
+ \ifdefined\ctikzclass
+ \edef\pgf@temp{/tikz/circuitikz/\ctikzclass/scale}
+ \pgfkeysifdefined{\pgf@temp}
+ {\pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ {\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}
+ \else
+ \pgf@circ@scaled@Rlen=\pgf@circ@Rlen
+ \fi
+}
+
+%% Output routine for generic bipoles
+
+\def\pgf@circ@drawvoltagegeneric{
+ \pgfextra{
+ % \typeout{NAME:\ctikzvalof{bipole/name}}
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/straight label distance}
+ \pgfkeysifdefined{\pgf@temp}
+ {
+ \edef\partheight{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/straight label distance}}
+ \edef\tmpdistfromline{(\partheight\pgf@circ@scaled@Rlen)}
+ }
+ {
+ \pgfkeysifdefined{/tikz/circuitikz/bipoles/voltage/straight label distance}
+ {
+ \edef\partheight{\ctikzvalof{bipoles/voltage/straight label distance}}
+ \edef\tmpdistfromline{(\partheight\pgf@circ@scaled@Rlen)}
+ }
+ {%calculate default value from part height
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/height}
+ \pgfkeysifdefined{\pgf@temp}
+ {
+ \edef\partheight{0.5*\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/height}}
+ \edef\tmpdistfromline{(\partheight\pgf@circ@scaled@Rlen+0.2\pgf@circ@scaled@Rlen)}
+ }
+ {
+ \edef\tmpdistfromline{(.5\pgf@circ@scaled@Rlen)} %fallback to fixed value
+ }
+ }
+ }
+ % \typeout{KIND:\ctikzvalof{bipole/kind}\space RLEN:\the\pgf@circ@Rlen\space SCALED:\the\pgf@circ@scaled@Rlen}
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{\tmpdistfromline}
+ \else
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{-\tmpdistfromline}
+ \else
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
+ \fi
+ \fi
+ \else
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{-\tmpdistfromline}
+ \else
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{\tmpdistfromline}
+ \else
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
+ \fi
+ \fi
+ \fi
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@voltage@angle{90}
+ \else
+ \def\pgf@circ@voltage@angle{-90}
+ \fi
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/distance from node}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\distancefromnode{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/distance from node}} }
+ { \edef\distancefromnode{\ctikzvalof{voltage/distance from node}} }
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/bump b}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\bumpb{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/bump b}} }
+ { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
+ \edef\shiftv{\ctikzvalof{voltage/shift}}
+ % additional per-bipole voltage shift (internal)
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/additional label shift}
+ \pgfkeysifdefined{\pgf@temp}
+ {
+ \edef\addvshift{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/additional label shift}}
+ }
+ {
+ \edef\addvshift{0}
+ }
+ \newdimen{\absvshift}
+ \pgfmathsetlength{\absvshift}{(1+\shiftv+\addvshift)*(\distfromline)}
+ % put this to true to see the voltage label coordinate anchors
+ \newif\ifpgf@circ@debugv\pgf@circ@debugvfalse
+ }
+ % %\pgf@circ@Rlen/\ctikzvalof{current arrow scale} is equal to the length of the currarrow
+ coordinate (pgfcirc@midtmp) at ($(\tikztostart) ! \pgf@circ@Rlen/\ctikzvalof{current arrow scale} ! (anchorstartnode)$) %absolute move, minimum space is length of arrowhead
+ coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distancefromnode ! (anchorstartnode)$)
+ coordinate (pgfcirc@Vfrom@flat) at (pgfcirc@midtmp)
+ coordinate (pgfcirc@Vfrom) at ($(pgfcirc@midtmp) ! -\distfromline ! \pgf@circ@voltage@angle:(anchorstartnode)$)
+
+ coordinate (pgfcirc@midtmp) at ($(\tikztotarget) ! \pgf@circ@Rlen/\ctikzvalof{current arrow scale} ! (anchorendnode)$)%absolute move, minimum space is length of arrowhead
+ coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distancefromnode ! (anchorendnode)$)
+ coordinate (pgfcirc@Vto@flat) at (pgfcirc@midtmp)
+ coordinate (pgfcirc@Vto) at ($(pgfcirc@midtmp) ! \distfromline ! \pgf@circ@voltage@angle : (anchorendnode)$)
+
+ \ifpgf@circuit@bipole@voltage@below
+ \ifpgf@circ@debugv
+ node [ocirc, fill=red] at (anchorstartnode) {}
+ node [ocirc, fill=blue] at (anchorendnode) {}
+ node [ocirc, fill=green] at (pgfcirc@Vto) {}
+ node [ocirc, fill=yellow] at (pgfcirc@Vfrom) {}
+ node [odiamondpole, fill=green] at (pgfcirc@Vto@flat) {}
+ node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom@flat) {}
+ \fi
+ coordinate (pgfcirc@Vto) at ($(pgfcirc@Vto@flat) ! \absvshift!90 : (anchorendnode)$)
+ coordinate (pgfcirc@Vfrom) at ($(pgfcirc@Vfrom@flat) ! \absvshift!-90 : (anchorstartnode)$)
+ coordinate (pgfcirc@Vcont1t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
+ coordinate (pgfcirc@Vcont2t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
+ coordinate (pgfcirc@Vcont1) at ($(pgfcirc@Vcont1t) ! -\absvshift!90 : (pgfcirc@Vcont2t)$)
+ coordinate (pgfcirc@Vcont2) at ($(pgfcirc@Vcont2t) ! -\absvshift!-90 : (pgfcirc@Vcont1t)$)
+ \ifpgf@circ@debugv
+ node [odiamondpole, fill=green] at (pgfcirc@Vto) {}
+ node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom) {}
+ node [osquarepole, fill=red] at (pgfcirc@Vcont1) {}
+ node [osquarepole, fill=blue] at (pgfcirc@Vcont2) {}
+ \fi
+ \else
+ \ifpgf@circ@debugv
+ node [ocirc, fill=red] at (anchorstartnode) {}
+ node [ocirc, fill=blue] at (anchorendnode) {}
+ node [ocirc, fill=green] at (pgfcirc@Vto) {}
+ node [ocirc, fill=yellow] at (pgfcirc@Vfrom) {}
+ node [odiamondpole, fill=green] at (pgfcirc@Vto@flat) {}
+ node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom@flat) {}
+ \fi
+ coordinate (pgfcirc@Vto) at ($(pgfcirc@Vto@flat) ! -\absvshift!90 : (anchorendnode)$)
+ coordinate (pgfcirc@Vfrom) at ($(pgfcirc@Vfrom@flat) ! -\absvshift!-90 : (anchorstartnode)$)
+ coordinate (pgfcirc@Vcont1t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
+ coordinate (pgfcirc@Vcont2t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
+ coordinate (pgfcirc@Vcont1) at ($(pgfcirc@Vcont1t) ! \absvshift!90 : (pgfcirc@Vcont2t)$)
+ coordinate (pgfcirc@Vcont2) at ($(pgfcirc@Vcont2t) ! \absvshift!-90 : (pgfcirc@Vcont1t)$)
+ \ifpgf@circ@debugv
+ node [odiamondpole, fill=green] at (pgfcirc@Vto) {}
+ node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom) {}
+ node [osquarepole, fill=red] at (pgfcirc@Vcont1) {}
+ node [osquarepole, fill=blue] at (pgfcirc@Vcont2) {}
+ \fi
+ \fi
+
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@straight
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) --(pgfcirc@Vfrom) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
+ \else
+ (pgfcirc@Vfrom) --(pgfcirc@Vto) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
+ node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {}
+ (pgfcirc@Vfrom)
+ \else
+ (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
+ node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {}
+ (pgfcirc@Vto)
+ \fi
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ \else
+ (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ \fi
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ \else
+ (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ \fi
+ \fi
+ \fi
+}
+
+%% Output routine for voltage sources
+\def\pgf@circ@drawvoltagegenerator{
+ % the following is affected indirectly by voltage/shift, you can move the arrow with voltage/bump a.
+ % it's not perfect, but I can't find the way to do it correctly...
+ \pgfextra{
+ \edef\shiftv{\ctikzvalof{voltage/shift}}
+ \edef\bumpa{\ctikzvalof{voltage/bump a}}
+ \pgfmathsetmacro{\bumpaplus}{\bumpa + 0.5*\shiftv} % coefficient added "by feel". Sorry.
+ }
+ \ifpgf@circuit@bipole@voltage@below
+ coordinate (pgfcirc@Vfrom) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-120)$)
+ coordinate (pgfcirc@Vto) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-60)$)
+ \else
+ coordinate (pgfcirc@Vfrom) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.120)$)
+ coordinate (pgfcirc@Vto) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.60)$)
+ \fi
+ % fix the (unused in this case) Vcont1/2 coords for label placement along the line
+ coordinate (pgfcirc@Vcont1) at (pgfcirc@Vto)
+ coordinate (pgfcirc@Vcont2) at (pgfcirc@Vfrom)
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) -- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {} (pgfcirc@Vfrom)
+ \else
+ (pgfcirc@Vfrom) -- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {} (pgfcirc@Vto)
+ \fi
+ \else% american voltage
+ \ifpgf@circuit@bipole@voltageoutsideofsymbol
+ % if it is a battery, must put + and -
+
+ \ifpgf@circ@fixbatteries
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ \else
+ (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ \else
+ (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ \fi
+ \fi
+ \fi
+ \fi
+}
+
+%% Output routine
+\def\pgf@circ@drawvoltage{% node name
+ \pgfextra{ %WARNING: indentation is probably wrong
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \else
+ \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \else
+ \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+
+ % this must be set *before* changing for mirroring and inverting; in that case
+ % the xscale/yscale parameters take it into account
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@voltage@label@where{90}
+ \fi
+
+ % magic to counteract the scale and yscale effects (there should be a better way...)
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@voltage@below
+ \pgf@circuit@bipole@voltage@belowfalse
+ \else
+ \pgf@circuit@bipole@voltage@belowtrue
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@below
+ \pgf@circuit@bipole@voltage@belowfalse
+ \else
+ \pgf@circuit@bipole@voltage@belowtrue
+ \fi
+ \fi
+
+ % take into account scaling
+ \setscaledRlenforclass
+
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/european label distance}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\eudist{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/european label distance}} }
+ { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
+ % find the height of the bipole or use a default value
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/height}
+ \pgfkeysifdefined{\pgf@temp}
+ {\pgfmathsetmacro{\partheightf}{0.5*\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/height}}
+ \edef\partheight{\partheightf\pgf@circ@scaled@Rlen}}
+ {\edef\partheight{(.5\pgf@circ@scaled@Rlen)}} %fallback to fixed value
+ \newdimen{\alshift}
+ % this is more or less the same of the legacy code; we shift the american label a bit
+ % outside the (+) -- (-) line
+ \pgfmathsetlength{\alshift}{(\ctikzvalof{voltage/american label distance}-0.6)*\partheight}
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ }%end pgfextra
+
+ \ifpgf@circuit@bipole@isvoltage
+ \pgf@circ@drawvoltagegenerator
+ \else
+ \pgf@circ@drawvoltagegeneric
+ \fi
+
+ \ifpgf@circuit@bipole@voltage@straight
+ coordinate (Vlab) at ($(pgfcirc@Vto)!0.5!(pgfcirc@Vfrom) $)
+ node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt,
+ \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
+ at (Vlab) {\pgf@circ@finallabels{voltage/label}}
+ \else
+ \ifpgf@circuit@europeanvoltage
+ coordinate (Vlab) at ($(pgfcirc@Vcont1)!0.5!(pgfcirc@Vcont2)$)
+ \else
+ coordinate (Vlab) at ($(pgfcirc@Vfrom)!0.5!(pgfcirc@Vto)$)
+ \ifpgf@circuit@bipole@isvoltage\else
+ % add a bit of space for american labels above their symbols in the normal case. You can avoid that
+ % with voltage/american label distance=0.5 (it's measured from the center of the component, in heights)
+ coordinate (Vlab) at ($(Vlab) ! \alshift ! \pgf@circ@bipole@voltage@label@where :(pgfcirc@Vto)$)
+ \fi
+ \fi
+ node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt,
+ \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
+ at (Vlab) {\pgf@circ@finallabels{voltage/label}}
+ \fi
+}%end drawvoltages
+%%%---------- close: tex/pgfcircvoltage
+%%%%%%%%%%% Springe nach tex/pgfcirccurrent
+%%%---------- open: tex/pgfcirccurrent.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Current handling
+
+%% styles
+\ctikzset{bipole current style/.style={}}
+\tikzset{bipole current style/.code={
+ \ctikzset{bipole current style/.style={#1}}
+}}
+\tikzset{bipole current append style/.code={
+ \ctikzset{bipole current style/.append style={#1}}
+}}
+
+%% Options
+\ctikzset{i^>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i>^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i>_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i^</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i<^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i<_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i/.code = {
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
+ \ctikzsetvalof{bipole/current/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ %reverse current direction for voltage sources
+ \ifpgf@circ@oldvoltagedirection\else
+ \ifpgf@circuit@bipole@isvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below }
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \fi\fi\fi
+ }
+}
+
+\ifpgf@circ@oldvoltagedirection
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
+\else
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
+\fi
+\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
+\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
+\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
+
+%% Output routine
+\def\pgf@circ@drawcurrent{
+ \pgfextra{
+ \edef\pgf@circ@ffffff{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@bipole@current@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@current@label@where{+90}
+ \fi
+ }
+
+ \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
+ \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line
+ (\tikztostart)--(\tikztotarget)
+ \else% normal bipole or source
+ \ifpgf@circuit@bipole@current@before
+ (\tikztostart)--(anchorstartnode)
+ \else
+ (anchorendnode)--(\tikztotarget)
+ \fi
+ \fi
+ \ifpgf@circuit@bipole@current@backward
+ \pgfextra{
+ \pgfmathsubtract{\pgf@circ@ffffff}{180}
+ \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ \fi
+ coordinate[currarrow,pos=\ctikzvalof{current/distance},rotate=\pgf@circ@ffffff,
+ anchor=center](Iarrow)
+ (Iarrow.\pgf@circ@bipole@current@label@where)
+ node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole current style]
+ (\ctikzvalof{bipole/name}current){\pgf@circ@finallabels{current/label}}
+}
+
+%%%---------- close: tex/pgfcirccurrent
+%%%%%%%%%%% Springe nach tex/pgfcircflow
+%%%---------- open: tex/pgfcircflow.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% flow handling
+
+%% styles
+\ctikzset{bipole flow style/.style={}}
+\tikzset{bipole flow style/.code={
+ \ctikzset{bipole flow style/.style={#1}}
+}}
+\tikzset{bipole flow append style/.code={
+ \ctikzset{bipole flow style/.append style={#1}}
+}}
+
+%% Options
+\ctikzset{f^>/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/curflowrent/y position = above
+ }
+}
+
+\ctikzset{f_>/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f>^/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f>_/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f^</.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f_</.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f<^/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f<_/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f</.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = backward} }
+\ctikzset{f_/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = below } }
+\ctikzset{f>/.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = forward } }
+\ctikzset{f^/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = above } }
+
+\ctikzset{f/.code = {
+ \pgfkeys{\circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/flow/label/name=#1}
+ \ctikzsetvalof{bipole/flow/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}
+}
+
+%% Output routine
+\def\pgf@circ@drawflow{
+ \pgfextra{
+ \edef\pgf@circ@ffffff{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@bipole@flow@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@flow@label@where{+90}
+ \fi
+ }
+
+ \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
+ \ifx\pgf@circ@temp\pgf@temp%draw flow at a short at middle of the line
+ (\tikztostart)--(\tikztotarget)
+ \else% normal bipole or source
+ \ifpgf@circuit@bipole@flow@before
+ (\tikztostart)--(anchorstartnode)
+ \else
+ (anchorendnode)--(\tikztotarget)
+ \fi
+ \fi
+ \pgfextra{
+ \ifpgf@circuit@bipole@flow@backward
+ \ifpgf@circuit@bipole@flow@below
+ \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \else
+ \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \fi
+ \pgfmathsubtract{\pgf@circ@ffffff}{180}
+ \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \else
+ \ifpgf@circuit@bipole@flow@below
+ \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \else
+ \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \fi
+ \fi
+ }
+ coordinate[flowarrow,pos=\ctikzvalof{flow/distance},rotate=\pgf@circ@ffffff,yshift=\flow@offset, anchor=center](Farrowpos)
+ (Farrowpos.\pgf@circ@bipole@flow@label@where) node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole flow style]
+ (\ctikzvalof{bipole/name}flow){\pgf@circ@finallabels{flow/label}}
+}
+
+%%%---------- close: tex/pgfcircflow
+
+% notice that the default is nooldvoltagedirection; it's not explicitly set to allow for the warning
+\ExecuteOptions{nofetbodydiode, nofetsolderdot, europeancurrents, europeanvoltages,americanports, americanresistors, cuteinductors ,europeangfsurgearrester, nosiunitx, noarrowmos, smartlabels}
+
+\ProcessOptions\relax
+
+%%%%%%%%%%% Springe nach tex/pgfcircpath
+%%%---------- open: tex/pgfcircpath.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+
+\def\pgf@circ@direction{0.0}
+
+% Names
+\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
+\ctikzset{n/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/name=#1}
+}}
+
+% Reflect the node along
+\ctikzset{mirrored/.is choice}
+\ctikzset{mirror value/.initial=1}
+\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
+\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
+\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
+
+% Invert node along path
+\ctikzset{inverted/.is choice}
+\ctikzset{invert value/.initial=1}
+\ctikzset{inverted/true/.code = {\ctikzsetvalof{invert value}{-1}\pgf@circuit@bipole@invertedtrue}}
+\ctikzset{inverted/false/.code = {\ctikzsetvalof{invert value}{1}\pgf@circuit@bipole@invertedfalse}}
+\ctikzset{invert/.style = {/tikz/circuitikz/inverted=true}}
+\newif\ifpgf@circuit@bipole@inverted
+\ctikzset{bipole/inverted/.is if=pgf@circuit@bipole@inverted}
+
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+
+% Initialize paths
+\def\pgfcircresetpath{
+ \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90, ,bipole/annotation/name=, bipole/annotation/position=-90,
+ bipole/inverted=false, bipole/kind=,
+ bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
+ bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
+ bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
+ bipole/current/y position=above, bipole/current/direction=forward,
+ mirrored=false
+ }
+}
+
+%% Helper function for path-function to ensure using anchors between nodes
+\def\set@explicit@center@anchor#1{
+ \pgfutil@ifundefined{pgf@sh@ns@#1}
+ {
+ %This coordinate is no node(but a relative position or a coordinate), no further handling needed
+ }{
+ \pgfutil@in@.{#1}
+ \ifpgfutil@in@
+ % Anchor is used, do nothing!
+ \else%
+ \let\tikz@moveto@waiting=\relax
+ \pgfpathmoveto{\tikz@last@position}%force movement, because tikz@moveto@waiting
+ \edef#1{#1.center}%ensure using center anchor
+ \fi
+}
+}
+
+
+%% Generic bipole path
+%% I am not user what the second argument is needed for
+\def\pgf@circ@bipole@path#1#2{
+
+ \pgfextra{
+ \set@explicit@center@anchor{\tikztostart}
+ \set@explicit@center@anchor{\tikztotarget}
+ \pgfsyssoftpath@getcurrentpath{\myp@th}%% save current path to extend after calculation of correct start/end coordinates
+ \ctikzset{bipole/kind = #1}
+ \edef\pgf@temp{\ctikzvalof{bipole/name}}
+ \def\pgf@circ@temp{}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = #1\pgf@circ@rand} % create it (re-usage should not create problem, but...)
+ \fi
+ }
+
+ (\tikztostart) coordinate (\ctikzvalof{bipole/name}start)%necessary to get correct coordinates in the case of relative start/end or constructions like ((node1)-|(node2))
+ (\tikztotarget) coordinate (\ctikzvalof{bipole/name}end)
+ \pgfextra{
+ \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \pgfmathround{\pgfmathresult}
+ \edef\pgf@circ@direction{\pgfmathresult}%Calculate direction(angle) of path
+ \pgfsyssoftpath@setcurrentpath{\myp@th}
+ }
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ \else
+ --($(\ctikzvalof{bipole/name}start) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}end)$) %ugly workaround to get correct linejoins(node breaks path?)
+ \fi
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)%%positio of middle node
+ node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}, xscale=\ctikzvalof{invert value}]
+ (\ctikzvalof{bipole/name}) {}
+ \ifpgf@circuit@bipole@inverted
+ \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathend)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathstart)
+ \else
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.right)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.left)
+ \fi
+ \else
+ \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathstart)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathend)
+ \else
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.left)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.right)
+ \fi
+ \fi
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ \else
+ (\ctikzvalof{bipole/name}start.center) -- (anchorstartnode)
+ (anchorendnode) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+
+ \drawpoles
+ \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabels{label}\fi
+ \pgf@circ@ifkeyempty{bipole/annotation/name}\else\pgf@circ@drawlabels{annotation}\fi
+ \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
+ \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
+ \pgf@circ@ifkeyempty{bipole/flow/label/name}\else\pgf@circ@drawflow\fi
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ (\ctikzvalof{bipole/name}end)%Move to end of path
+ \else
+ ($(\ctikzvalof{bipole/name}end) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}start)$) -- (\ctikzvalof{bipole/name}end)%ugly workaround to get correct linejoins(node breaks path?)
+ %tikztostart and tikztotarget could not be used, because it would break if target coordinate is something like (node1-|node2)
+
+ \fi
+ % reset
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ \tikztonodes%draw pending nodes an path
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Handling of terminals
+
+\ctikzset{bipole/nodes/.is family}
+\ctikzset{bipole/nodes/left/.initial=none}
+\ctikzset{bipole/nodes/right/.initial=none}
+\tikzset{bipole nodes/.style n args={2}{%
+ \circuitikzbasekey/bipole/nodes/left=#1,
+ \circuitikzbasekey/bipole/nodes/right=#2
+ }
+}
+
+%% Easily usable styles
+
+\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+
+% rectjoinfill workarounds
+
+\ctikzset{.-/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{.-*/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{.-o/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{.-d/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{-./.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{o-./.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{*-./.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{d-./.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{.-./.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+
+\tikzset{reversed/.style = {\circuitikzbasekey/bipole/inverted=true}}
+
+\def\drawpoles{
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{none}}
+ \ifx\pgf@temp\pgf@circ@temp\else(\tikztostart) node[\pgf@circ@temp] {}\fi
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} }
+ \ifx\pgf@temp\pgf@circ@temp\else(\tikztotarget) node[\pgf@circ@temp] {}\fi
+}
+
+%% Path definitions
+\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
+\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
+\def\pgf@circ@sresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{thermistor}{#1}\else\pgf@circ@bipole@path{resistivesens}{#1}\fi}
+\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
+\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
+\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
+\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
+\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
+\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
+\def\pgf@circ@capacitivesens@path#1{\pgf@circ@bipole@path{capacitivesens}{#1}}
+\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
+%% polar capacitor is deprectaed, use curved capacitor instead
+\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
+\def\pgf@circ@ccapacitor@path#1{\pgf@circ@bipole@path{ccapacitor}{#1}}
+\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
+\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
+\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
+\def\pgf@circ@batteryone@path#1{\pgf@circ@bipole@path{battery1}{#1}}
+\def\pgf@circ@batterytwo@path#1{\pgf@circ@bipole@path{battery2}{#1}}
+\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
+\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
+\def\pgf@circ@cutechoke@path#1{\pgf@circ@bipole@path{cutechoke}{#1}}
+\def\pgf@circ@inductor@path#1{%
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@europeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@cuteinductor@path{#1}%
+ \else%
+ \pgf@circ@americaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@vinductor@path#1{
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@veuropeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@vcuteinductor@path{#1}%
+ \else%
+ \pgf@circ@vamericaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@inductivesens@path#1{%
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@europeaninductivesens@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@cuteinductivesens@path{#1}%
+ \else%
+ \pgf@circ@americaninductivesens@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
+\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
+\def\pgf@circ@europeaninductivesens@path#1{\pgf@circ@bipole@path{sfullgeneric}{#1}}
+\def\pgf@circ@americaninductivesens@path#1{\pgf@circ@bipole@path{samericaninductor}{#1}}
+\def\pgf@circ@cuteinductivesens@path#1{\pgf@circ@bipole@path{scuteinductor}{#1}}
+\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
+\def\pgf@circ@bulb@path#1{\pgf@circ@bipole@path{bulb}{#1}}
+\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
+\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
+\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
+\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
+\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
+\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
+\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
+\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
+\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
+\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
+\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
+\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
+\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
+\def\pgf@circ@ecsource@path#1{\pgf@circ@bipole@path{ecsource}{#1}}
+\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
+\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
+\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
+\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
+\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
+\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
+\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
+\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
+\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
+\def\pgf@circ@nos@path#1{\pgf@circ@bipole@path{nos}{#1}}
+\def\pgf@circ@ncs@path#1{\pgf@circ@bipole@path{ncs}{#1}}
+\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
+\def\pgf@circ@ncpushbutton@path#1{\pgf@circ@bipole@path{ncpushbutton}{#1}}
+\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
+\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
+\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
+\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
+\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
+\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
+\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
+\def\pgf@circ@oscope@path#1{\pgf@circ@bipole@path{oscope}{#1}}
+\def\pgf@circ@empty@path#1{}
+\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
+\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
+\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
+\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
+\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
+\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
+\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
+\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
+\def\pgf@circ@mstline@path#1{\pgf@circ@bipole@path{mstline}{#1}}
+\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
+\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
+\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
+\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
+\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
+
+\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
+\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
+\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
+
+\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
+\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
+\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
+\def\pgf@circ@bandstop@path#1{\pgf@circ@bipole@path{bandstop}{#1}}
+\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
+\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
+\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
+\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
+\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
+\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
+\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
+\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
+\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
+\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
+\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
+\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
+\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
+\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
+\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
+
+%%Mechanical
+\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
+\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
+\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
+\def\pgf@circ@viscoe@path#1{\pgf@circ@bipole@path{viscoe}{#1}}
+
+%% Styles
+
+\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
+\def\compattikzset#1{\tikzset{\comnpatname#1}}
+
+%\def\ctikzsetbipole#1#2{%
+% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
+%}
+
+\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
+\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
+\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
+\compattikzset{viscoe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@viscoe@path, l=#1}}
+\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
+\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
+\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
+\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
+\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
+\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
+\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
+\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
+\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
+\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
+\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
+\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
+\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
+\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
+\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
+\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+% polar capacitor is deprecated, use curved capacitor instead
+\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
+\compattikzset{curved capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ccapacitor@path, l=#1}}
+\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
+\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
+\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batteryone@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{battery2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batterytwo@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
+\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
+\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
+\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
+\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
+\compattikzset{cute choke/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cutechoke@path, l=#1}}
+\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
+\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
+\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
+\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
+\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
+\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
+\compattikzset{transmission line/.style = {tline = #1}}
+\compattikzset{TL/.style = {tline = #1}}
+\compattikzset{mstline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mstline@path, l=#1}}
+\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{empty controlled source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+
+\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source = #1, \circuitikzbasekey/bipole/is current=true}}
+\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source = #1, \circuitikzbasekey/bipole/is current=true}}
+
+
+\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
+\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
+\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
+\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
+\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
+\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
+\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
+
+\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
+\compattikzset{bulb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bulb@path, l=#1}}
+
+\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
+\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
+\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
+\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
+\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
+
+\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
+\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
+\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
+\compattikzset{bandstop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandstop@path}}
+\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
+\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
+\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
+\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
+\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
+\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
+\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
+\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
+\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
+\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
+\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
+\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
+\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
+\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
+\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
+
+% % % % % %
+% % Begin of Diodes
+% % % % % %
+
+\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
+\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
+\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
+\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
+\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
+\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
+\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
+\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
+\def\pgf@circ@fullbidirectionaldiode@path#1{\pgf@circ@bipole@path{fullbidirectionaldiode}{#1}}
+\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
+\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
+\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
+\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
+\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
+\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
+\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
+\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
+\def\pgf@circ@emptybidirectionaldiode@path#1{\pgf@circ@bipole@path{emptybidirectionaldiode}{#1}}
+
+\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
+\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
+\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
+\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
+\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
+\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
+\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
+\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
+\compattikzset{full bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullbidirectionaldiode@path}}
+\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
+\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
+
+\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{empty bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptybidirectionaldiode@path}}
+\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
+\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
+%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
+
+\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
+\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
+\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
+\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
+\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
+\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
+\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
+\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
+\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
+\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
+\compattikzset{bidirectionaldiode/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
+
+%% Define Shortcuts
+\compattikzset{Do/.style = {\comnpatname empty diode}}
+\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
+\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
+\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
+\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
+\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
+\compattikzset{leDo/.style = {\comnpatname empty led}}
+\compattikzset{VCo/.style = {\comnpatname empty varcap}}
+\compattikzset{biDo/.style = {\comnpatname empty bidirectionaldiode}}
+\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
+\compattikzset{Tro/.style = {\comnpatname empty triac}}
+
+\compattikzset{D*/.style = {\comnpatname full diode}}
+\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
+\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
+\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
+\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
+\compattikzset{pD*/.style = {\comnpatname full photodiode}}
+\compattikzset{leD*/.style = {\comnpatname full led}}
+\compattikzset{VC*/.style = {\comnpatname full varcap}}
+\compattikzset{biD*/.style = {\comnpatname full bidirectionaldiode}}
+\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
+\compattikzset{Tr*/.style = {\comnpatname full triac}}
+
+\compattikzset{D/.style = {\comnpatname diode}}
+\compattikzset{tD/.style = {\comnpatname tunnel diode}}
+\compattikzset{zD/.style = {\comnpatname Zener diode}}
+\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
+\compattikzset{sD/.style = {\comnpatname Schottky diode}}
+\compattikzset{pD/.style = {\comnpatname photodiode}}
+\compattikzset{leD/.style = {\comnpatname led}}
+\compattikzset{VC/.style = {\comnpatname varcap}}
+\compattikzset{biD/.style = {\comnpatname bidirectionaldiode}}
+\compattikzset{Ty/.style = {\comnpatname thyristor}}
+\compattikzset{Tr/.style = {\comnpatname triac}}
+
+\compattikzset{D-/.style = {\comnpatname stroke diode}}
+\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
+\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
+\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
+\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
+\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
+\compattikzset{leD-/.style = {\comnpatname stroke led}}
+\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
+\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
+\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
+\compattikzset{biD-/.style = {\comnpatname empty bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
+
+% % % % % %
+% % End of Diodes
+% % % % % %
+
+
+\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
+\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
+\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
+\compattikzset{ncs/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
+\compattikzset{nos/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
+\compattikzset{normal closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
+\compattikzset{normal open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
+\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
+\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{nopb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{normally open push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{ncpb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
+\compattikzset{normally closed push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
+\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
+
+\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
+\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
+\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
+\tikzset{oscope/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@oscope@path, l=#1}}
+
+% cute switches
+%% closed cute switch
+\def\pgf@circ@cuteclosedswitch@path#1{\pgf@circ@bipole@path{cuteclosedswitch}{#1}}
+\compattikzset{cute closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosedswitch@path, l=#1}}
+\compattikzset{ccsw/.style= {\comnpatname cute closed switch= #1}}
+
+%% open cute switch
+\def\pgf@circ@cuteopenswitch@path#1{\pgf@circ@bipole@path{cuteopenswitch}{#1}}
+\compattikzset{cute open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopenswitch@path, l=#1}}
+\compattikzset{cosw/.style= {\comnpatname cute open switch= #1}}
+
+%% closing cute switch
+\def\pgf@circ@cuteclosingswitch@path#1{\pgf@circ@bipole@path{cuteclosingswitch}{#1}}
+\compattikzset{cute closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosingswitch@path, l=#1}}
+\compattikzset{ccgsw/.style= {\comnpatname cute closing switch= #1}}
+
+%% opening cute switch
+\def\pgf@circ@cuteopeningswitch@path#1{\pgf@circ@bipole@path{cuteopeningswitch}{#1}}
+\compattikzset{cute opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopeningswitch@path, l=#1}}
+\compattikzset{cogsw/.style= {\comnpatname cute opening switch= #1}}
+
+
+% short forms
+\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, l=#1}}
+
+\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path, i=#1}}
+\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosource@path, v=#1}}
+
+\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
+\compattikzset{isource/.style = {\comnpatname current source = #1}}
+\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{ecsource/.style = {\comnpatname empty controlled source = #1}}
+\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
+\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+
+\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+
+\compattikzset{R/.style= {\comnpatname resistor = #1}}
+\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
+\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
+\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
+\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
+\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
+\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
+\compattikzset{C/.style = {\comnpatname capacitor = #1}}
+\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
+%% pC is deprecated, use cC instead
+\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
+\compattikzset{cC/.style = {\comnpatname curved capacitor = #1}}
+\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
+\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
+\compattikzset{L/.style = {\comnpatname inductor = #1}}
+\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
+\compattikzset{V/.style = {\comnpatname voltage source = #1}}
+\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
+\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
+ \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
+ \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
+ \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+
+%current sources
+\compattikzset{I/.style = {\comnpatname current source = #1}}
+\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
+ \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
+ \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
+ \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+
+% cute sources
+\def\pgf@circ@vsourceC@path#1{\pgf@circ@bipole@path{vsourceC}{#1}}
+\compattikzset{cute european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{vsourceC/.style= {\comnpatname cute european voltage source= #1}}
+\compattikzset{ceV/.style= {\comnpatname cute european voltage source= #1}}
+
+\def\pgf@circ@isourceC@path#1{\pgf@circ@bipole@path{isourceC}{#1}}
+\compattikzset{cute european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{isourceC/.style= {\comnpatname cute european current source= #1}}
+\compattikzset{ceI/.style= {\comnpatname cute european current source= #1}}
+
+\def\pgf@circ@cvsourceC@path#1{\pgf@circ@bipole@path{cvsourceC}{#1}}
+\compattikzset{cute european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{cvsourceC/.style= {\comnpatname cute european controlled voltage source= #1}}
+\compattikzset{cceV/.style= {\comnpatname cute european controlled voltage source= #1}}
+
+\def\pgf@circ@cisourceC@path#1{\pgf@circ@bipole@path{cisourceC}{#1}}
+\compattikzset{cute european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{cisourceC/.style= {\comnpatname cute european controlled current source= #1}}
+\compattikzset{cceI/.style= {\comnpatname cute european controlled current source= #1}}
+
+% noise sources
+\def\pgf@circ@vsourceN@path#1{\pgf@circ@bipole@path{vsourceN}{#1}}
+\compattikzset{noise voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceN@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{vsourceN/.style= {\comnpatname noise voltage source= #1}}
+\compattikzset{nV/.style= {\comnpatname noise voltage source= #1}}
+
+\def\pgf@circ@isourceN@path#1{\pgf@circ@bipole@path{isourceN}{#1}}
+\compattikzset{noise current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceN@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{isourceN/.style= {\comnpatname noise current source= #1}}
+\compattikzset{nI/.style= {\comnpatname noise current source= #1}}
+
+% resistive sensor american style
+\def\pgf@circ@resistivesens@path#1{\pgf@circ@bipole@path{resistivesens}{#1}}
+\compattikzset{american resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistivesens@path, l=#1}}
+\compattikzset{european resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
+\compattikzset{resistive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@sresistor@path, l=#1}}
+\compattikzset{sR/.style= {\comnpatname resistive sensor= #1}}
+
+\compattikzset{capacitive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitivesens@path, l=#1}}
+\compattikzset{sC/.style= {\comnpatname capacitive sensor= #1}}
+
+\compattikzset{cute inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductivesens@path, l=#1}}
+\compattikzset{european inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductivesens@path, l=#1}}
+\compattikzset{american inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductivesens@path, l=#1}}
+\compattikzset{inductive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductivesens@path, l=#1}}
+\compattikzset{sL/.style= {\comnpatname inductive sensor= #1}}
+
+\compattikzset{Mr/.style = {\comnpatname memristor}}
+
+\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
+\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
+\compattikzset{spst/.style = {\comnpatname switch = #1}}
+
+\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
+
+\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
+\compattikzset{vss/.style = {\comnpatname vee = #1}}
+
+% activate the to-style crossing
+\def\pgf@circ@crossing@path#1{\pgf@circ@bipole@path{crossing}{#1}}
+\compattikzset{crossing/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@crossing@path, l=#1}}
+\compattikzset{xing/.style= {\comnpatname crossing= #1}}
+
+%% loudspeaker and microphone
+
+\def\pgf@circ@loudspeaker@path#1{\pgf@circ@bipole@path{loudspeaker}{#1}}
+\compattikzset{loudspeaker/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@loudspeaker@path, l=#1}}
+
+\def\pgf@circ@mic@path#1{\pgf@circ@bipole@path{mic}{#1}}
+\compattikzset{mic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mic@path, l=#1}}
+
+% more instrument
+\def\pgf@circ@rmeter@path#1{\pgf@circ@bipole@path{rmeter}{#1}}
+\compattikzset{rmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeter@path, l=#1}}
+\def\pgf@circ@rmeterwa@path#1{\pgf@circ@bipole@path{rmeterwa}{#1}}
+\compattikzset{rmeterwa/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeterwa@path, l=#1}}
+\def\pgf@circ@smeter@path#1{\pgf@circ@bipole@path{smeter}{#1}}
+\compattikzset{smeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@smeter@path, l=#1}}
+% current loop probes
+\def\pgf@circ@iloop@path#1{\pgf@circ@bipole@path{iloop}{#1}}
+\compattikzset{iloop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop@path, l=#1}}
+\def\pgf@circ@iloop2@path#1{\pgf@circ@bipole@path{iloop2}{#1}}
+\compattikzset{iloop2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop2@path, l=#1}}
+% qucs-style probes
+\def\pgf@circ@qiprobe@path#1{\pgf@circ@bipole@path{qiprobe}{#1}}
+\compattikzset{qiprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qiprobe@path, l=#1}}
+\def\pgf@circ@qvprobe@path#1{\pgf@circ@bipole@path{qvprobe}{#1}}
+\compattikzset{qvprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qvprobe@path, l=#1}}
+\def\pgf@circ@qpprobe@path#1{\pgf@circ@bipole@path{qpprobe}{#1}}
+\compattikzset{qpprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qpprobe@path, l=#1}}
+% multiwire(s)
+\def\pgf@circ@bmultiwire@path#1{\pgf@circ@bipole@path{bmultiwire}{#1}}
+\compattikzset{bmultiwire/.style = {\circuitikzbasekey,
+/tikz/to path=\pgf@circ@bmultiwire@path, l=#1}}
+\def\pgf@circ@multiwire@path#1{\pgf@circ@bipole@path{multiwire}{#1}}
+\compattikzset{multiwire/.style = {\circuitikzbasekey,
+/tikz/to path=\pgf@circ@multiwire@path, l=#1}}
+
+% reed switches
+\def\pgf@circ@reed@path#1{\pgf@circ@bipole@path{reed}{#1}}
+\compattikzset{reed/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@reed@path, l=#1}}
+
+% Transistor like bipoles
+
+\def\pgf@circ@trans@path#1#2{
+ \pgfextra{
+ \edef\pgf@temp{\ctikzvalof{bipole/name}}
+ \def\pgf@circ@temp{#2}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
+ \fi
+ }
+ \ifpgf@circuit@bipole@inverted
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ \else
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ \fi
+ \pgfextra{
+ \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \pgfmathadd{\pgfmathresult}{-90}
+ \pgfmathround{\pgfmathresult}
+ \edef\pgf@circ@direction{\pgfmathresult}
+ }
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)
+ node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
+ (\ctikzvalof{bipole/name}) {}
+ node {\ctikzvalof{bipole/label/name}}
+ \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
+ (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
+ \else
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
+ (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+ \drawpoles
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ (\tikztotarget) \tikztonodes % e si continua
+}
+
+
+\def\pgf@circ@definetranspath#1{
+ \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
+}
+
+\pgf@circ@definetranspath{elmech}
+\pgf@circ@definetranspath{nmos}
+\pgf@circ@definetranspath{pmos}
+\pgf@circ@definetranspath{hemt}
+\pgf@circ@definetranspath{npn}
+\pgf@circ@definetranspath{pnp}
+\pgf@circ@definetranspath{nfet}
+\pgf@circ@definetranspath{nigfete}
+\pgf@circ@definetranspath{nigfetd}
+\pgf@circ@definetranspath{nigfetebulk}
+\pgf@circ@definetranspath{pfet}
+\pgf@circ@definetranspath{pigfete}
+\pgf@circ@definetranspath{pigfetd}
+\pgf@circ@definetranspath{pigfetebulk}
+\pgf@circ@definetranspath{njfet}
+\pgf@circ@definetranspath{pjfet}
+\pgf@circ@definetranspath{pigbt}
+\pgf@circ@definetranspath{nigbt}
+\pgf@circ@definetranspath{Lpigbt}
+\pgf@circ@definetranspath{Lnigbt}
+%%%---------- close: tex/pgfcircpath
+
+\ifpgf@circ@siunitx
+ \RequirePackage{xstring}[2009/03/13]
+ %\expandafter\let\csname angstrom\endcsname\relax
+ \RequirePackage{siunitx}
+\fi
+
+\ifpgf@circ@explicitvdir\else
+ \PackageWarningNoLine{circuitikz}{%
+ You did not specify one of the voltage directions:\MessageBreak
+ \space\space oldvoltagedirection, nooldvoltagedirection, \MessageBreak
+ \space\space RPvoltages or EFvoltages \MessageBreak
+ Default directions may have changed, \MessageBreak
+ please check the manual%
+ }
+\fi
+
+\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
+%override (unused) circuitikz environment for compability to externalization)
+\let\circuitikz\tikzpicture
+\let\endcircuitikz\endtikzpicture
+
+\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.0.sty b/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.0.sty
index 0c2d02e50a..551a93a8a5 100644
--- a/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.0.sty
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.0.sty
@@ -18,20138 +18,5 @@
\ProvidesPackage{circuitikz-1.0}
[\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]
-%% Version 3.0 of pgf/TikZ is required
-\RequirePackage{tikz}
-\usetikzlibrary{calc}
-%
-% "arrows" library is deprecated, and behave badly with
-% arrows on short paths. Change to the new arrows.meta
-% In pfgcirc.define, we will add the old definition of
-% latex' which we have lost in the transition
-%
-\usetikzlibrary{arrows.meta, bending}
-
-% The options are listed in the manual in this order
-
-\DeclareOption{europeanvoltage}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{straightvoltages}{
- \pgf@circuit@bipole@voltage@straighttrue
-}
-
-\DeclareOption{americanvoltage}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrent}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrent}{
- \ctikzset{current = american}
-}
-
-
-
-\DeclareOption{americanresistor}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistor}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductor}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductor}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductor}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanport}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanport}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{european}{
- \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
- \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester choice = european}
-}
-
-\DeclareOption{american}{
- \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester choice = american}
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{fulldiodes}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiodes}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{europeanvoltages}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{americanvoltages}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrents}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrents}{
- \ctikzset{current = american}
-}
-
-\DeclareOption{americanresistors}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistors}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductors}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductors}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductors}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanports}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanports}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{americangfsurgearrester}{
- \ctikzset{gas filled surge arrester choice = american}
-}
-
-\DeclareOption{europeangfsurgearrester}{
- \ctikzset{gas filled surge arrester choice = european}
-}
-
-\DeclareOption{siunitx}{
- \pgf@circ@siunitxtrue
-}
-
-\DeclareOption{nosiunitx}{
- \pgf@circ@siunitxfalse
-}
-
-\DeclareOption{fulldiode}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiode}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{strokediode}{
- \ctikzset{diode = stroke}
-}
-
-\DeclareOption{arrowmos}{
- \pgf@circuit@mos@arrowstrue
-}
-
-\DeclareOption{noarrowmos}{
- \pgf@circuit@mos@arrowsfalse
-}
-
-\DeclareOption{fetbodydiode}{
- \pgf@circuit@fet@bodydiodetrue
-}
-
-\DeclareOption{nofetbodydiode}{
- \pgf@circuit@fet@bodydiodefalse
-}
-
-\DeclareOption{fetsolderdot}{
- \pgf@circuit@fet@solderdottrue
-}
-
-\DeclareOption{nofetsolderdot}{
- \pgf@circuit@fet@solderdotfalse
-}
-
-\DeclareOption{emptypmoscircle}{
- \pgf@circuit@pmos@emptycircletrue
-}
-
-
-\DeclareOption{lazymos}{
- \ctikzset{tripoles/nmos/width=.5}
- \ctikzset{tripoles/nmos/gate height=.35}
- \ctikzset{tripoles/nmos/base height=.35}
- \ctikzset{tripoles/nmos/height/.initial=1.2}
- \ctikzset{tripoles/nmos/base width=.5}
- \ctikzset{tripoles/nmos/gate width=.65}
-
- \ctikzset{tripoles/pmos/width=.5}
- \ctikzset{tripoles/pmos/gate height=.35}
- \ctikzset{tripoles/pmos/base height=.35}
- \ctikzset{tripoles/pmos/height/.initial=1.2}
- \ctikzset{tripoles/pmos/base width=.5}
- \ctikzset{tripoles/pmos/gate width=.65}
-
- \pgf@circuit@pmos@emptycircletrue
-}
-
-\DeclareOption{straightlabels}{
- \ctikzset{label/align = straight}
-}
-
-\DeclareOption{rotatelabels}{
- \ctikzset{label/align = rotate}
-}
-
-\DeclareOption{smartlabels}{
- \ctikzset{label/align = smart}
-}
-
-\DeclareOption{compatibility}{
- \pgf@circuit@compattrue
-}
-
-\DeclareOption{oldvoltagedirection}{
- \pgf@circ@oldvoltagedirectiontrue
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriesfalse
-}
-\DeclareOption{nooldvoltagedirection}{
- \pgf@circ@oldvoltagedirectionfalse
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriesfalse
-}
-
-\DeclareOption{RPvoltages}{
- \pgf@circ@oldvoltagedirectiontrue
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriestrue
-}
-\DeclareOption{EFvoltages}{
- \pgf@circ@oldvoltagedirectionfalse
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriestrue
-}
-
-\DeclareOption{legacytransistorstext}{
- \pgf@circuit@transisors@fixlabelsfalse
-}
-
-\DeclareOption{nolegacytransistorstext}{
- \pgf@circuit@transisors@fixlabelstrue
-}
-
-\DeclareOption{centertransistorstext}{
- \pgf@circuit@transisors@fixlabelstrue
-}
-
-\DeclareOption{betterproportions}{
- \ctikzset{monopoles/ground/width/.initial=.15}
-
- \ctikzset{bipoles/resistor/height/.initial=.23}
- \ctikzset{bipoles/resistor/width/.initial=.6}
- \ctikzset{bipoles/capacitor/height/.initial=.4}
- \ctikzset{bipoles/capacitor/width/.initial=.1}
- \ctikzset{bipoles/potentiometer/height/.initial=.6}
- \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/potentiometer/width/.initial=.6}
- \ctikzset{bipoles/photoresistor/height/.initial=.6}
- \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
- \ctikzset{bipoles/photoresistor/width/.initial=.6}
- \ctikzset{bipoles/thermistor/main/.initial=.7}
- \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistor/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/main/.initial=.7}
- \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
- \ctikzset{bipoles/thermistorptc/width/.initial=.6}
- \ctikzset{bipoles/thermistorptc/main/.initial=.7}
- \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/main/.initial=.7}
- \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/width/.initial=.6}
- \ctikzset{bipoles/vresistor/height/.initial=.45}
- \ctikzset{bipoles/vresistor/width/.initial=.6}
- \ctikzset{bipoles/generic/height/.initial=.23}
- \ctikzset{bipoles/generic/width/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
- \ctikzset{bipoles/ageneric/height/.initial=.23}
- \ctikzset{bipoles/ageneric/width/.initial=.6}
- \ctikzset{bipoles/memristor/height/.initial=.23}
- \ctikzset{bipoles/memristor/wave height/.initial=.375}
- \ctikzset{bipoles/memristor/width/.initial=.60}
- \ctikzset{bipoles/tgeneric/height/.initial=.525}
- \ctikzset{bipoles/tgeneric/width/.initial=.6}
- \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
- \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
- \ctikzset{bipoles/fullgeneric/height/.initial=.23}
- \ctikzset{bipoles/fullgeneric/width/.initial=.6}
- \ctikzset{bipoles/diode/height/.initial=.3}
- \ctikzset{bipoles/diode/width/.initial=.25}
- \ctikzset{bipoles/bidirectionaldiode/height/.initial=.66}
- \ctikzset{bipoles/bidirectionaldiode/width/.initial=.6}
- \ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
- \ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
-
- \ctikzset{tripoles/thyristor/height/.initial=.66}
- \ctikzset{tripoles/thyristor/height 2/.initial=.3}
- \ctikzset{tripoles/thyristor/width/.initial=.6}
- \ctikzset{tripoles/thyristor/diode height/.initial=.3}
- \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
- \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
- \ctikzset{tripoles/triac/height/.initial=.66}
- \ctikzset{tripoles/triac/width/.initial=.6}
- \ctikzset{tripoles/triac/diode width left/.initial=.3}
- \ctikzset{tripoles/triac/diode width right/.initial=.3}
-}
-
-% This is a nice hack that prints all the shapes declared
-% by the package. Very useful for coverage testing and debugging.
-%
-% \let\origpgfdeclareshape=\pgfdeclareshape
-% \def\pgfdeclareshape#1{%
-% \typeout{SHAPE:\space"#1"}%
-% \origpgfdeclareshape{#1}
-% }
-
-
-%%%%%%%%%
-%%%%%%%%%%% Springe nach tex/pgfcirc.defines
-%%%---------- open: tex/pgfcirc.defines.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%
-%% Key managements
-
-\long\def\pgf@circ@comment#1{}
-
-\def\circuitikzbasekey{/tikz/circuitikz}
-
-\pgfkeys{\circuitikzbasekey/.is family}
-
-\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
-\let\ctikzset\circuitikzset
-\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
-\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
-
-%% Temporary Counters
-
-\newcount\pgf@circ@count@a
-\newcount\pgf@circ@count@b
-\newcount\pgf@circ@count@c
-%%%%%%%%%%%%
-%% Dimensions
-
-% coordinates
-\newdimen\pgf@circ@res@up
-\newdimen\pgf@circ@res@down
-\newdimen\pgf@circ@res@zero
-\newdimen\pgf@circ@res@left
-\newdimen\pgf@circ@res@right
-\newdimen\pgf@circ@res@other
-\newdimen\pgf@circ@res@step
-\newdimen\pgf@circ@res@temp
-% inital thickness
-\newdimen \pgfstartlinewidth
-
-% arrow tips, ported over old arrows library (deprecated)
-% see https://tex.stackexchange.com/questions/234084/latex-arrow-tip-with-arrows-meta-library
-% this was the original definition of latex' tips, renamed to avoid clashes
-%
-\pgfarrowsdeclare{latexslim}{latexslim}
-{
- \pgfutil@tempdima=0.28pt%
- \advance\pgfutil@tempdima by.3\pgflinewidth%
- \pgfarrowsleftextend{+-4\pgfutil@tempdima}
- \pgfarrowsrightextend{+6\pgfutil@tempdima}
-}
-{
- \pgfutil@tempdima=0.28pt%
- \advance\pgfutil@tempdima by.3\pgflinewidth%
- \pgfpathmoveto{\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
- \pgfpathcurveto
- {\pgfqpoint{3.5\pgfutil@tempdima}{.5\pgfutil@tempdima}}
- {\pgfqpoint{-1\pgfutil@tempdima}{1.5\pgfutil@tempdima}}
- {\pgfqpoint{-4\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
- \pgfpathcurveto
- {\pgfqpoint{-1.5\pgfutil@tempdima}{1\pgfutil@tempdima}}
- {\pgfqpoint{-1.5\pgfutil@tempdima}{-1\pgfutil@tempdima}}
- {\pgfqpoint{-4\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
- \pgfpathcurveto
- {\pgfqpoint{-1\pgfutil@tempdima}{-1.5\pgfutil@tempdima}}
- {\pgfqpoint{3.5\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
- {\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
- \pgfpathclose
- \pgfusepathqfill
-}
-
-\pgfarrowsdeclarereversed{latexslim reversed}{latexslim reversed}{latexslim}{latexslim}
-
-\def\pgf@circ@setifdefinedfill#1#2{%
- % if \ctikzclass is defined and \ctikzclass/fill is defined and is not none:
- % set the fill color and execute \pgfusepath{#1}, else execute \pgfusepath{#2}
- \ifdefined\ctikzclass
- \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/fill}%
- {% yes, it's defined
- \edef\@@tmp{\ctikzvalof{\ctikzclass/fill}}\edef\@@none{none}%
- \ifx\@@tmp\@@none % but it's none
- \pgfusepath{#2}%
- \else
- \pgfsetfillcolor{\@@tmp}%
- \pgfusepath{#1}%
- \fi
- }{% the class is defined but the fill key not; use #2
- \pgfusepath{#2}%
- }
- \else
- \pgfusepath{#2}%
- \fi
-}
-
-%% Macro to fill or draw
-
-\def\pgf@circ@draworfill{%
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgf@circ@setifdefinedfill{draw,fill}{draw}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{draw, fill}
- \fi
-}
-
-\def\pgf@circ@draworfillandclip{%
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgf@circ@setifdefinedfill{draw, clip, fill}{draw, clip}
- \pgfusepath{draw, clip}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{draw, clip, fill}
- \fi
-}
-
-\def\pgf@circ@maybefill{%
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgf@circ@setifdefinedfill{fill}{discard}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{fill}
- \fi
-}
-
-%% Macros for setting linewidth
-% #1 is the legacy class (bipoles, tripoles) etc
-% #2 is the reference linewidth
-\def\pgf@circ@setlinewidth#1#2{%
- \ifdefined\ctikzclass
- \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/thickness}%
- {% yes, it's defined
- \edef\@@tmp{\ctikzvalof{\ctikzclass/thickness}}\edef\@@none{none}%
- \ifx\@@tmp\@@none % but it's none
- \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}% passthrough legacy class
- \else
- \pgfsetlinewidth{\@@tmp #2}%
- \fi
- }{ % key not defined, do the legacy thing
- \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
- }% Ok, do nothing
- \else % no class
- \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
- \fi
-}
-% use \pgf@circ@setlinewidth{none}{\pgflinewidth} if there is no legacy case
-\ctikzset{none/thickness/.initial=1.0} % do not touch
-
-%% font changes compatible with plain/LaTeX/ConTeXt
-%% thanks to Henri Menke https://github.com/circuitikz/circuitikz/issues/285#issuecomment-537224605
-
-\ifpgfutil@format@is@latex
- \long\def\pgf@circ@font@tiny{\tiny}
- \long\def\pgf@circ@font@small{\small}
- \long\def\pgf@circ@font@bold{\textbf}
- \long\def\pgf@circ@font@boldmath{\boldmath}
- \long\def\pgf@circ@font@sixbm{\fontsize{6}{7}\selectfont\boldmath}
- \long\def\pgf@circ@font@tenbm{\fontsize{10}{12}\selectfont\boldmath}
- \long\def\pgf@circ@font@twelve{\fontsize{12}{14}\selectfont}
-\else\ifpgfutil@format@is@plain
- \long\def\pgf@circ@font@tiny{\fiverm}
- \long\def\pgf@circ@font@small{\sevenrm}
- \long\def\pgf@circ@font@bold#1{{\bf#1}}
- \long\def\pgf@circ@font@boldmath{\bf} % to be tested
- \long\def\pgf@circ@font@sixbm{\sevenrm\bf} %
- \long\def\pgf@circ@font@tenbm{\tenrm\bf} %
- \long\def\pgf@circ@font@twelve{\twelverm} %
-\else\ifpgfutil@format@is@context
- \long\def\pgf@circ@font@tiny{\tfxx}
- \long\def\pgf@circ@font@small{\tfx}
- \long\def\pgf@circ@font@bold{\bold}
- \long\def\pgf@circ@font@boldmath{\bold} % to be tested
- \long\def\pgf@circ@font@sixbm{\tfx\bold} %
- \long\def\pgf@circ@font@tenbm{\normal\bold}%
- \long\def\pgf@circ@font@twelve{\tfa} %
-\fi\fi\fi
-
-
-%
-% Thanks to Phelype Oleinik https://tex.stackexchange.com/a/520806/38080
-%
-% this is needed to avoid problems with \ConTeXt
-\ifcsname normalunexpanded\endcsname
- \let\pgfcircutil@unexpanded\normalunexpanded
-\else
- \let\pgfcircutil@unexpanded\unexpanded
-\fi
-% minimally expand a pgfkey to check if it's {}/undefined or filled.
-\def\unexpandedvalueof#1{%
- \pgfcircutil@unexpanded\expandafter\expandafter
- \expandafter\pgf@circ@valueof@chk\pgfkeysvalueof{#1}}
-\def\pgf@circ@valueof@chk#1{%
- \ifx\relax#1%
- \expandafter\pgfutil@firstoftwo
- \else
- \expandafter\pgfutil@secondoftwo
- \fi
- {{}}% #1 is \relax, so consider empty
- {\expandafter{#1}}% otherwise, leave the key after one more expansion
-}%
-
-% voltage options
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circuit@compat
-\newif\ifpgf@circ@oldvoltagedirection % default false
-\newif\ifpgf@circ@explicitvdir
-\newif\ifpgf@circ@fixbatteries
-
-\ctikzset{voltage dir/.is choice}
-\ctikzset{voltage dir/old/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriesfalse}}
-\ctikzset{voltage dir/noold/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriesfalse}}
-\ctikzset{voltage dir/RP/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriestrue}}
-\ctikzset{voltage dir/EF/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriestrue}}
-\tikzset{voltage dir/.style={circuitikz/voltage dir=#1}}
-
-% Option ">" for twoports
-\newif\ifpgf@circuit@inputarrow
-\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/.is choice}
-\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
-
-% Option "boxed" for nodes and twoports
-\newif\ifpgf@circuit@boxed
-\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
-
-% Option "dashed" for nodes and twoports
-\newif\ifpgf@circuit@dashed
-\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
-\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}
-
-% Option "t=*" for nodes
-\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
-
-\ctikzset{current arrow scale/.initial=16}
-
-\ctikzset{bipoles/.is family}
-\ctikzset{bipoles/border margin/.initial=1.1}
-\ctikzset{bipoles/thickness/.initial=2}
-\ctikzset{tripoles/thickness/.initial=2}
-\ctikzset{quadpoles/thickness/.initial=2}
-\ctikzset{nodes width/.initial=.04}
-
-% Base len for all circuitikz
-\newdimen\pgf@circ@Rlen
-% scaled length for internal use in scalable shapes
-\newdimen\pgf@circ@scaled@Rlen
-\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}}
-\pgf@circ@Rlen = 1.4cm
-% by default scale is 1.0
-\pgf@circ@scaled@Rlen=\pgf@circ@Rlen
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% main style definitions
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-% load a style file: search ctikzstyle-NAME.tex in path
-\def\ctikzloadstyle#1{%
- \pgfutil@InputIfFileExists{ctikzstyle-#1}{}{%
- \tikzerror{I did not find the circuitikz style #1}}%
-}
-
-% load and enact a style
-\def\ctikzsetstyle#1{%
- \ctikzloadstyle{#1}%
- \tikzset{#1 circuit style}%
-}
-
-% global style parameters
-\ctikzset{default/scale/.initial=1.0} % do not touch
-\ctikzset{default/fill/.initial=none} % do not touch
-\ctikzset{default/thickness/.initial=none} % do not touch
-% default is use as the generic default style for bipoles
-
-% mostly bipoles:
-
-\ctikzset{resistors/scale/.initial=1.0}
-\ctikzset{resistors/fill/.initial=none}
-\ctikzset{resistors/thickness/.initial=none}
-
-\ctikzset{capacitors/scale/.initial=1.0}
-\ctikzset{capacitors/fill/.initial=none}
-\ctikzset{capacitors/thickness/.initial=none}
-
-\ctikzset{inductors/scale/.initial=1.0}
-\ctikzset{inductors/fill/.initial=none}
-\ctikzset{inductors/thickness/.initial=none}
-
-\ctikzset{diodes/scale/.initial=1.0}
-\ctikzset{diodes/fill/.initial=none}
-\ctikzset{diodes/thickness/.initial=none}
-
-\ctikzset{batteries/scale/.initial=1.0}
-\ctikzset{batteries/fill/.initial=none}
-\ctikzset{batteries/thickness/.initial=none}
-
-\ctikzset{sources/scale/.initial=1.0}
-\ctikzset{sources/fill/.initial=none}
-\ctikzset{sources/thickness/.initial=none}
-
-\ctikzset{csources/scale/.initial=1.0}
-\ctikzset{csources/fill/.initial=none}
-\ctikzset{csources/thickness/.initial=none}
-
-\ctikzset{instruments/scale/.initial=1.0}
-\ctikzset{instruments/fill/.initial=none}
-\ctikzset{instruments/thickness/.initial=none}
-
-\ctikzset{mechanicals/scale/.initial=1.0}
-\ctikzset{mechanicals/fill/.initial=none}
-\ctikzset{mechanicals/thickness/.initial=none}
-
-\ctikzset{misc/scale/.initial=1.0}
-\ctikzset{misc/fill/.initial=none}
-\ctikzset{misc/thickness/.initial=none}
-
-\ctikzset{blocks/scale/.initial=1.0}
-\ctikzset{blocks/fill/.initial=none}
-\ctikzset{blocks/thickness/.initial=none}
-
-% mostly nodes
-
-\ctikzset{grounds/scale/.initial=1.0}
-\ctikzset{grounds/fill/.initial=none}
-\ctikzset{grounds/thickness/.initial=none}
-
-\ctikzset{power supplies/scale/.initial=1.0}
-\ctikzset{power supplies/fill/.initial=none}
-\ctikzset{power supplies/thickness/.initial=none}
-
-\ctikzset{transistors/scale/.initial=1.0}
-\ctikzset{transistors/fill/.initial=none}
-\ctikzset{transistors/thickness/.initial=none}
-
-\ctikzset{tubes/scale/.initial=1.0}
-\ctikzset{tubes/fill/.initial=none}
-\ctikzset{tubes/thickness/.initial=none}
-
-\ctikzset{RF/scale/.initial=1.0}
-\ctikzset{RF/fill/.initial=none}
-\ctikzset{RF/thickness/.initial=none}
-
-\ctikzset{electromechanicals/scale/.initial=1.0}
-\ctikzset{electromechanicals/fill/.initial=none}
-\ctikzset{electromechanicals/thickness/.initial=none}
-
-% transformers go with inductors
-\ctikzset{amplifiers/scale/.initial=1.0}
-\ctikzset{amplifiers/fill/.initial=none}
-\ctikzset{amplifiers/thickness/.initial=none}
-
-\ctikzset{switches/scale/.initial=1.0}
-\ctikzset{switches/fill/.initial=none}
-\ctikzset{switches/thickness/.initial=none}
-
-\ctikzset{logic ports/scale/.initial=1.0}
-\ctikzset{logic ports/fill/.initial=none}
-\ctikzset{logic ports/thickness/.initial=none}
-
-\ctikzset{flipflops/scale/.initial=1.0}
-\ctikzset{flipflops/fill/.initial=none}
-\ctikzset{flipflops/thickness/.initial=none}
-
-\ctikzset{muxdemuxes/scale/.initial=1.0}
-\ctikzset{muxdemuxes/fill/.initial=none}
-\ctikzset{muxdemuxes/thickness/.initial=none}
-
-\ctikzset{chips/scale/.initial=1.0}
-\ctikzset{chips/fill/.initial=none}
-\ctikzset{chips/thickness/.initial=none}
-
-\ctikzset{displays/scale/.initial=1.0}
-\ctikzset{displays/fill/.initial=none}
-\ctikzset{displays/thickness/.initial=none}
-
-% grounds and power supplies
-
-\ctikzset{monopoles/.is family}
-\ctikzset{monopoles/ground/width/.initial=.25}
-\ctikzset{monopoles/ground/connectionthickness/.initial=1}
-\ctikzset{monopoles/ground/thickness/.initial=2}
-\ctikzset{monopoles/rground/thickness/.initial=2}
-\ctikzset{monopoles/tground/thickness/.initial=3}
-\ctikzset{monopoles/vcc/width/.initial=.2}
-\ctikzset{monopoles/vcc/arrow/.initial=legacy}
-\ctikzset{monopoles/vee/arrow/.initial=legacy}
-\ctikzset{monopoles/match/width/.initial=.4}
-\ctikzset{monopoles/chassis/width/.initial=.25}
-\ctikzset{monopoles/alternative chassis/width/.initial=.25}
-\ctikzset{monopoles/equipotentiality/width/.initial=.25}
-\ctikzset{monopoles/antenna/width/.initial=.25}
-\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/width/.initial=.25}
-\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/rxantenna/width/.initial=.25}
-\ctikzset{monopoles/bareantenna/width/.initial=.25}
-\ctikzset{monopoles/bareantenna/label/xanchor/.initial=1}
-\ctikzset{monopoles/bareantenna/label/yanchor/.initial=0.5}
-\ctikzset{monopoles/waves/width/.initial=0.5}
-
-% microstrips
-\ctikzset{bipoles/mstline/height/.initial=0.3}
-\ctikzset{bipoles/mstline/width/.initial=1.2}
-\pgfkeys{/tikz/mstlinelen/.add code={}{\ctikzset{bipoles/mstline/width=#1}}}
-\ctikzset{monopoles/msport/width/.initial=.5}
-\ctikzset{monopoles/msrstub/height/.initial=1.0}
-\ctikzset{monopoles/msrstub/width/.initial=0.6}
-
-% microphone and loudspeaker
-\ctikzset{bipoles/loudspeaker/height/.initial=.8}
-\ctikzset{bipoles/loudspeaker/depth/.initial=.3}
-\ctikzset{bipoles/loudspeaker/width/.initial=.8}
-\ctikzset{bipoles/mic/height/.initial=1.2}
-\ctikzset{bipoles/mic/depth/.initial=.0}
-\ctikzset{bipoles/mic/width/.initial=.8}
-
-% Zig Zag resistors
-\ctikzset{resistors/zigs/.initial=3}
-\ctikzset{resistors/width/.code={%
- \ctikzset{bipoles/resistor/width=#1}%
- \ctikzset{bipoles/vresistor/width=#1}%
- \ctikzset{bipoles/potentiometer/width=#1}%
- \ctikzset{bipoles/resistivesens/width=#1}%
- \ctikzset{bipoles/photoresistor/width=#1}%
- \ctikzset{bipoles/thermistor/width=#1}%
- \ctikzset{bipoles/thermistorntc/width=#1}%
- \ctikzset{bipoles/thermistorptc/width=#1}%
- \ctikzset{bipoles/varistor/width=#1}%
- \ctikzset{bipoles/generic/width=#1}%
- \ctikzset{bipoles/generic potentiometer/width=#1}%
- \ctikzset{bipoles/ageneric/width=#1}%
- \ctikzset{bipoles/tgeneric/width=#1}%
-}}
-\ctikzset{wiper pos/.code={%
- \ctikzset{bipoles/potentiometer/wiper pos=#1}%
- \ctikzset{bipoles/generic potentiometer/wiper pos=#1}%
-}}
-% zigzag resistor
-\ctikzset{bipoles/resistor/height/.initial=.3}
-\ctikzset{bipoles/resistor/width/.initial=.8}
-\ctikzset{bipoles/potentiometer/height/.initial=.8}
-\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
-\ctikzset{bipoles/potentiometer/width/.initial=.8}
-\ctikzset{bipoles/potentiometer/wiper pos/.initial=.5}
-\ctikzset{bipoles/vresistor/height/.initial=.6}
-\ctikzset{bipoles/vresistor/width/.initial=.8}
-\ctikzset{bipoles/resistivesens/height/.initial=.6}
-\ctikzset{bipoles/resistivesens/width/.initial=.8}
-% square resistors
-\ctikzset{bipoles/photoresistor/height/.initial=.6}
-\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
-\ctikzset{bipoles/photoresistor/width/.initial=.8}
-\ctikzset{bipoles/thermistor/main/.initial=.7}
-\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/width/.initial=.8}
-\ctikzset{bipoles/thermistorntc/main/.initial=.7}
-\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistorptc/width/.initial=.8}
-\ctikzset{bipoles/thermistorptc/main/.initial=.7}
-\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistor/width/.initial=.8}
-\ctikzset{bipoles/varistor/main/.initial=.7}
-\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/varistor/width/.initial=.8}
-\ctikzset{bipoles/generic/height/.initial=.30}
-\ctikzset{bipoles/generic/width/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
-\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/wiper pos/.initial=.5}
-\ctikzset{bipoles/ageneric/height/.initial=.30}
-\ctikzset{bipoles/tgeneric/height/.initial=.70}
-\ctikzset{bipoles/tgeneric/width/.initial=.80}
-\ctikzset{bipoles/ageneric/width/.initial=.80}
-
-%% Capacitors
-\ctikzset{bipoles/capacitor/height/.initial=.6}
-\ctikzset{bipoles/capacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/height/.initial=.5}
-\ctikzset{bipoles/ecapacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/font/.initial=\pgf@circ@font@sixbm}
-%%% pcapacitor is deprecated
-\ctikzset{bipoles/pcapacitor/height/.initial=.6}
-\ctikzset{bipoles/pcapacitor/width/.initial=.2}
-\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
-\ctikzset{bipoles/ccapacitor/height/.initial=.6}
-\ctikzset{bipoles/ccapacitor/width/.initial=.12}
-\ctikzset{bipoles/ccapacitor/bend width/.initial=1.1}
-\ctikzset{bipoles/vcapacitor/height/.initial=.6}
-\ctikzset{bipoles/vcapacitor/width/.initial=.5}
-\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
-\ctikzset{bipoles/piezoelectric/height/.initial=.7}
-\ctikzset{bipoles/piezoelectric/width/.initial=.5}
-
-% Inductors
-\ctikzset{inductors/coils/.code={%
- \ctikzset{bipoles/cuteinductor/coils=#1}%
- \ctikzset{bipoles/cutechoke/coils=#1}%
- \ctikzset{bipoles/americaninductor/coils=#1}%
- \ctikzset{bipoles/vcuteinductor/coils=#1}%
- \ctikzset{bipoles/vamericaninductor/coils=#1}%
-}}
-\ctikzset{inductors/width/.code={%
- \ctikzset{bipoles/cuteinductor/width=#1}%
- \ctikzset{bipoles/cutechoke/width=#1}%
- \ctikzset{bipoles/americaninductor/width=#1}%
- \ctikzset{bipoles/vcuteinductor/width=#1}%
- \ctikzset{bipoles/vamericaninductor/width=#1}%
- \ctikzset{bipoles/fullgeneric/width=#1}%
- \ctikzset{bipoles/tfullgeneric/width=#1}%
-}}
-\ctikzset{bipoles/cuteinductor/height/.initial=.3}
-\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
-\ctikzset{bipoles/cuteinductor/width/.initial=.6}
-\ctikzset{bipoles/cuteinductor/coils/.initial=5}
-\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-%% Cute choke settings
-\ctikzset{bipoles/cutechoke/height/.initial=.3}
-\ctikzset{bipoles/cutechoke/lower coil height/.initial=.15}
-\ctikzset{bipoles/cutechoke/width/.initial=.6}
-\ctikzset{bipoles/cutechoke/coils/.initial=5}
-\ctikzset{bipoles/cutechoke/coil aspect/.initial=.5}%percentage of choke width, which is covered by lower coil
-\ctikzset{bipoles/cutechoke/cstep/.initial=.3}
-\ctikzset{bipoles/cutechoke/cdist/.initial=1.3}
-\ctikzset{bipoles/cutechoke/cthick/.initial=1}
-\newif\ifpgf@circuit@bipole@twolineschoke
-\pgf@circuit@bipole@twolineschokefalse
-\pgfkeys{/tikz/onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
-\ctikzset{onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
-\pgfkeys{/tikz/twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
-\ctikzset{twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
-%
-\ctikzset{bipoles/americaninductor/height/.initial=.3}
-\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
-\ctikzset{bipoles/americaninductor/width/.initial=.8}
-\ctikzset{bipoles/americaninductor/coils/.initial=4}
-\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
-\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
-\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
-\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
-\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
-\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
-\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
-\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
-\ctikzset{bipoles/fullgeneric/height/.initial=.30}
-\ctikzset{bipoles/fullgeneric/width/.initial=.80}
-
-% Sources
-
-\ctikzset{bipoles/esource/height/.initial=.60}
-\ctikzset{bipoles/esource/width/.initial=.60}
-\ctikzset{bipoles/pvsource/height/.initial=.60}
-\ctikzset{bipoles/pvsource/width/.initial=.60}
-\ctikzset{bipoles/isource/height/.initial=.60}
-\ctikzset{bipoles/isource/width/.initial=.60}
-\ctikzset{bipoles/oosource/height/.initial=.60}
-\ctikzset{bipoles/oosource/width/.initial=.60}
-\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/dcisource/angle/.initial=80}
-\ctikzset{bipoles/dcisource/height/.initial=.60}
-\ctikzset{bipoles/dcisource/width/.initial=.60}
-\ctikzset{bipoles/dcvsource/height/.initial=.60}
-\ctikzset{bipoles/dcvsource/width/.initial=.60}
-\ctikzset{bipoles/vsourcetri/height/.initial=.60}
-\ctikzset{bipoles/vsourcetri/width/.initial=.60}
-\ctikzset{bipoles/isourceam/height/.initial=.60}
-\ctikzset{bipoles/isourceam/width/.initial=.60}
-\ctikzset{bipoles/vsource/height/.initial=.60}
-\ctikzset{bipoles/vsource/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/height/.initial=.60}
-\ctikzset{bipoles/vsourceam/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/margin/.initial=.7}
-\ctikzset{bipoles/isourcesin/height/.initial=.60}
-\ctikzset{bipoles/isourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesin/height/.initial=.60}
-\ctikzset{bipoles/vsourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
-\ctikzset{bipoles/cisource/height/.initial=.7}
-\ctikzset{bipoles/cisource/width/.initial=.7}
-\ctikzset{bipoles/cisourceam/height/.initial=.7}
-\ctikzset{bipoles/cisourceam/width/.initial=.7}
-\ctikzset{bipoles/ecsource/height/.initial=.7}
-\ctikzset{bipoles/ecsource/width/.initial=.7}
-\ctikzset{bipoles/cvsource/height/.initial=.7}
-\ctikzset{bipoles/cvsource/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/height/.initial=.7}
-\ctikzset{bipoles/cvsourceam/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
-\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
-\ctikzset{bipoles/cisourcesin/width/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
-\ctikzset{bipoles/battery/height/.initial=.6}
-\ctikzset{bipoles/battery/width/.initial=.3}
-\ctikzset{bipoles/battery1/height/.initial=.6}
-\ctikzset{bipoles/battery1/width/.initial=.3}
-\ctikzset{bipoles/battery2/height/.initial=.6}
-\ctikzset{bipoles/battery2/width/.initial=.3}
-
-% diodes
-
-\ctikzset{bipoles/diode/height/.initial=.50}
-\ctikzset{bipoles/diode/width/.initial=.40}
-\ctikzset{bipoles/bidirectionaldiode/height/.initial=1.1}
-\ctikzset{bipoles/bidirectionaldiode/width/.initial=1}
-\ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
-\ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
-\ctikzset{bipoles/varcap/height/.initial=.50}
-\ctikzset{bipoles/varcap/width/.initial=.45}
-
-% switches
-
-\ctikzset{bipoles/spst/height/.initial=.35}
-\ctikzset{bipoles/spst/width/.initial=.35}
-\ctikzset{bipoles/spst/depth/.initial=.2}
-\ctikzset{bipoles/nos/height/.initial=.3}
-\ctikzset{bipoles/nos/width/.initial=.35}
-\ctikzset{bipoles/nos/depth/.initial=.2}
-\ctikzset{bipoles/ncs/height/.initial=.35}
-\ctikzset{bipoles/ncs/width/.initial=.35}
-\ctikzset{bipoles/ncs/depth/.initial=.2}
-%%% reed switch
-\ctikzset{bipoles/reed/height/.initial=.4}
-\ctikzset{bipoles/reed/width/.initial=.8}% 0.35 in nos
-\ctikzset{bipoles/reed/depth/.initial=.4}
-
-% misc
-
-\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
-\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
-\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
-\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
-\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
-\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
-\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
-\ctikzset{bipoles/fuse/height/.initial=.20}
-\ctikzset{bipoles/fuse/width/.initial=.50}
-\ctikzset{bipoles/afuse/height/.initial=.20}
-\ctikzset{bipoles/afuse/width/.initial=.50}
-\ctikzset{bipoles/memristor/height/.initial=.30}
-\ctikzset{bipoles/memristor/wave height/.initial=.5}
-\ctikzset{bipoles/memristor/width/.initial=.80}
-\ctikzset{bipoles/open/height/.initial=.3} %necessary for curly voltages
-\ctikzset{bipoles/open/width/.initial=.3} %necessary for curly voltages
-\ctikzset{bipoles/open/voltage/straight label distance/.initial=0}
-\ctikzset{bipoles/open/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/short/height/.initial=0} %dummy height for voltage positioning
-\ctikzset{bipoles/short/width/.initial=0} %dummy width for voltage positioning
-%\ctikzset{bipoles/short/voltage/straight label distance/.initial=.2}
-%\ctikzset{bipoles/short/voltage/distance from node/.initial=.5}
-% multiwire
-\ctikzset{bipoles/multiwire/height/.initial=0.4}
-\ctikzset{bipoles/multiwire/width/.initial=0.2}
-\ctikzset{bipoles/multiwire/spacing/.initial=0.05}
-
-\ctikzset{bipoles/ammeter/height/.initial=.60}
-\ctikzset{bipoles/ammeter/width/.initial=.60}
-\ctikzset{bipoles/ohmmeter/height/.initial=.60}
-\ctikzset{bipoles/ohmmeter/width/.initial=.60}
-\ctikzset{bipoles/voltmeter/height/.initial=.60}
-\ctikzset{bipoles/voltmeter/width/.initial=.60}
-\ctikzset{bipoles/smeter/height/.initial=.60}
-\ctikzset{bipoles/smeter/width/.initial=.60}
-\ctikzset{bipoles/smeter/voltage/additional label shift/.initial=1}
-\ctikzset{bipoles/qmeter/depth/.initial=.40}
-\ctikzset{bipoles/qmeter/height/.initial=.80}
-\ctikzset{bipoles/qmeter/width/.initial=.60}
-% this must be specified for each one
-\ctikzset{bipoles/qvprobe/voltage/additional label shift/.initial=.5}
-\ctikzset{bipoles/qiprobe/voltage/additional label shift/.initial=.5}
-\ctikzset{bipoles/qpprobe/voltage/additional label shift/.initial=.5}
-\ctikzset{bipoles/iloop/width/.initial=.40}
-\ctikzset{bipoles/iloop/height/.initial=.60}
-
-\ctikzset{bipoles/oscope/height/.initial=.60}
-\ctikzset{bipoles/oscope/width/.initial=.60}
-\ctikzset{bipoles/oscope/voltage/additional label shift/.initial=1}
-
-
-% option to not rotate the new (Romano's) instruments
-\newif\ifpgf@circuit@straightinstruments\pgf@circuit@straightinstrumentstrue
-\pgfkeys{/tikz/straight instruments/.add code={}{\pgf@circuit@straightinstrumentstrue}}
-\ctikzset{straight instruments/.add code={}{\pgf@circuit@straightinstrumentstrue}}
-\pgfkeys{/tikz/rotated instruments/.add code={}{\pgf@circuit@straightinstrumentsfalse}}
-\ctikzset{rotated instruments/.add code={}{\pgf@circuit@straightinstrumentsfalse}}
-
-
-\ctikzset{bipoles/buffer/height/.initial=1}
-\ctikzset{bipoles/buffer/width/.initial=1}
-\ctikzset{bipoles/not port/width/.initial=1}
-\ctikzset{bipoles/not port/height/.initial=.8}
-\ctikzset{bipoles/not port/circle width/.initial=.15}
-\ctikzset{bipoles/lamp/height/.initial=.60}
-\ctikzset{bipoles/lamp/width/.initial=.60}
-\ctikzset{bipoles/bulb/height/.initial=.8}
-\ctikzset{bipoles/bulb/width/.initial=.8}
-\ctikzset{bipoles/tline/height/.initial=.3}
-\ctikzset{bipoles/tline/width/.initial=.8}
-\ctikzset{bipoles/squid/height/.initial=.60}
-\ctikzset{bipoles/squid/width/.initial=.60}
-\ctikzset{bipoles/barrier/height/.initial=.60}
-\ctikzset{bipoles/barrier/width/.initial=.60}
-\ctikzset{bipoles/thermocouple/height/.initial=.250}
-\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
-\ctikzset{bipoles/thermocouple/width/.initial=.140}
-\ctikzset{bipoles/pushbutton/height/.initial=.5}
-\ctikzset{bipoles/pushbutton/height 2/.initial=.2}
-\ctikzset{bipoles/pushbutton/width/.initial=.50}
-
-\ctikzset{bipoles/twoport/width/.initial=.7}
-\ctikzset{bipoles/twoport/height/.initial=.7}
-\ctikzset{bipoles/twoport/text/.initial=}
-\ctikzset{bipoles/vco/width/.initial=.7}
-\ctikzset{bipoles/bandpass/width/.initial=.7}
-\ctikzset{bipoles/bandstop/width/.initial=.7}
-\ctikzset{bipoles/highpass/width/.initial=.7}
-\ctikzset{bipoles/lowpass/width/.initial=.7}
-\ctikzset{bipoles/adc/width/.initial=.7}
-\ctikzset{bipoles/dac/width/.initial=.7}
-\ctikzset{bipoles/dsp/width/.initial=.7}
-\ctikzset{bipoles/fft/width/.initial=.7}
-\ctikzset{bipoles/amp/width/.initial=.7}
-\ctikzset{bipoles/vamp/width/.initial=.7}
-\ctikzset{bipoles/piattenuator/width/.initial=.7}
-\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
-\ctikzset{bipoles/tattenuator/width/.initial=.7}
-\ctikzset{bipoles/vtattenuator/width/.initial=.7}
-\ctikzset{bipoles/phaseshifter/width/.initial=.7}
-\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
-\ctikzset{bipoles/detector/width/.initial=.7}
-
-% crossing wires
-\ctikzset{bipoles/crossing/size/.initial=.2}
-
-% Transistors starts here
-
-\newif\ifpgf@circuit@trans@depletiontype
-\pgf@circuit@trans@depletiontypefalse
-
-\newif\ifpgf@circuit@mos@arrows
-\ctikzset{tripoles/mos style/.is choice}
-\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
-\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
-\pgfkeys{/tikz/arrowmos/.add code={}{\pgf@circuit@mos@arrowstrue}}
-\pgfkeys{/tikz/noarrowmos/.add code={}{\pgf@circuit@mos@arrowsfalse}}
-
-% Fixed label positions
-\newif\ifpgf@circuit@transisors@fixlabels
-\pgf@circuit@transisors@fixlabelstrue
-\pgfkeys{/tikz/center transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
-\ctikzset{fix transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
-\pgfkeys{/tikz/legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
-\ctikzset{legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
-
-% Option solderdot for fet
-\newif\ifpgf@circuit@fet@solderdot
-\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-
-% Option bodydiode for fet
-\newif\ifpgf@circuit@fet@bodydiode
-\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-
-% Option draw fet without gate connection
-\newif\ifpgf@circuit@bpt@drawgate
-\pgf@circuit@bpt@drawgatetrue
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-
-% Option draw bpt without base connection
-\newif\ifpgf@circuit@bpt@drawbase
-\pgf@circuit@bpt@drawbasetrue
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-
-% Option draw bpt with optical input
-\newif\ifpgf@circuit@bpt@drawphoto
-\pgf@circuit@bpt@drawphotofalse
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-
-% Option draw fet without bulk connection -- Added by Burak Kelleci
-\newif\ifpgf@circuit@bpt@drawbulk
-\pgfkeys{/tikz/bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
-\ctikzset{bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
-\pgfkeys{/tikz/nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
-\ctikzset{nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
-
-% Option draw pmos with empty circle
-\newif\ifpgf@circuit@pmos@emptycircle
-\pgf@circuit@pmos@emptycirclefalse
-\ctikzset{tripoles/pmos style/.is choice}
-\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-% Option draw pmos with no circle
-\newif\ifpgf@circuit@pmos@nocircle
-\pgf@circuit@pmos@nocirclefalse
-\pgfkeys{/tikz/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
-\ctikzset{tripoles/pmos style/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
-% back to normal
-\pgfkeys{/tikz/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
-\ctikzset{tripoles/pmos style/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
-% arrows at the end, the correct way
-\newif\ifpgf@circuit@trans@arrowatend
-\pgf@circuit@trans@arrowatendfalse
-\ctikzset{transistors/arrow pos/.is choice}
-\ctikzset{transistors/arrow pos/legacy/.code={\pgf@circuit@trans@arrowatendfalse}}
-\ctikzset{transistors/arrow pos/end/.code={\pgf@circuit@trans@arrowatendtrue}}
-
-\newif\ifpgf@circuit@trans@ntype
-\pgf@circuit@trans@ntypetrue %default true
-%\newif\ifpgf@circuit@trans@ptype
-%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
-\ctikzset{tripoles/nmos/width/.initial=.7}
-\ctikzset{tripoles/nmos/gate height/.initial=.35}
-\ctikzset{tripoles/nmos/base height/.initial=.5}
-\ctikzset{tripoles/nmos/conn height/.initial=0}
-\ctikzset{tripoles/nmos/height/.initial=1.1}
-\ctikzset{tripoles/nmos/base width/.initial=.5}
-\ctikzset{tripoles/nmos/gate width/.initial=.62}
-\ctikzset{tripoles/nmos/arrow pos/.initial=.6}
-\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nmos/curr direction/.initial=1}
-
-\ctikzset{tripoles/pmos/width/.initial=.7}
-\ctikzset{tripoles/pmos/gate height/.initial=.35}
-\ctikzset{tripoles/pmos/base height/.initial=.5}
-\ctikzset{tripoles/pmos/conn height/.initial=0}
-\ctikzset{tripoles/pmos/height/.initial=1.1}
-\ctikzset{tripoles/pmos/base width/.initial=.5}
-\ctikzset{tripoles/pmos/gate width/.initial=.62}
-\ctikzset{tripoles/pmos/arrow pos/.initial=.4}
-\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pmos/curr direction/.initial=-1}
-
-\ctikzset{tripoles/hemt/width/.initial=.7}
-\ctikzset{tripoles/hemt/gate height/.initial=.35}
-\ctikzset{tripoles/hemt/base height/.initial=.5}
-\ctikzset{tripoles/hemt/conn height/.initial=0}
-\ctikzset{tripoles/hemt/height/.initial=1.1}
-\ctikzset{tripoles/hemt/base width/.initial=.5}
-\ctikzset{tripoles/hemt/gate width/.initial=.62}
-\ctikzset{tripoles/hemt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/hemt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/hemt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/hemt/curr direction/.initial=1}
-
-\ctikzset{tripoles/nfet/width/.initial=.7}
-\ctikzset{tripoles/nfet/gate height/.initial=.35}
-\ctikzset{tripoles/nfet/base height/.initial=.5}
-\ctikzset{tripoles/nfet/conn height/.initial=0}
-\ctikzset{tripoles/nfet/height/.initial=1.1}
-\ctikzset{tripoles/nfet/base width/.initial=.5}
-\ctikzset{tripoles/nfet/gate width/.initial=.62}
-\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pfet/width/.initial=.7}
-\ctikzset{tripoles/pfet/gate height/.initial=.35}
-\ctikzset{tripoles/pfet/base height/.initial=.5}
-\ctikzset{tripoles/pfet/conn height/.initial=0}
-\ctikzset{tripoles/pfet/height/.initial=1.1}
-\ctikzset{tripoles/pfet/base width/.initial=.5}
-\ctikzset{tripoles/pfet/gate width/.initial=.62}
-\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigfete/width/.initial=.7}
-\ctikzset{tripoles/nigfete/gate height/.initial=.35}
-\ctikzset{tripoles/nigfete/base height/.initial=.5}
-\ctikzset{tripoles/nigfete/conn height/.initial=.35}
-\ctikzset{tripoles/nigfete/height/.initial=1.1}
-\ctikzset{tripoles/nigfete/base width/.initial=.5}
-\ctikzset{tripoles/nigfete/gate width/.initial=.62}
-\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfete/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetd/width/.initial=.7}
-\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetd/base height/.initial=.5}
-\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetd/height/.initial=1.1}
-\ctikzset{tripoles/nigfetd/base width/.initial=.5}
-\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
-
-\ctikzset{tripoles/pigfete/width/.initial=.7}
-\ctikzset{tripoles/pigfete/gate height/.initial=.35}
-\ctikzset{tripoles/pigfete/base height/.initial=.5}
-\ctikzset{tripoles/pigfete/conn height/.initial=.35}
-\ctikzset{tripoles/pigfete/height/.initial=1.1}
-\ctikzset{tripoles/pigfete/base width/.initial=.5}
-\ctikzset{tripoles/pigfete/gate width/.initial=.62}
-\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetd/width/.initial=.7}
-\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetd/base height/.initial=.5}
-\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetd/height/.initial=1.1}
-\ctikzset{tripoles/pigfetd/base width/.initial=.5}
-\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
-
-\ctikzset{tripoles/npn/width/.initial=.6}
-\ctikzset{tripoles/npn/base height/.initial=.45}
-\ctikzset{tripoles/npn/base height 2/.initial=.15}
-\ctikzset{tripoles/npn/base height/.initial=.4}
-\ctikzset{tripoles/npn/conn height/.initial=0}
-\ctikzset{tripoles/npn/height/.initial=1.1}
-\ctikzset{tripoles/npn/base width/.initial=.5}
-\ctikzset{tripoles/npn/arrow pos/.initial=.5}
-\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/npn/curr direction/.initial=1}
-
-\ctikzset{tripoles/pnp/width/.initial=.6}
-\ctikzset{tripoles/pnp/base height/.initial=.45}
-\ctikzset{tripoles/pnp/base height 2/.initial=.15}
-\ctikzset{tripoles/pnp/base height/.initial=.4}
-\ctikzset{tripoles/pnp/conn height/.initial=0}
-\ctikzset{tripoles/pnp/height/.initial=1.1}
-\ctikzset{tripoles/pnp/base width/.initial=.5}
-\ctikzset{tripoles/pnp/arrow pos/.initial=.5}
-\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pnp/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigbt/width/.initial=.6}
-\ctikzset{tripoles/pigbt/gate height/.initial=.45}
-\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/pigbt/base height/.initial=.4}
-\ctikzset{tripoles/pigbt/conn height/.initial=0}
-\ctikzset{tripoles/pigbt/height/.initial=1.1}
-\ctikzset{tripoles/pigbt/gate width/.initial=.62}
-\ctikzset{tripoles/pigbt/base width/.initial=.5}
-\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigbt/width/.initial=.6}
-\ctikzset{tripoles/nigbt/gate height/.initial=.45}
-\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/nigbt/base height/.initial=.4}
-\ctikzset{tripoles/nigbt/conn height/.initial=0}
-\ctikzset{tripoles/nigbt/height/.initial=1.1}
-\ctikzset{tripoles/nigbt/gate width/.initial=.62}
-\ctikzset{tripoles/nigbt/base width/.initial=.5}
-\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/Lpigbt/width/.initial=.6}
-\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/Lnigbt/width/.initial=.6}
-\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/njfet/width/.initial=.7}
-\ctikzset{tripoles/njfet/gate height/.initial=.5}
-\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/njfet/gate width/.initial=.5}
-\ctikzset{tripoles/njfet/conn height/.initial=.35}
-\ctikzset{tripoles/njfet/height/.initial=1.1}
-\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/njfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pjfet/width/.initial=.7}
-\ctikzset{tripoles/pjfet/gate height/.initial=.5}
-\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/pjfet/gate width/.initial=.5}
-\ctikzset{tripoles/pjfet/conn height/.initial=.35}
-\ctikzset{tripoles/pjfet/height/.initial=1.1}
-\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/isfet/width/.initial=1}
-\ctikzset{tripoles/isfet/gate height/.initial=.35}
-\ctikzset{tripoles/isfet/base height/.initial=.5}
-\ctikzset{tripoles/isfet/height/.initial=1.1}
-\ctikzset{tripoles/isfet/base width/.initial=.3}
-\ctikzset{tripoles/isfet/gate width/.initial=.5}
-\ctikzset{tripoles/isfet/conn height/.initial=0}
-\ctikzset{tripoles/isfet/wave width/.initial=.16}
-\ctikzset{tripoles/isfet/wave amp/.initial=.06}
-\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
-\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
-\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/isfet/curr direction/.initial=1}
-%
-% multi-emitter and multi-collector BJTs by Romano Giannetti
-%
-\ctikzset{tripoles/bjt/emitters/.initial=1}
-\ctikzset{tripoles/bjt/collectors/.initial=1}
-\pgfkeys{/tikz/emitters/.add code={}{\ctikzset{tripoles/bjt/emitters=#1}}}
-\pgfkeys{/tikz/collectors/.add code={}{\ctikzset{tripoles/bjt/collectors=#1}}}
-\ctikzset{tripoles/bjt/pins width/.initial=0.3}
-\pgfkeys{/tikz/bjt pins width/.add code={}{\ctikzset{tripoles/bjt/pins width=#1}}}
-\ctikzset{tripoles/bjt/multi height/.initial=.5}
-\pgfkeys{/tikz/bjt multi height/.add code={}{\ctikzset{tripoles/bjt/multi height/.initial=#1}}}
-%
-\ctikzset{tripoles/bjt/width/.initial=.3}
-\ctikzset{tripoles/bjt/base height 2/.initial=.4}
-\ctikzset{tripoles/bjt/base height/.initial=1.1}
-\ctikzset{tripoles/bjt/height/.initial=.4}
-\ctikzset{tripoles/bjt/base width/.initial=1}
-\ctikzset{tripoles/bjt/arrow pos/.initial=.5}
-% do NOT touch these two!
-\ctikzset{tripoles/bjt/npn/curr direction/.initial=1}
-\ctikzset{tripoles/bjt/pnp/curr direction/.initial=-1}
-
-%% transistors stop here
-
-%% Logic ports
-
-\newif\ifpgf@circuit@europeanlogicport
-\ctikzset{logic ports/.is choice}
-\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue
- \tikzset{and port/.style={shape=european and port}}%
- \tikzset{or port/.style={shape=european or port}}%
- \tikzset{xor port/.style={shape=european xor port}}%
- \tikzset{buffer port/.style={shape=european buffer port}}%
- \tikzset{not port/.style={shape=european not port}}%
- \tikzset{nand port/.style={shape=european nand port}}%
- \tikzset{nor port/.style={shape=european nor port}}%
- \tikzset{xnor port/.style={shape=european xnor port}}%
-}}
-\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse
- \tikzset{and port/.style={shape=american and port}}%
- \tikzset{or port/.style={shape=american or port}}%
- \tikzset{xor port/.style={shape=american xor port}}%
- \tikzset{buffer port/.style={shape=american buffer port}}%
- \tikzset{not port/.style={shape=american not port}}%
- \tikzset{nand port/.style={shape=american nand port}}%
- \tikzset{nor port/.style={shape=american nor port}}%
- \tikzset{xnor port/.style={shape=american xnor port}}%
-}}
-
-\ctikzset{logic ports origin/.is choice}
-\ctikzset{logic ports origin/legacy/.code={
- \ctikzset{tripoles/american and port/origin/.initial=0.8}%
- \ctikzset{tripoles/american nand port/origin/.initial=0.8}%
- \ctikzset{tripoles/american nor port/origin/.initial=0.8}%
- \ctikzset{tripoles/american or port/origin/.initial=0.8}%
- \ctikzset{tripoles/american xor port/origin/.initial=0.8}%
- \ctikzset{tripoles/american xnor port/origin/.initial=0.8}%
- \ctikzset{tripoles/european and port/origin/.initial=0.8}%
- \ctikzset{tripoles/european nand port/origin/.initial=0.8}%
- \ctikzset{tripoles/european or port/origin/.initial=0.8}%
- \ctikzset{tripoles/european nor port/origin/.initial=0.8}%
- \ctikzset{tripoles/european xor port/origin/.initial=0.8}%
- \ctikzset{tripoles/european xnor port/origin/.initial=0.8}%
- \ctikzset{tripoles/european buffer port/origin/.initial=0.8}%
- \ctikzset{tripoles/european not port/origin/.initial=0.8}%
- }%
-}
-\ctikzset{logic ports origin/center/.code={%
- \ctikzset{tripoles/american and port/origin/.initial=0}%
- \ctikzset{tripoles/american nand port/origin/.initial=0}%
- \ctikzset{tripoles/american nor port/origin/.initial=0}%
- \ctikzset{tripoles/american or port/origin/.initial=0}%
- \ctikzset{tripoles/american xor port/origin/.initial=0}%
- \ctikzset{tripoles/american xnor port/origin/.initial=0}%
- \ctikzset{tripoles/european and port/origin/.initial=0}%
- \ctikzset{tripoles/european nand port/origin/.initial=0}%
- \ctikzset{tripoles/european or port/origin/.initial=0}%
- \ctikzset{tripoles/european nor port/origin/.initial=0}%
- \ctikzset{tripoles/european xor port/origin/.initial=0}%
- \ctikzset{tripoles/european xnor port/origin/.initial=0}%
- \ctikzset{tripoles/european buffer port/origin/.initial=0}%
- \ctikzset{tripoles/european not port/origin/.initial=0}%
- }%
-}
-
-\newif\ifpgfcirc@roundy@or@shapes\pgfcirc@roundy@or@shapesfalse
-\ctikzset{american or shape/.is choice}
-\ctikzset{american or shape/roundy/.code={\pgfcirc@roundy@or@shapestrue}}
-\ctikzset{american or shape/pointy/.code={\pgfcirc@roundy@or@shapesfalse}}
-
-\newif\ifpgfcirc@draw@leads\pgfcirc@draw@leadstrue
-\ctikzset{logic ports draw input leads/.is choice}
-\ctikzset{logic ports draw input leads/true/.code={\pgfcirc@draw@leadstrue}}
-\ctikzset{logic ports draw input leads/false/.code={\pgfcirc@draw@leadsfalse}}
-\tikzset{input leads/.code={\pgfcirc@draw@leadstrue}}
-\tikzset{no input leads/.code={\pgfcirc@draw@leadsfalse}}
-
-\ctikzset{tripoles/american and port/width/.initial=1.1}
-\ctikzset{tripoles/american and port/height/.initial=.8}
-\ctikzset{tripoles/american and port/port width/.initial=.7}
-\ctikzset{tripoles/american and port/input height/.initial=.5}
-\ctikzset{tripoles/american nand port/width/.initial=1.1}
-\ctikzset{tripoles/american nand port/height/.initial=.8}
-\ctikzset{tripoles/american nand port/port width/.initial=.7}
-\ctikzset{tripoles/american nand port/circle width/.initial=.15}
-\ctikzset{tripoles/american nand port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/width/.initial=1.1}
-\ctikzset{tripoles/american or port/height/.initial=.8}
-\ctikzset{tripoles/american or port/port width/.initial=.7}
-\ctikzset{tripoles/american or port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/input skip/.initial=.25}
-\ctikzset{tripoles/american or port/aaa/.initial=.6}
-\ctikzset{tripoles/american or port/bbb/.initial=.4}
-\ctikzset{tripoles/american or port/ccc/.initial=.5}
-\ctikzset{tripoles/american or port/ddd/.initial=.0}
-\ctikzset{tripoles/american nor port/width/.initial=1.1}
-\ctikzset{tripoles/american nor port/height/.initial=.8}
-\ctikzset{tripoles/american nor port/port width/.initial=.7}
-\ctikzset{tripoles/american nor port/input height/.initial=.5}
-\ctikzset{tripoles/american nor port/input skip/.initial=.25}
-\ctikzset{tripoles/american nor port/circle width/.initial=.15}
-\ctikzset{tripoles/american nor port/aaa/.initial=.6}
-\ctikzset{tripoles/american nor port/bbb/.initial=.4}
-\ctikzset{tripoles/american nor port/ccc/.initial=.5}
-\ctikzset{tripoles/american nor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xor port/width/.initial=1.1}
-\ctikzset{tripoles/american xor port/height/.initial=.8}
-\ctikzset{tripoles/american xor port/port width/.initial=.7}
-\ctikzset{tripoles/american xor port/input height/.initial=.5}
-\ctikzset{tripoles/american xor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xor port/distance/.initial=.1}
-\ctikzset{tripoles/american xnor port/width/.initial=1.1}
-\ctikzset{tripoles/american xnor port/height/.initial=.8}
-\ctikzset{tripoles/american xnor port/port width/.initial=.7}
-\ctikzset{tripoles/american xnor port/input height/.initial=.5}
-\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xnor port/distance/.initial=.1}
-\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
-\ctikzset{tripoles/american and port/origin/.initial=0.8}
-\ctikzset{tripoles/american and port/inputs/.initial=2}
-% variable number of inputs
-\ctikzset{tripoles/american nand port/origin/.initial=0.8}
-\ctikzset{tripoles/american nand port/inputs/.initial=2}
-\ctikzset{tripoles/american nor port/origin/.initial=0.8}
-\ctikzset{tripoles/american nor port/inputs/.initial=2}
-\ctikzset{tripoles/american nor port/angle/.initial=70}
-\ctikzset{tripoles/american nor port/inner/.initial=0.3}
-\ctikzset{tripoles/american or port/origin/.initial=0.8}
-\ctikzset{tripoles/american or port/inputs/.initial=2}
-\ctikzset{tripoles/american or port/angle/.initial=70}
-\ctikzset{tripoles/american or port/inner/.initial=0.3}
-\ctikzset{tripoles/american xor port/origin/.initial=0.8}
-\ctikzset{tripoles/american xor port/inputs/.initial=2}
-\ctikzset{tripoles/american xor port/angle/.initial=70}
-\ctikzset{tripoles/american xor port/inner/.initial=0.3}
-\ctikzset{tripoles/american xnor port/origin/.initial=0.8}
-\ctikzset{tripoles/american xnor port/inputs/.initial=2}
-\ctikzset{tripoles/american xnor port/angle/.initial=70}
-\ctikzset{tripoles/american xnor port/inner/.initial=0.3}
-
-\ctikzset{tripoles/european and port/width/.initial=1.4}
-\ctikzset{tripoles/european and port/height/.initial=.65}
-\ctikzset{tripoles/european and port/reserved/.initial=.6}
-\ctikzset{tripoles/european and port/input height/.initial=.6}
-\ctikzset{tripoles/european or port/width/.initial=1.4}
-\ctikzset{tripoles/european or port/height/.initial=.65}
-\ctikzset{tripoles/european or port/reserved/.initial=.6}
-\ctikzset{tripoles/european or port/input height/.initial=.6}
-\ctikzset{tripoles/european xor port/width/.initial=1.4}
-\ctikzset{tripoles/european xor port/height/.initial=.65}
-\ctikzset{tripoles/european xor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xor port/input height/.initial=.6}
-\ctikzset{tripoles/european nand port/width/.initial=1.4}
-\ctikzset{tripoles/european nand port/not height/.initial=.3}
-\ctikzset{tripoles/european nand port/not width/.initial=.8}
-\ctikzset{tripoles/european nand port/height/.initial=.65}
-\ctikzset{tripoles/european nand port/reserved/.initial=.6}
-\ctikzset{tripoles/european nand port/input height/.initial=.6}
-\ctikzset{tripoles/european buffer port/width/.initial=1.4}
-\ctikzset{tripoles/european buffer port/not height/.initial=.3}
-\ctikzset{tripoles/european buffer port/not width/.initial=.8}
-\ctikzset{tripoles/european buffer port/height/.initial=.65}
-\ctikzset{tripoles/european buffer port/reserved/.initial=.6}
-\ctikzset{tripoles/european buffer port/input height/.initial=0}
-\ctikzset{tripoles/european not port/width/.initial=1.4}
-\ctikzset{tripoles/european not port/not height/.initial=.3}
-\ctikzset{tripoles/european not port/not width/.initial=.8}
-\ctikzset{tripoles/european not port/height/.initial=.65}
-\ctikzset{tripoles/european not port/reserved/.initial=.6}
-\ctikzset{tripoles/european not port/input height/.initial=0}
-\ctikzset{tripoles/european xnor port/width/.initial=1.4}
-\ctikzset{tripoles/european xnor port/not height/.initial=.3}
-\ctikzset{tripoles/european xnor port/not width/.initial=.8}
-\ctikzset{tripoles/european xnor port/height/.initial=.65}
-\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xnor port/input height/.initial=.6}
-\ctikzset{tripoles/european nor port/width/.initial=1.4}
-\ctikzset{tripoles/european nor port/not height/.initial=.3}
-\ctikzset{tripoles/european nor port/not width/.initial=.8}
-\ctikzset{tripoles/european nor port/height/.initial=.65}
-\ctikzset{tripoles/european nor port/reserved/.initial=.6}
-\ctikzset{tripoles/european nor port/input height/.initial=.6}
-% variable number of inputs
-\ctikzset{tripoles/european and port/origin/.initial=0.8}
-\ctikzset{tripoles/european and port/inputs/.initial=2}
-\ctikzset{tripoles/european nand port/origin/.initial=0.8}
-\ctikzset{tripoles/european nand port/inputs/.initial=2}
-\ctikzset{tripoles/european or port/origin/.initial=0.8}
-\ctikzset{tripoles/european or port/inputs/.initial=2}
-\ctikzset{tripoles/european nor port/origin/.initial=0.8}
-\ctikzset{tripoles/european nor port/inputs/.initial=2}
-\ctikzset{tripoles/european xor port/origin/.initial=0.8}
-\ctikzset{tripoles/european xor port/inputs/.initial=2}
-\ctikzset{tripoles/european xnor port/origin/.initial=0.8}
-\ctikzset{tripoles/european xnor port/inputs/.initial=2}
-\ctikzset{tripoles/european buffer port/origin/.initial=0.8}
-\ctikzset{tripoles/european buffer port/inputs/.initial=1}%
-\ctikzset{tripoles/european not port/origin/.initial=0.8}
-\ctikzset{tripoles/european not port/inputs/.initial=1}%
-%%% parameters that are not used anymore after multi-input
-%%% gates --- left for compatibility of source code.
-\ctikzset{tripoles/american xor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
-% switches for logic gates
-%
-\pgfkeys{/tikz/number inputs/.initial=0}
-\pgfkeys{/tikz/number inputs/.default=0}
-
-%% flip-flop specific keys (most others are the same as chips)
-
-\ctikzset{multipoles/flipflop/font/.initial=\pgf@circ@font@small}
-\ctikzset{multipoles/flipflop/fontud/.initial=\pgf@circ@font@tiny}
-\ctikzset{multipoles/flipflop/width/.initial=1.2}
-\ctikzset{multipoles/flipflop/pin spacing/.initial=0.6}
-\ctikzset{multipoles/flipflop/clock wedge size/.initial=0.2}
-
-%% muxdemuxes keys
-
-\ctikzset{multipoles/muxdemux/base len/.initial=0.4}
-\ctikzset{multipoles/muxdemux/Lh/.initial=8.0}
-\ctikzset{multipoles/muxdemux/Rh/.initial=6.0}
-\ctikzset{multipoles/muxdemux/w/.initial=3.0}
-\ctikzset{multipoles/muxdemux/inset w/.initial=0.0}
-\ctikzset{multipoles/muxdemux/inset Lh/.initial=0.0}
-\ctikzset{multipoles/muxdemux/inset Rh/.initial=0.0}
-\ctikzset{multipoles/muxdemux/NL/.initial=8}
-\ctikzset{multipoles/muxdemux/NR/.initial=1}
-\ctikzset{multipoles/muxdemux/NB/.initial=3}
-\ctikzset{multipoles/muxdemux/NT/.initial=0}
-\ctikzset{multipoles/muxdemux/square pins/.initial=0}
-%
-% switches for op amps
-% changing input polarity
-%
-\newif\ifpgf@circuit@oa@iplusup\pgf@circuit@oa@iplusupfalse
-\pgfkeys{/tikz/noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
-\ctikzset{noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
-\pgfkeys{/tikz/noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
-\ctikzset{noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
-%
-% changing output polarity (for fully diff objects)
-%
-\newif\ifpgf@circuit@oa@oplusup\pgf@circuit@oa@oplusuptrue
-\pgfkeys{/tikz/noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
-\ctikzset{noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
-\pgfkeys{/tikz/noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
-\ctikzset{noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
-
-% Operational amplifier
-\ctikzset{tripoles/op amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/op amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/op amp/height/.initial=1.4} % Total height
-\ctikzset{tripoles/op amp/input height/.initial=.5} % Input port vertical separation
-\ctikzset{tripoles/op amp/up pos/.initial=.45} % Top and bottom anchor position
-\ctikzset{tripoles/op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Fully differential operational amplifier
-\ctikzset{tripoles/fd op amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/fd op amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/fd op amp/height/.initial=1.4} % Total height
-\ctikzset{tripoles/fd op amp/input height/.initial=.5} % Input port vertical separation
-\ctikzset{tripoles/fd op amp/output height/.initial=.5} % Output port vertical separation
-\ctikzset{tripoles/fd op amp/up pos/.initial=.45} % Top and bottom anchor position
-\ctikzset{tripoles/fd op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-\ctikzset{tripoles/en amp/width/.initial=1.7}
-\ctikzset{tripoles/en amp/port width/.initial=.7}
-\ctikzset{tripoles/en amp/height/.initial=1.6}
-\ctikzset{tripoles/en amp/input height/.initial=.3}
-\ctikzset{tripoles/en amp/up pos/.initial=.45}
-\ctikzset{tripoles/en amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-\ctikzset{tripoles/en amp/font2/.initial=\pgf@circ@font@twelve} % Absolute font size needed!
-\ctikzset{tripoles/en amp/text/.initial={$\mathstrut{\triangleright}\,{\infty}$}}
-\tikzset{
- en amp text/.code = {%
- \ctikzsetvalof{tripoles/en amp/text}{#1}%
- },
- en amp text A/.code = {%
- \ctikzsetvalof{tripoles/en amp/text}{$\mathstrut{\triangleright}\,\mathrm{A}$}%
- },
-}
-
-% Transconductance amplifier
-\ctikzset{tripoles/gm amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/gm amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/gm amp/height/.initial=1.4} % Left side of the trapezoid
-\ctikzset{tripoles/gm amp/height 2/.initial=0.5} % Right side of the trapezoid
-\ctikzset{tripoles/gm amp/input height/.initial=.5} % Input port vertical separation
-\ctikzset{tripoles/gm amp/up pos/.initial=.45} % Top and bottom anchor position
-\ctikzset{tripoles/gm amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Instrumentation amplifier
-\ctikzset{tripoles/inst amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/inst amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/inst amp/height/.initial=1.4} % Left side of the trapezoid
-\ctikzset{tripoles/inst amp/height 2/.initial=0.6} % Right side of the trapezoid
-\ctikzset{tripoles/inst amp/input height/.initial=.5} % Input ports vertical separation
-\ctikzset{tripoles/inst amp/up pos/.initial=.4} % Top and bottom anchor position
-\ctikzset{tripoles/inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
-\ctikzset{tripoles/inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Instrumentation amplifier with differential output
-\ctikzset{tripoles/fd inst amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/fd inst amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/fd inst amp/height/.initial=1.4} % Left side of the trapezoid
-\ctikzset{tripoles/fd inst amp/height 2/.initial=0.6} % Right side of the trapezoid
-\ctikzset{tripoles/fd inst amp/input height/.initial=.5} % Input ports vertical separation
-\ctikzset{tripoles/fd inst amp/output height/.initial=.5} % Output ports vertical separation
-\ctikzset{tripoles/fd inst amp/up pos/.initial=.4} % Top and bottom anchor position
-\ctikzset{tripoles/fd inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
-\ctikzset{tripoles/fd inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Instrumentation amplifier with gain resistor terminals
-\ctikzset{tripoles/inst amp ra/width/.initial=2.4} % Total width
-\ctikzset{tripoles/inst amp ra/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/inst amp ra/height/.initial=2.9} % Left side of the trapezoid
-\ctikzset{tripoles/inst amp ra/height 2/.initial=0.4} % Right side of the trapezoid
-\ctikzset{tripoles/inst amp ra/input height/.initial=.7} % Input ports vertical separation
-\ctikzset{tripoles/inst amp ra/up pos/.initial=.4} % Top and bottom anchor position
-\ctikzset{tripoles/inst amp ra/refv pos/.initial=.7} % Top and bottom voltage reference position
-\ctikzset{tripoles/inst amp ra/ra pos/.initial=.6} % Gain resistor terminals vertical separation
-\ctikzset{tripoles/inst amp ra/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Plain amplifier
-\ctikzset{tripoles/plain amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/plain amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/plain amp/height/.initial=1.4} % Total height
-\ctikzset{tripoles/plain amp/input height/.initial=.5} % Input ports vertical separation
-\ctikzset{tripoles/plain amp/up pos/.initial=.45} % Top and bottom anchor position
-
-% changing fonts and symbols of amplifiers
-\ctikzset{amplifiers/symbol font/.code={%
- \ctikzset{tripoles/inst amp ra/font=#1}%
- \ctikzset{tripoles/fd inst amp/font=#1}%
- \ctikzset{tripoles/inst amp/font=#1}%
- \ctikzset{tripoles/gm amp/font=#1}%
- \ctikzset{tripoles/en amp/font=#1}%
- \ctikzset{tripoles/fd op amp/font=#1}%
- \ctikzset{tripoles/op amp/font=#1}%
-}}
-\ctikzset{amplifiers/plus/.initial={$+$}}
-\ctikzset{amplifiers/minus/.initial={$-$}}
-\tikzset{amp symbol font/.code={%
- \ctikzset{amplifiers/symbol font={#1}}%
- }
-}
-\tikzset{amp plus/.code={\ctikzsetvalof{amplifiers/plus}{#1}}}
-\tikzset{amp minus/.code={\ctikzsetvalof{amplifiers/minus}{#1}}}
-\def\pgf@circ@ampli@plus{\ctikzvalof{amplifiers/plus}}
-\def\pgf@circ@ampli@minus{\ctikzvalof{amplifiers/minus}}
-
-\ctikzset{tripoles/thyristor/height/.initial=1.10}
-\ctikzset{tripoles/thyristor/height 2/.initial=.5}
-\ctikzset{tripoles/thyristor/width/.initial=1.0}
-\ctikzset{tripoles/thyristor/diode height/.initial=.5}
-\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
-\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
-\ctikzset{tripoles/triac/height/.initial=1.1}
-\ctikzset{tripoles/triac/width/.initial=1}
-\ctikzset{tripoles/triac/diode width left/.initial=.3}
-\ctikzset{tripoles/triac/diode width right/.initial=.3}
-
-%% Cute switches
-\ctikzset{bipoles/cuteswitch/shape/.initial={ocirc}}
-\ctikzset{bipoles/cuteswitch/height/.initial=.6}
-\ctikzset{bipoles/cuteswitch/height 2/.initial=.2}
-\ctikzset{bipoles/cuteswitch/width/.initial=.50}
-\ctikzset{bipoles/cuteswitch/thickness/.initial=1}
-
-\ctikzset{tripoles/spdt/width/.initial=.85}
-\ctikzset{tripoles/spdt/height/.initial=.45}
-\ctikzset{tripoles/spdt/margin/.initial=.45}
-
-\ctikzset{tripoles/toggleswitch/height/.initial=.8}
-\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
-\ctikzset{tripoles/toggleswitch/width/.initial=.80}
-
-\ctikzset{tripoles/mixer/width/.initial=0.7}
-\ctikzset{tripoles/adder/width/.initial=0.7}
-\ctikzset{tripoles/circulator/width/.initial=.7}
-\ctikzset{tripoles/oscillator/width/.initial=.7}
-
-
-\ctikzset{tripoles/wilkinson/height/.initial=1.3}
-\ctikzset{tripoles/wilkinson/width/.initial=1.3}
-
-\ctikzset{quadpoles/transformer/inner/.initial=0.4}
-\ctikzset{quadpoles/transformer/width/.initial=1.5}
-\ctikzset{quadpoles/transformer/width1/.initial=.4}
-\ctikzset{quadpoles/transformer/height/.initial=1.5}
-\ctikzset{quadpoles/transformer/height1/.initial=.8}
-\ctikzset{quadpoles/transformer core/inner/.initial=0.4}
-\ctikzset{quadpoles/transformer core/width/.initial=1.5}
-\ctikzset{quadpoles/transformer core/height/.initial=1.5}
-\ctikzset{quadpoles/transformer core/core height/.initial=.5}
-\ctikzset{quadpoles/transformer core/core width/.initial=.05}
-\ctikzset{quadpoles/gyrator/inner/.initial=0.4}
-\ctikzset{quadpoles/gyrator/width/.initial=1.5}
-\ctikzset{quadpoles/gyrator/height/.initial=1.5}
-\ctikzset{quadpoles/fourport/width/.initial=1.3}
-\ctikzset{quadpoles/fourport/height/.initial=1.3}
-\ctikzset{quadpoles/coupler/width/.initial=1.3}
-\ctikzset{quadpoles/coupler/height/.initial=1.3}
-\ctikzset{quadpoles/coupler2/width/.initial=1.3}
-\ctikzset{quadpoles/coupler2/height/.initial=1.3}
-
-\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
-
-\ctikzset{quadpoles style/.is choice}
-\ctikzset{quadpoles style/inward/.code={% default value
- \ctikzset{quadpoles/transformer/inner=0.4}%
- \ctikzset{quadpoles/transformer/width=1.5}%
- \ctikzset{quadpoles/transformer core/inner=0.4}%
- \ctikzset{quadpoles/transformer core/width=1.5}%
- \ctikzset{quadpoles/gyrator/inner=0.4}%
- \ctikzset{quadpoles/gyrator/width=1.5}%
- }%
-}
-\ctikzset{quadpoles style/inline/.code={% now horizontal baffle
- \ctikzset{quadpoles/transformer/inner=1}%
- \ctikzset{quadpoles/transformer/width=0.6}%
- \ctikzset{quadpoles/transformer core/inner=1}%
- \ctikzset{quadpoles/transformer core/width=0.6}%
- \ctikzset{quadpoles/gyrator/inner=1} % FIXME
- \ctikzset{quadpoles/gyrator/width=0.6}%
- }%
-}
-
-%
-% multipoles
-%
-\ctikzset{multipoles/thickness/.initial=2}
-\ctikzset{multipoles/font/.initial=\pgf@circ@font@tiny}
-% DIP (dual in line package) chips
-\ctikzset{multipoles/dipchip/width/.initial=1.2}
-\ctikzset{multipoles/dipchip/num pins/.initial=8}
-\ctikzset{multipoles/dipchip/pin spacing/.initial=0.4}
-\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/dipchip/num pins=#1}}}
-% QFP (quad flat package) chips
-\ctikzset{multipoles/qfpchip/num pins/.initial=8}
-\ctikzset{multipoles/qfpchip/pin spacing/.initial=0.4}
-\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/qfpchip/num pins=#1}}}
-% chip numbers
-\newif\ifpgf@circuit@chip@shownumbers\pgf@circuit@chip@shownumberstrue
-\pgfkeys{/tikz/show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
-\ctikzset{show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
-\pgfkeys{/tikz/hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
-\ctikzset{hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
-\newif\ifpgf@circuit@chip@straightnumbers\pgf@circuit@chip@straightnumberstrue
-\pgfkeys{/tikz/straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
-\ctikzset{straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
-\pgfkeys{/tikz/rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
-\ctikzset{rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
-% external chip pins
-\ctikzset{multipoles/external pins thickness/.initial=1}
-\ctikzset{multipoles/external pins width/.initial=0.2}
-\ctikzset{multipoles/external pad fraction/.initial=0}
-\pgfkeys{/tikz/external pins width/.add code={}{\ctikzset{multipoles/external pins width=#1}}}
-\pgfkeys{/tikz/external pad fraction/.add code={}{\ctikzset{multipoles/external pad fraction=#1}}}
-% topmarks
-\newif\ifpgf@circuit@chip@topmark\pgf@circuit@chip@topmarktrue
-\pgfkeys{/tikz/topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
-\ctikzset{topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
-\pgfkeys{/tikz/no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
-\ctikzset{no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
-
-% rotary switch by Romano
-\ctikzset{multipoles/rotary/thickness/.initial=1}
-\ctikzset{multipoles/rotary/shape/.initial=ocirc}
-\ctikzset{multipoles/rotary/channels/.initial=5}
-\ctikzset{multipoles/rotary/angle/.initial=60}
-\ctikzset{multipoles/rotary/wiper/.initial=20}
-\ctikzset{multipoles/rotary/arrow/.is choice}
-\newif\ifpgf@circ@rotaryarrow\pgf@circ@rotaryarrowfalse
-\newif\ifpgf@circ@rotaryarrow@cw\pgf@circ@rotaryarrow@cwfalse
-\newif\ifpgf@circ@rotaryarrow@ccw\pgf@circ@rotaryarrow@ccwfalse
-\ctikzset{multipoles/rotary/arrow/none/.code={\pgf@circ@rotaryarrowfalse\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwfalse}}
-\ctikzset{multipoles/rotary/arrow/both/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwtrue}}
-\ctikzset{multipoles/rotary/arrow/cw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwfalse}}
-\ctikzset{multipoles/rotary/arrow/ccw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwtrue}}
-
-\tikzset{%
- rotary switch/.style args={#1in#2wiper#3}{%
- shape=rotaryswitch,
- /tikz/circuitikz/multipoles/rotary/channels=#1,
- /tikz/circuitikz/multipoles/rotary/angle=#2,
- /tikz/circuitikz/multipoles/rotary/wiper=#3,
- },
- rotary switch -/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=none,
- },
- rotary switch <-/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=ccw,
- },
- rotary switch ->/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=cw,
- },
- rotary switch <->/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=both,
- },
- % Notice that these should be the same as the initial values of the keys
- rotary switch/.default={5 in 60 wiper 20},
- rotary switch -/.default={5 in 60 wiper 20},
- rotary switch <-/.default={5 in 60 wiper 20},
- rotary switch ->/.default={5 in 60 wiper 20},
- rotary switch <->/.default={5 in 60 wiper 20},
-}
-
-% %Mechanical section
-\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
-\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
-\ctikzset{bipoles/spring/height/.initial=.5}
-\ctikzset{bipoles/spring/width/.initial=.5}
-\ctikzset{bipoles/mass/height/.initial=.55}
-\ctikzset{bipoles/mass/box height/.initial=.4}
-\ctikzset{bipoles/mass/width/.initial=.5}
-
-\ctikzset{bipoles/damper/height/.initial=.35}
-\ctikzset{bipoles/damper/length/.initial=.3}
-\ctikzset{bipoles/damper/width/.initial=.4}
-
-
-\ctikzset{bipole/.is family}
-\ctikzset{bipole/kind/.initial=}
-\ctikzset{bipole/name/.initial=}
-\newif\ifpgf@circuit@bipole@isvoltage
-\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
-\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
-\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
-\newif\ifpgf@circuit@bipole@strokedsymbol
-\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
-\newif\ifpgf@circuit@bipole@iscurrent
-\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
-
-\ctikzset{bipole/voltage/.is family}
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-\newif\ifpgf@circuit@bipole@voltage@below
-\ctikzset{bipole/voltage/position/.is choice}
-\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
-\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
-
-\ctikzset{bipole/voltage/label/unit/.initial=}
-\ctikzset{bipole/voltage/label/name/.initial=}
-
-\ctikzset{bipole/current/.is family}
-\newif\ifpgf@circuit@bipole@current@backward
-\ctikzset{bipole/current/direction/.is choice}
-\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
-\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
-\newif\ifpgf@circuit@bipole@current@before
-\ctikzset{bipole/current/x position/.is choice}
-\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
-\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
-\newif\ifpgf@circuit@bipole@current@below
-\ctikzset{bipole/current/y position/.is choice}
-\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
-\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
-\ctikzset{bipole/current/label/unit/.initial=}
-\ctikzset{bipole/current/label/name/.initial=}
-
-\ctikzset{bipole/flow/.is family}
-\newif\ifpgf@circuit@bipole@flow@backward
-\ctikzset{bipole/flow/direction/.is choice}
-\ctikzset{bipole/flow/direction/forward/.code={\pgf@circuit@bipole@flow@backwardfalse}}
-\ctikzset{bipole/flow/direction/backward/.code={\pgf@circuit@bipole@flow@backwardtrue}}
-\newif\ifpgf@circuit@bipole@flow@before
-\ctikzset{bipole/flow/x position/.is choice}
-\ctikzset{bipole/flow/x position/after/.code={\pgf@circuit@bipole@flow@beforefalse}}
-\ctikzset{bipole/flow/x position/before/.code={\pgf@circuit@bipole@flow@beforetrue}}
-\newif\ifpgf@circuit@bipole@flow@below
-\ctikzset{bipole/flow/y position/.is choice}
-\ctikzset{bipole/flow/y position/above/.code={\pgf@circuit@bipole@flow@belowfalse}}
-\ctikzset{bipole/flow/y position/below/.code={\pgf@circuit@bipole@flow@belowtrue}}
-\ctikzset{bipole/flow/label/unit/.initial=}
-\ctikzset{bipole/flow/label/name/.initial=}
-\ctikzset{flow/distance/.initial = .5}
-\ctikzset{flow/offset/.initial = .2}%distance between flow-arrow and conductor
-
-\ctikzset{bipole/label/.is family}
-\ctikzset{bipole/label/position/.initial=90}
-\ctikzset{bipole/label/unit/.initial=}
-\ctikzset{bipole/label/name/.initial=}
-\ctikzset{bipole/annotation/.is family}
-\ctikzset{bipole/annotation/position/.initial=-90}
-\ctikzset{bipole/annotation/unit/.initial=}
-\ctikzset{bipole/annotation/name/.initial=}
-
-\newif\ifpgf@circuit@europeanresistor
-\ctikzset{resistor/.is choice}
-\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
-\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
-
-\ctikzset{inductor/.is choice}
-\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
-\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
-\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
-
-\newif\ifpgf@circuit@strokediode
-\newif\ifpgf@circuit@fulldiode
-\pgf@circuit@strokediodefalse
-\pgf@circuit@fulldiodefalse
-
-\ctikzset{diode/.is choice}
-\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
-\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
-\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
-
-\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full}}
-\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty}}
-\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke}}
-
-\ctikzset{thickness/.initial=2}
-\ctikzset{color/.initial=black}
-\pgfkeys{/tikz/color/.add code={}{\ctikzset{color={#1}}}}
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circ@siunitx@res
-
-\ctikzset{straight/.is choice}
-\ctikzset{straightvoltage value/.initial=true}
-\ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}}
-\ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}}
-\ctikzset{straightvoltage/.style = {/tikz/circuitikz/straight=true}}
-\newif\ifpgf@circuit@bipole@voltage@straight
-\ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight}
-
-
-\ctikzset{voltage/.is family}
-\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
-\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
-\ctikzset{voltage/bump a/.initial=1.2}
-\ctikzset{voltage/bump b/.initial=1.5}
-\ctikzset{voltage/shift/.initial=0.0} % shift form the cable of voltage symbols
-\ctikzset{voltage shift/.style={voltage/shift=#1}}
-\tikzset{voltage shift/.style={\circuitikzbasekey/voltage/shift=#1}}
-\ctikzset{voltage/european label distance/.initial=1.4}
-\ctikzset{voltage/american label distance/.initial=1.1}
-% shaping the +/- sign, see pgfcircvoltage.tex
-\ctikzset{voltage/american font/.initial={}}
-\ctikzset{voltage/american plus/.initial={$+$}}
-\ctikzset{voltage/american minus/.initial={$-$}}
-
-% special cases
-\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
-\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
-\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
-\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
-\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
-%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
-%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
-
-\ctikzset{current/.is family}
-\ctikzset{current/distance/.initial = .5}
-
-
-\tikzset{american currents/.style = {\circuitikzbasekey/current = american}}
-\tikzset{european currents/.style = {\circuitikzbasekey/current = european}}
-\tikzset{american voltages/.style = {\circuitikzbasekey/voltage = american}}
-\tikzset{european voltages/.style = {\circuitikzbasekey/voltage = european}}
-\tikzset{american resistors/.style = {\circuitikzbasekey/resistor = american}}
-\tikzset{european resistors/.style = {\circuitikzbasekey/resistor = european}}
-
-\newif\ifpgf@circuit@europeangfsurgearrester
-\ctikzset{gas filled surge arrester choice/.is choice}
-\ctikzset{gas filled surge arrester choice/european/.code= {\pgf@circuit@europeangfsurgearrestertrue}}
-\ctikzset{gas filled surge arrester choice/american/.code= {\pgf@circuit@europeangfsurgearresterfalse}}
-
-\tikzset{american gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=american}}
-\tikzset{european gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=european}}
-\tikzset{american inductors/.style = {\circuitikzbasekey/inductor = american}}
-\tikzset{european inductors/.style = {\circuitikzbasekey/inductor = european}}
-\tikzset{cute inductors/.style = {\circuitikzbasekey/inductor = cute}}
-\tikzset{american ports/.style = {\circuitikzbasekey/logic ports = american}}
-\tikzset{european ports/.style = {\circuitikzbasekey/logic ports = european}}
-\tikzset{european/.style = {european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester set}}
-\tikzset{american/.style = {american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester set}}
-\tikzset{cute/.style = {european currents, european voltages, american resistors, cute inductors, american ports}}
-
-% I should try to make the tree clearer (this voltage conflicts with the options above)
-
-\newif\ifpgf@circuit@europeanvoltage
-\ctikzset{voltage/.is choice}
-\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse}}
-\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue}}
-
-\newif\ifpgf@circuit@europeancurrent
-\ctikzset{current/.is choice}
-\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse}
-\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue}
-
-% noise sources
-\ctikzset{bipoles/noise sources/fillcolor/.initial=gray!50}
-
-\ctikzset{label/align/.is choice}
-\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
-\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
-\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
-
-% seven segment displays by RGtti
-
-\newif\ifpgf@circ@sevenseg@dot
-\newif\ifpgf@circ@sevenseg@box
-\def\pgf@circ@sevenseg@dotstate{empty}
-\ctikzset{seven seg/.is family}
-\ctikzset{seven seg/dot/.is choice}
-% none means no dot, not space for it. Empty means no dot, but space
-\ctikzset{seven seg/dot/none/.code={\pgf@circ@sevenseg@dotfalse}}
-\ctikzset{seven seg/dot/empty/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{empty}}}
-\ctikzset{seven seg/dot/off/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{off}}}
-\ctikzset{seven seg/dot/on/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{on}}}
-%
-\ctikzset{seven seg/width/.initial=0.4}% relative to \pgf@circ@Rlen
-\ctikzset{seven seg/thickness/.initial=4pt}% segment thickness
-\ctikzset{seven seg/segment sep/.initial=0.2pt}% gap between segments
-\ctikzset{seven seg/box sep/.initial=1pt}% external box gap
-\ctikzset{seven seg/color on/.initial=red}% color for segment "on"
-\ctikzset{seven seg/color off/.initial=gray!20!white} % ...and "off"
-\ctikzset{seven seg/box/.is choice}
-\ctikzset{seven seg/box/off/.code={\pgf@circ@sevenseg@boxfalse}}
-\ctikzset{seven seg/box/on/.code={\pgf@circ@sevenseg@boxtrue}}
-
-\ctikzset{seven seg/bits/.initial=0000000}
-
-\ctikzset{seven seg/value/.code={%
- \edef\@@tmp{#1}%
- \edef\@@n{0} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111110}\fi
- \edef\@@n{1} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110000}\fi
- \edef\@@n{2} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1101101}\fi
- \edef\@@n{3} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111001}\fi
- \edef\@@n{4} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110011}\fi
- \edef\@@n{5} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011011}\fi
- \edef\@@n{6} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011111}\fi
- \edef\@@n{7} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110000}\fi
- \edef\@@n{8} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111111}\fi
- \edef\@@n{9} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111011}\fi
- \edef\@@n{10}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
- \edef\@@n{11}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
- \edef\@@n{12}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
- \edef\@@n{13}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
- \edef\@@n{14}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
- \edef\@@n{15}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
- \edef\@@n{A} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
- \edef\@@n{B} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
- \edef\@@n{C} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
- \edef\@@n{D} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
- \edef\@@n{E} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
- \edef\@@n{F} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
- \edef\@@n{a} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
- \edef\@@n{b} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
- \edef\@@n{c} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
- \edef\@@n{d} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
- \edef\@@n{e} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
- \edef\@@n{f} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
- \edef\@@n{-} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0000001}\fi
-}}
-
-\tikzset{%
- seven segment val/.style args={#1dot#2box#3}{%
- shape=bare7seg,
- /tikz/circuitikz/seven seg/value=#1,
- /tikz/circuitikz/seven seg/dot=#2,
- /tikz/circuitikz/seven seg/box=#3,
- },
- seven segment bits/.style args={#1dot#2box#3}{%
- shape=bare7seg,
- /tikz/circuitikz/seven seg/bits=#1,
- /tikz/circuitikz/seven seg/dot=#2,
- /tikz/circuitikz/seven seg/box=#3,
- },
-}
-
-
-%%%%%%%%%% new
-\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
-
-% Electronic tubes: diodetube, triode, tetrode and pentode
-\ctikzset{tubes/width/.initial=1} % relative width
-\ctikzset{tubes/height/.initial=1.4} % relative height
-\ctikzset{tubes/tube radius/.initial=0.40} % radius of tube circle
-\ctikzset{tubes/anode distance/.initial=0.40} % distance from center
-\ctikzset{tubes/anode width/.initial=0.40} % width of an anode/plate
-\ctikzset{tubes/grid protrusion/.initial=0.25} % distance from center
-\ctikzset{tubes/grid dashes/.initial=5} % number of grid dashes
-\ctikzset{tubes/grid separation/.initial=0.2} % separation between grids
-\ctikzset{tubes/grid shift/.initial=0.0} % y shift grids from center
-\ctikzset{tubes/cathode distance/.initial=0.40} % distance from grid
-\ctikzset{tubes/cathode width/.initial=0.40} % width of an cathode
-\ctikzset{tubes/cathode corners/.initial=0.06} % corners of the cathode wire
-\ctikzset{tubes/cathode right extend/.initial=0.075} % extension at the right side
-\ctikzset{tubes/filament distance/.initial=0.1} % distance from cathode
-\ctikzset{tubes/filament angle/.initial=15} % Angle from centerpoint
-
-\newif\ifpgf@circuit@tubes@filament\pgf@circuit@tubes@filamentfalse
-\pgfkeys{/tikz/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
-\ctikzset{tubes/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
-\newif\ifpgf@circuit@tubes@nocathode\pgf@circuit@tubes@nocathodefalse
-\pgfkeys{/tikz/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
-\ctikzset{tubes/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
-\newif\ifpgf@circuit@tubes@fullcathode\pgf@circuit@tubes@fullcathodefalse
-\pgfkeys{/tikz/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
-\ctikzset{tubes/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
-
-%%%---------- close: tex/pgfcirc.defines
-%%%%%%%%%%% Springe nach tex/pgfcircutils
-%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-\def\pgf@circ@handleSI#1{
- \noexpandarg
- \def\pgf@temp{}
- \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
- \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
-
- \ifnum\pgf@circ@handleSI@unit@len=0
- \pgf@circ@siunitx@resfalse
- \else
- \IfEndWith{#1}{>}{
- \pgf@circ@siunitx@restrue
- \noexpandarg
- \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
- %\typeout{si |#1|}
- }{
- \pgf@circ@siunitx@resfalse
- %\typeout{no si |#1|}
- }
-\fi
-}
-
-\def\pgf@circ@ifkeyempty#1{
- \pgfextra{
- \ctikzset{#1/.get=\pgf@circ@temp}
- \edef\pgf@temp{}
- }
- \ifx\pgf@circ@temp\pgf@temp
- }
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Math routines
-
-\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% useful commands
-
-\ifpgfutil@format@is@latex
- %% flipping text
- \def\ctikzflipx#1{\scalebox{-1}[1]{#1}}
- \def\ctikzflipy#1{\scalebox{1}[-1]{#1}}
- \def\ctikzflipxy#1{\scalebox{-1}[-1]{#1}}
- % text mode overbar
- % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
- \def\ctikztextnot#1{$\overline{\hbox{#1}}\m@th$}
-\else\ifpgfutil@format@is@plain
- % text mode overbar
- % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
- \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
-\else\ifpgfutil@format@is@context
- % text mode overbar
- % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
- \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
-\fi\fi\fi
-
-
-%%%---------- close: tex/pgfcircutils
-
-%%%%%%%%%%% Springe nach tex/pgfcircshapes
-%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Other shapes
-
-%% Nothing
-
-\pgfdeclareshape{emptyshape}{
- \savedanchor{\northeast}{%
- \pgf@x=.5\wd\pgfnodeparttextbox%
- \pgf@y=.5\ht\pgfnodeparttextbox%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
- \anchor{center}{
- \pgfpointorigin
- }
-}
-%
-% Provision for changing opacity. Only expert use, see the manual.
-%
-\ctikzset{poles/open fill opacity/.initial=1.0}% better not touch it
-\tikzset{open poles opacity/.code={%
- \ctikzset{poles/open fill opacity=#1}%
-}}
-\ctikzset{poles/full fill opacity/.initial=1.0}% better not touch it
-\tikzset{full poles opacity/.code={%
- \ctikzset{poles/full fill opacity=#1}%
-}}
-
-%% Full terminal
-
-\pgfdeclareshape{circ}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Empty round terminal
-
-\pgfdeclareshape{ocirc}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
- }
-
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfsetcolor{\ctikzvalof{color}}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{white}
- % ...but override it if the class is defined!
- % note that this element has no class, but will inherit it when used
- % into another component
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Diamond terminal
-
-\pgfdeclareshape{diamondpole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
- \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
- \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
- \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
- % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
- \pgfpointintersectionoflines
- {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
- % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgf@x=\@@switchx\pgf@x
- \pgf@y=\@@switchy\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgftransformrotate{45}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% Diamond terminal, unfilled
-
-\pgfdeclareshape{odiamondpole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
- \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
- \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
- \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
- % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
- \pgfpointintersectionoflines
- {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
- % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgf@x=\@@switchx\pgf@x
- \pgf@y=\@@switchy\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgftransformrotate{45}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\ctikzvalof{color}}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{white}
- % ...but override it if the class is defined!
- % note that this element has no class, but will inherit it when used
- % into another component
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% square terminal, filled
-
-\pgfdeclareshape{squarepole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpointborderrectangle
- {\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-%% square terminal, unfilled
-
-\pgfdeclareshape{osquarepole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpointborderrectangle
- {\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\ctikzvalof{color}}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{white}
- % ...but override it if the class is defined!
- % note that this element has no class, but will inherit it when used
- % into another component
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-% BNC connector
-
-\pgfdeclareshape{bnc}{
- \anchor{center}{
- \pgfpointorigin
- }
- % BNC size is 2.5 times the size of the internal "ocirc"
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgf@y=2.5\pgf@y
- \pgf@x=-\pgf@y
- }
- % center is on the opening
- \anchor{center}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{zero}{ \pgfpointorigin }
- \anchor{hot}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{shield}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- % geo-anchors
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{right}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{left}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
- }
- \behindforegroundpath{
- \pgfextracty{\pgf@circ@res@other}{\northwest}
- \pgf@circ@res@step=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgfsetcolor{\ctikzvalof{color}}
- % external circle
- \pgfscope
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{-2\pgf@circ@res@other}{-2\pgf@circ@res@other}}
- {\pgfpoint{2\pgf@circ@res@other}{2\pgf@circ@res@other}}
- % next the opening to the right
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- {\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@step}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@other}
- \pgfusepath{draw}
- \endpgfscope
- % internal circle
- \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@step}
- \pgf@circ@draworfill
- % and the contact line to the right
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-%% Fill for correct rectangular joins
-
-\pgfdeclareshape{rectjoinfill}{
- \savedanchor{\northeast}{%
- \pgf@x=.5\pgflinewidth%
- \pgf@y=.5\pgflinewidth%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfpathrectanglecorners
- {\pgfpoint{0}{.5\pgflinewidth}}
- {\pgfpoint{0}{-.5\pgflinewidth}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% transistor arrow
-
-\def\pgf@circ@find@linescale{
- % find the scale inverse of the scale factor: line width do not scale
- % with scale=..., transform shape so we have to counteract it.
- \iftikz@fullytransformed % this is true if `transform shape` is active
- % from @Circumscribe https://tex.stackexchange.com/a/474035/38080
- % Note that this trick is not working inside a `spy` environment...
- \pgfgettransformentries{\scaleA}{\scaleB}{\scaleC}{\scaleD}{\whatevs}{\whatevs}%
- \pgfmathsetmacro{\@@factor}{1.0/sqrt(abs(\scaleA*\scaleD-\scaleB*\scaleC))}%
- \else
- \pgfmathsetmacro{\@@factor}{1.0}
- \fi
-}
-
-\pgfdeclareshape{trarrow}{%
- % this arrow is only filled but grows with the linewidth, more or less
- % like currarrow do
- \savedanchor{\northeast}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \pgf@circ@find@linescale
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgfpoint{0.7*\pgf@circ@res@step +0.5*\@@factor*\pgflinewidth}
- {0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
- }
- % The arrow size should be more or less the same of a currarrow, which is
- % both filled and stroke, for backward output compatibility (more or less)
- %
- % angle \beta W is \pgf@circ@Rlen/\ctikzvalof{current arrow scale}
- % |-\__ currarrow as the tip at (W,0)
- % | | and the upper tail at (-0.7*W, 0.8*W)
- % | \__ it then "overshoot" do to the linew width L
- % | \__ xangle \alpha
- % ---0------->
- %
- % \beta = atan(0.7/0.8) \alpha=atan(0.8/1.7)
- % tip overshoot is (L/2)/sin(\alpha) = 1.743*L only in x direction
- % tail overshoot is -(L/2) in x, and (L/2)/sin(\beta) = 0.7539*L in y
- %
- \savedanchor{\northwest}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@circ@find@linescale
- \pgfpoint{-0.7*\pgf@circ@res@step -0.5*\@@factor*\pgflinewidth}
- {0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
- }
- \savedanchor{\tip}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@circ@find@linescale
- \pgfpoint{\pgf@circ@res@step + 1.743*\@@factor*\pgflinewidth}{0pt}
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{tip}{
- \tip
- }
- \anchor{btip}{% this anchor is behind the tip of half a linewidth
- \tip
- \pgf@circ@find@linescale
- \pgf@circ@res@temp=\@@factor\pgflinewidth
- \advance\pgf@x by -.5\pgf@circ@res@temp
- }
- \behindforegroundpath{
- \pgfscope
- \northwest
- \pgf@circ@res@up=\pgf@y
- \pgf@circ@res@left=\pgf@x
- \tip
- \pgf@circ@res@step = \pgf@x
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathclose
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{fill} % just fill
- \endpgfscope
- }
-}
-
-%% Current arrow
-
-\pgfdeclareshape{currarrow}{
- \savedanchor{\northeast}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@x=.5\pgf@circ@res@step
- \pgf@y=\pgf@x%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{tip}{
- \pgfpointorigin
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@x =\pgf@circ@res@step
- }
- \behindforegroundpath{
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
-
- \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{draw,fill}
-
- \endpgfscope
- }
-}
-
-%% Flow arrow
-
-\pgfdeclareshape{flowarrow}{
- \savedanchor{\northeast}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@y=.5\pgf@circ@res@step
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 4
- \pgf@x=\pgf@circ@res@step%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{text}{% text centered above
- \pgfpointorigin
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox}
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{tip}{
- \pgfpointorigin
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@x =\pgf@circ@res@step
- }
- \behindforegroundpath{
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 4
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{draw}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfnode{currarrow}{tip}{}{}{\pgfusepath{fill}}
- \endpgfscope
- }
-}
-
-%% Input arrow
-
-\pgfdeclareshape{inputarrow}{
- \savedanchor{\northeast}{% this is really not northeast, really -northwest
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@y=.5\pgf@circ@res@step
- \pgf@x=1.7\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax\pgf@x=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast\pgf@x=0cm\relax}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@x=0cm\relax}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \savedanchor{\tip}{
- \pgfpointorigin
- }
- \anchor{center}{
- \tip
- }
- \anchor{tip}{
- \tip
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 16
-
- \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{fill}
-
- \endpgfscope
- }
-}
-
-
-%% box
-
-\pgfdeclareshape{box}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@circ@res@step = 0.5\pgf@circ@res@step
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-%% box scaled with blocks
-
-\pgfdeclareshape{blockbox}{
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{blocks/scale}\pgf@circ@Rlen}}
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{blocks/scale}\pgf@circ@Rlen}
- \pgfscope
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@step = 0.5\pgf@circ@res@step
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-% full nodes for wire crossing
-
-\pgfdeclareshape{jump crossing}
-{
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \behindbackgroundpath{
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- % horizontal jumper
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
- \pgfsetbeveljoin
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % vertical, broken path
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0pt}{0.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-\pgfdeclareshape{plain crossing}
-{
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \behindbackgroundpath{
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- % horizontal jumper
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % vertical, broken path
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{0.1\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0pt}{0.1\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-
-%%%---------- close: tex/pgfcircshapes
-%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
-%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Monopoles
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%
-%% Grounds
-%%%%%%%%%%%%%
-
-
-%% Ground symbol
-% #1 -> name
-% #2 -> width
-% #3 -> depth
-% #4 -> code
-\long\def\pgf@circ@declareground#1#2#3#4{
- \pgfdeclareshape{#1}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{grounds}} % class of these components
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\southeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
- \pgf@x=#2\pgf@x
- \pgf@y=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
- \pgf@y=-#3\pgf@y
- }
- \anchor{north}{\pgfpointorigin}
- \anchor{north east}{\southeast\pgf@y=0pt\relax}
- \anchor{east}{\southeast\pgf@y=.5\pgf@y}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\southeast\pgf@y=.5\pgf@y\pgf@x=-\pgf@x}
- \anchor{north west}{\southeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- \anchor{center}{\pgfpointorigin}
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- #4
- \endpgfscope
- }
- }
-}
-
-
-\pgf@circ@declareground{ground}{0.6}{1.6}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-\pgf@circ@declareground{tlground}{0.6}{0.4}{
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-
-\pgf@circ@declareground{rground}{0.6}{1}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{monopoles/rground}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-\pgf@circ@declareground{tground}{0.6}{0}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-}
-
-\pgf@circ@declareground{sground}{0.6}{1.8}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
- \pgfpathclose
- \pgf@circ@draworfill
-}
-
-% noiseless ground
-\pgf@circ@declareground{nground}{0.9}{1.6}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.9\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpatharc{0}{180}{0.9\pgf@circ@res@step}
- \pgfusepath{draw}
-}
-
-% protective ground
-\pgf@circ@declareground{pground}{0.9}{1.8}{
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0pt}{-0.9\pgf@circ@res@step}}{0.9\pgf@circ@res@step}
- \pgf@circ@draworfill
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-% chassis ground
-\pgf@circ@declareground{cground}{1}{2}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-1.00\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{ 0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{ 0.50\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.25\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-% Contributed by @fotesan https://github.com/fotesan
-% european ground
-\pgf@circ@declareground{eground}{1.1}{1.7}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.1\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-\pgf@circ@declareground{eground2}{1.1}{1.7}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.45\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%%%%%%
-%% Power supplies
-%%%%%%%%%%%%%%%%%%
-
-% Vcc
-\pgfdeclareshape{vcc}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{power supplies}} % class of these components
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \saveddimen{\scaledwidth}{% thanks to @Schrรถdinger's cat on https://tex.stackexchange.com/a/506249/38080
- \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
- \pgfmathsetmacro{\gscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
- \pgfmathsetlength{\pgf@x}{(\ctikzvalof{\ctikzclass/scale}*\gscale*\ctikzvalof{monopoles/vcc/width})*\pgf@circ@Rlen}%
- }
- \savedanchor{\northeast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@circ@res@step
- \pgf@y=3\pgf@x%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
- \anchor{south}{\pgfpointorigin}
- \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{center}{\pgfpointorigin}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- \anchor{text}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=2\pgf@circ@res@step
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgfscope
- \edef\pgf@circ@temp{\ctikzvalof{monopoles/vcc/arrow}}\edef\pgf@temp{legacy}
- \ifx\pgf@temp\pgf@circ@temp
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \else
- \pgfsetarrowsend{\pgf@circ@temp}
- \fi
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% Vee
-\pgfdeclareshape{vee}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{power supplies}} % class of these components
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \saveddimen{\scaledwidth}{% thanks to @Schrรถdinger's cat on https://tex.stackexchange.com/a/506249/38080
- \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
- \pgfmathsetmacro{\gscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
- \pgfmathsetlength{\pgf@x}{(\ctikzvalof{\ctikzclass/scale}*\gscale*\ctikzvalof{monopoles/vcc/width})*\pgf@circ@Rlen}%
- }
- \savedanchor{\northeast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@circ@res@step
- \pgf@y=-3\pgf@x%
- }
- \anchor{south}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
- \anchor{north}{\pgfpointorigin}
- \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast}
- \anchor{south west}{\northeast\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast\pgf@y=0pt\relax}
- \anchor{north west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{center}{\pgfpointorigin}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- \anchor{text}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=-2\pgf@circ@res@step
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
-
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgfscope
- \edef\pgf@circ@temp{\ctikzvalof{monopoles/vee/arrow}}\edef\pgf@temp{legacy}
- \ifx\pgf@temp\pgf@circ@temp
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \else
- \pgfsetarrowsend{\pgf@circ@temp}
- \fi
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-%%%%%%%%%%%%%%%%
-%% RF elements
-%%%%%%%%%%%%%%%%
-
-% Legacy tlinestub
-% Contributed by Leonardo Azzinnari
-\pgfdeclareshape{tlinestub}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\northeast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
- \pgf@x=1.2\pgf@circ@res@step
- \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
- \pgf@y=.2\pgf@circ@res@step%
- }
- % the center is on the left side of the shape for facility of usage
- \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0.5\pgf@x\relax}
- \anchor{west}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=0cm\relax}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@x=0cm\pgf@y=-\pgf@y}
- \anchor{center}{\pgfpointorigin}
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
-
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
- \pgf@circ@res@step=0.6\pgf@circ@scaled@Rlen
-
- \pgfscope\begin{pgftransparencygroup}
- \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgf@circ@maybefill
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \end{pgftransparencygroup} \endpgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- }
-}
-
-%% New antennas without tails
-
-% main body of antennas
-\def\pgf@circ@antennabody{%
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{2\pgf@circ@res@step}}
- \pgfsetbeveljoin
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{2\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-% Waves for the antennas.
-\def\pgf@circ@antennawaves{%
- \pgfscope
- % define a triangle for clipping the waves
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathclose
- \pgfusepath{clip}
- % ...and build the waves as clipped circles
- \pgf@circ@count@a=8\pgf@circ@res@other=0.5\pgf@circ@res@step
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>2
- \pgfpathcircle{\pgfpoint{0pt}{\pgf@circ@res@step}}{\the\pgf@circ@count@a*\pgf@circ@res@other}
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% additional shape with the waves
-\pgfdeclareshape{waves}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0pt}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
- \anchor{bottom}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{north east}{\northeast}
- \anchor{east}{\northeast\pgf@y=0pt}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@step=0.5\pgf@circ@res@step
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfscope
- % define a triangle for clipping the waves
- \pgfpathmoveto{\pgfpoint{-2\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfpathclose
- \pgfusepath{clip}
- % ...and build the waves as clipped circles
- \c@pgf@counta=8\pgf@circ@res@other=0.5\pgf@circ@res@step
- \pgfmathloop%
- \ifnum\c@pgf@counta>1
- \pgfpathcircle{\pgfpoint{-2\pgf@circ@res@step}{0pt}}{\the\c@pgf@counta*\pgf@circ@res@other}
- \advance\c@pgf@counta-1\relax%
- \repeatpgfmathloop
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% the three types of antennas: simple, TX, RX. Notice that you can flip them...
-
-\pgfdeclareshape{bareantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=2\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{bottom}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{south}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@antennabody
- }
-}
-
-\pgfdeclareshape{bareTXantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=2\pgf@circ@res@step
- }
- \savedanchor{\savedwaves}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=4.2\pgf@circ@res@step
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
- \pgf@x=\dimexpr-\pgf@x-\wd\pgfnodeparttextbox\relax
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{waves}{\savedwaves}
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{bottom}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{south}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@antennabody
- \pgf@circ@antennawaves
- }
-}
-
-\pgfdeclareshape{bareRXantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=2\pgf@circ@res@step
- }
- \savedanchor{\savedwaves}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=-4.2\pgf@circ@res@step
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{waves}{\savedwaves}
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{bottom}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{south}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@antennabody
- \pgftransformxshift{-5.2\pgf@circ@res@step}
- \pgf@circ@antennawaves
- }
-}
-
-% Microstrip monopoles
-
-\pgfdeclareshape{mslstub}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\southeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
- \pgf@y=-.5\pgf@y
- }
- \savedanchor{\northwest}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- }
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{east}{\southeast\pgf@y=0pt\relax}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
- \anchor{north west}{\northwest}
- %
- \anchor{center}{\northwest\pgf@y=0pt\relax}
- \anchor{left}{\northwest\pgf@y=0pt\relax}
- \anchor{right}{\southeast\pgf@y=0pt\relax}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- \behindbackgroundpath{
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@right}{\southeast}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@down}{\southeast}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{msrstub}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\southeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt\relax
- }
- \savedanchor{\northwest}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- \pgf@y=\ctikzvalof{monopoles/msrstub/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- }
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{east}{\southeast\pgf@y=0pt\relax}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
- \anchor{north west}{\northwest}
- %
- \anchor{center}{\pgfpointorigin}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- \behindbackgroundpath{
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@right}{\southeast}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@down}{\southeast}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointpolar{135}{\pgf@circ@res@step}}
- \pgfpatharc{135}{45}{\pgf@circ@res@step}
- \pgfpathlineto{\pgfpointpolar{45}{\pgf@circ@res@up}}
- \pgfpatharc{45}{135}{\pgf@circ@res@up}
- \pgfclosepath
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{msport}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\southeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
- \pgf@y=-.5\pgf@y
- }
- \savedanchor{\northwest}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- }
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{east}{\southeast\pgf@y=0pt\relax}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
- \anchor{north west}{\northwest}
- %
- \anchor{center}{\northwest\pgf@y=0pt\relax}
- \anchor{left}{\northwest\pgf@y=0pt\relax}
- \anchor{right}{\southeast\pgf@y=0pt\relax}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr-.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- }
- \behindbackgroundpath{
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@right}{\southeast}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@down}{\southeast}
- \pgfmathsetlength{\pgf@circ@res@step}{0.5*\pgf@circ@res@up}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-% Legacy antennas (with tails)
-\def\pgf@circ@shift@antenna@xy#1#2{%
- \pgf@y=\dimexpr\pgf@y+#2\pgf@circ@res@step
- \pgf@x=\dimexpr\pgf@x+#1\pgf@circ@res@step
-\relax}
-
-% Legacy antenna
-\pgfdeclareshape{antenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=4\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{2}}
- \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{0}{3}\relax}
- \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{4}\relax}
- \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{3}}
- \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
- \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
- \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{0}{4}}
- \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{4}}
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
-
- \pgftransformxshift{ -4\pgf@circ@res@step }
-
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
-}
-
-% Legacy TX antenna
-\pgfdeclareshape{txantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=4\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
- \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
- \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
- \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
- \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{4}{2}}
- \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
- \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
- \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
- % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
-}
-
-% Legacy RX antenna
-\pgfdeclareshape{rxantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=4\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
- \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
- \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
- \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
- \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{4}{2}}
- \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
- \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
- \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
- % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- }
-}
-
-% Legacy match
-\pgfdeclareshape{match}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\northeast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@scaled@Rlen
- \pgf@x=2\pgf@circ@res@step
- \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@circ@res@step%
- }
- % the center is on the left side of the shape for facility of usage
- \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=0pt\pgf@x=0.5\pgf@x\relax}
- \anchor{west}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=0cm\relax}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\pgfpointorigin}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@scaled@Rlen
- \pgf@x=1.5\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \pgf@y=-1.5\ht\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@scaled@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
- \pgfusepath{fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \endpgfscope
- }
-}
-
-%%%---------- close: tex/pgfcircmonopoles
-%%%%%%%%%%% Springe nach tex/pgfcircbipoles
-%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%% Generic macro for defining a bipole shape
-% #1 - additional anchors
-% #2 - lower y-size of the bipole (from the center).
-% #3 - #shape is the name of the shape
-% #4 - upper y-size of the bipole (from the center)
-% #5 - width of the bipole
-% #6 - macros drawing the bipole
-%
-\long\def\pgfcircdeclarebipole{%
- \pgfcircdeclarebipolescaled{default}}
-
-%% Generic macro for defining a bipole shape
-% #1 - scale factor
-% #2 - additional anchors
-% #3 - lower y-size of the bipole (from the center).
-% #4 - #shape is the name of the shape
-% #5 - upper y-size of the bipole (from the center)
-% #6 - width of the bipole
-% #7 - macros drawing the bipole
-%
-\long\def\pgfcircdeclarebipolescaled#1#2#3#4#5#6#7{
- \pgfdeclareshape{#4shape}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{#1}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\northeast}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@y=#5\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=#6\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\northeastborder}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@y=#5\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=#6\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwestborder}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@y=-#3\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=-#6\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwest}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@y=-#3\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-#6\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\centerpoint}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@circ@res@down=-#3\pgf@circ@scaled@Rlen
- \pgf@circ@res@up=#5\pgf@circ@scaled@Rlen
- \pgfpointorigin
- \pgf@y=\pgf@circ@res@up
- \advance\pgf@y by\pgf@circ@res@down
- \pgf@y=.5\pgf@y
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{n}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{north east}{
- \northeast
- }
- \anchor{north west}{
- \northeast
- \pgf@x=-\pgf@x
- }
- \anchor{ne}{
- \northeast
- }
- \anchor{nw}{
- \northeast
- \pgf@x=-\pgf@x
- }
- \anchor{e}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{s}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{south east}{
- \southwest
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \southwest
- }
- \anchor{se}{
- \southwest
- \pgf@x=-\pgf@x
- }
- \anchor{sw}{
- \southwest
- }
- \anchor{w}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{north}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{east}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{south}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{west}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{right}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{above}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{left}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{below}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{a}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{b}{
- \southwest
- \pgf@y=0cm
- }
- \savedanchor{\textanchor}{%
- \pgf@y=\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \anchor{text}{
- \textanchor
- }
- \anchorborder{%
- \ifpgf@circuit@bipole@inverted
- \pgf@circ@res@left=-\pgf@x
- \pgf@circ@res@right=-\pgf@y
- \else
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@right=\pgf@y
- \fi
- \ifdim\pgf@circ@res@right>0cm
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
- \else
- \southwestborder
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
- \fi
- }
-
- #2
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@zero = 0cm
- \pgf@circ@res@left = -\pgf@x
- \pgf@circ@res@right = \pgf@x
- \southwest
- \pgf@circ@res@down = \pgf@y
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- #7
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- }
- }
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Standard bipole shapes declarations
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%
-% Resistive components
-%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% Short circuit
-
-%%% NOTICE that the short is really NOT drawn; we trust the fact that its
-%%% natural length is zero.
-\pgfcircdeclarebipole
-{}
-{0}
-{short}
-{0}
-{0}
-{ }
-
-%% Open circuit
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/open/height}}
-{open}
-{\ctikzvalof{bipoles/open/height}}
-{\ctikzvalof{bipoles/open/width}}
-{ }
-
-% multiwire(s)
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/multiwire/height}}
-{multiwire}
-{\ctikzvalof{bipoles/multiwire/height}}
-{\ctikzvalof{bipoles/multiwire/width}}
-{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/multiwire/height}}
-{bmultiwire}
-{\ctikzvalof{bipoles/multiwire/height}}
-{\ctikzvalof{bipoles/multiwire/width}}
-{
- \pgf@circ@res@other=\ctikzvalof{bipoles/multiwire/spacing}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-}
-%% Generic bipole - used as resistor by some (bleah)
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/generic/height}}
-{generic}
-{\ctikzvalof{bipoles/generic/height}}
-{\ctikzvalof{bipoles/generic/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-
-%% Generic empty tunable
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/tgeneric/height}}
-{tgeneric}
-{\ctikzvalof{bipoles/tgeneric/height}}
-{\ctikzvalof{bipoles/tgeneric/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Generic asymmetric bipole
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/ageneric/height}}
-{ageneric}
-{\ctikzvalof{bipoles/ageneric/height}}
-{\ctikzvalof{bipoles/ageneric/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-%% Memristor
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/memristor/height}}
-{memristor}
-{\ctikzvalof{bipoles/memristor/height}}
-{\ctikzvalof{bipoles/memristor/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-%% Photoresistor
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/photoresistor/height 2}}
-{photoresistor}
-{\ctikzvalof{bipoles/photoresistor/height}}
-{\ctikzvalof{bipoles/photoresistor/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Thermistor
-\pgfcircdeclarebipolescaled{resistors}
-{{% anchor for labelling the type of dependency
- \anchor{label}{%
- \southwest
- \pgf@x=0.4\pgf@x
- \pgf@y=1.2\pgf@y
- }%
-}}
-{\ctikzvalof{bipoles/thermistor/height}}
-{thermistor}
-{\ctikzvalof{bipoles/thermistor/height}}
-{\ctikzvalof{bipoles/thermistor/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- %\pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- %\endpgfscope
-}
-
-%% Thermistor PTC
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/thermistorptc/height 2}}
-{thermistorptc}
-{\ctikzvalof{bipoles/thermistorptc/height}}
-{\ctikzvalof{bipoles/thermistorptc/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Thermistor NTC
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/thermistorntc/height 2}}
-{thermistorntc}
-{\ctikzvalof{bipoles/thermistorntc/height}}
-{\ctikzvalof{bipoles/thermistorntc/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Generic tunable
-\pgfcircdeclarebipolescaled{resistors}
-{
- \savedanchor{\wiper}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@ya=\ctikzvalof{bipoles/generic potentiometer/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@ya
- \pgf@xa=\ctikzvalof{bipoles/generic potentiometer/width}\pgf@circ@scaled@Rlen
- \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/generic potentiometer/wiper pos}-0.5)*\pgf@xa}
- }
- \anchor{wiper}{\wiper}
- \anchor{W}{\wiper}
-}
-{\ctikzvalof{bipoles/generic potentiometer/height 2}}
-{genericpotentiometer}
-{\ctikzvalof{bipoles/generic potentiometer/height}}
-{\ctikzvalof{bipoles/generic potentiometer/width}}
-{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
- \pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \pgfextractx{\pgf@circ@res@other}{\wiper}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Zig zag resistores
-\def\pgf@circ@zigzag#1{%
- \divide \pgf@circ@res@step by \numexpr4*\zigs\relax
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \pgf@circ@count@a=\zigs\relax
- % first half zig
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}}
- \pgfmathloop%
- \advance\pgf@circ@count@a by -1\relax% Loop zigs -1 times
- \ifnum\pgf@circ@count@a>0
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}}
- \repeatpgfmathloop%
- % last zig and a half
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-}
-
-%% Resistor
-\pgfcircdeclarebipolescaled{resistors}
-{
-\savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
-}
-{\ctikzvalof{bipoles/resistor/height}}
-{resistor}
-{\ctikzvalof{bipoles/resistor/height}}
-{\ctikzvalof{bipoles/resistor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \pgf@circ@zigzag{1}
-}
-
-
-%% Variable resistor
-\pgfcircdeclarebipolescaled{resistors}
-{
-\savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
-}
-{\ctikzvalof{bipoles/vresistor/height}}
-{vresistor}
-{\ctikzvalof{bipoles/vresistor/height}}
-{\ctikzvalof{bipoles/vresistor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/vresistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \pgf@circ@zigzag{.5}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Potentiometer
-\pgfcircdeclarebipolescaled{resistors}
-{
- \savedanchor{\wiper}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@ya=\ctikzvalof{bipoles/potentiometer/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@ya
- \pgf@xa=\ctikzvalof{bipoles/potentiometer/width}\pgf@circ@scaled@Rlen
- \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/potentiometer/wiper pos}-0.5)*\pgf@xa}
- }
- \anchor{wiper}{\wiper}
- \anchor{W}{\wiper}
- \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
-}
-{\ctikzvalof{bipoles/potentiometer/height 2}}
-{potentiometer}
-{\ctikzvalof{bipoles/potentiometer/height}}
-{\ctikzvalof{bipoles/potentiometer/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/potentiometer/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \pgf@circ@zigzag{1}
-
- \pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \pgfextractx{\pgf@circ@res@other}{\wiper}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Resistive sensor
-\pgfcircdeclarebipolescaled{resistors}
-{% anchor for labelling the type of dependency
- \anchor{label}{\southwest\pgf@x=0.4\pgf@x}%
- \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
-}
-{\ctikzvalof{bipoles/resistivesens/height}}
-{resistivesens}
-{\ctikzvalof{bipoles/resistivesens/height}}
-{\ctikzvalof{bipoles/resistivesens/width}}
-{%
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistivesens/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \pgf@circ@zigzag{.5}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-.9\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%%%%%%%%%%%%%%
-%% Capacitors
-%%%%%%%%%%%%%
-
-%% Plain Capacitor
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/capacitor/height}}
-{capacitor}
-{\ctikzvalof{bipoles/capacitor/height}}
-{\ctikzvalof{bipoles/capacitor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
-}
-
-%% Capacitive sensor
-\pgfcircdeclarebipolescaled{capacitors}
-{
- \anchor{label}{\southwest\pgf@x=2.6\pgf@x\pgf@y=1.2\pgf@y}%
-}
-{\ctikzvalof{bipoles/capacitor/height}}
-{capacitivesens}
-{\ctikzvalof{bipoles/capacitor/height}}
-{\ctikzvalof{bipoles/capacitor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{2.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-2.6\pgf@circ@res@right}{1.2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-4.4\pgf@circ@res@right}{1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Polar Capacitor (DEPRECATED)
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/pcapacitor/height}}
-{polarcapacitor}
-{\ctikzvalof{bipoles/pcapacitor/height}}
-{\ctikzvalof{bipoles/pcapacitor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgftransformrotate{-90}
- \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-%% Curved capacitor
-% see https://tex.stackexchange.com/questions/509594/polar-capacitor-orientation-in-circuitikz-seems-wrong
-% for a rationale
-%
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/ccapacitor/height}}
-{ccapacitor}
-{\ctikzvalof{bipoles/ccapacitor/height}}
-{\ctikzvalof{bipoles/ccapacitor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+ \ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgftransformrotate{-90}
- \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}}
- \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% Electrolytic Capacitor
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/ecapacitor/height}}
-{ecapacitor}
-{\ctikzvalof{bipoles/ecapacitor/height}}
-{\ctikzvalof{bipoles/ecapacitor/width}}
-{
- \pgfsetrectcap
- % % % Draw plus pole
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
- % % Draw minus pole
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfsetfillcolor{\ctikzvalof{color}}
- \pgfusepath{draw,fill}
- \pgfsetfillcolor{\ctikzvalof{color}}
- % % plus pole annotation
- \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
- {\ctikzvalof{bipoles/ecapacitor/font} $+$}
-}
-
-%% Variable Capacitor
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/vcapacitor/height}}
-{vcapacitor}
-{\ctikzvalof{bipoles/vcapacitor/height}}
-{\ctikzvalof{bipoles/vcapacitor/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfusepath{draw}
-}
-
-
-%% Piezoelectric Element
-
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/piezoelectric/height}}
-{piezoelectric}
-{\ctikzvalof{bipoles/piezoelectric/height}}
-{\ctikzvalof{bipoles/piezoelectric/width}}
-{
- % \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
- % \divide \pgf@circ@res@step by 5
-
- %% Outer markings
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %% Inner Box
- \pgf@circ@res@step = \pgf@circ@res@right \divide \pgf@circ@res@step by 10
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners
- {\pgfpoint{\pgf@circ@res@left+4*\pgf@circ@res@step}{\pgf@circ@res@up-\pgf@circ@res@step}}
- {\pgfpoint{\pgf@circ@res@right-4*\pgf@circ@res@step}{\pgf@circ@res@down+\pgf@circ@res@step}}
- \pgf@circ@draworfill
- \endpgfscope
-}
-
-%%%%%%%%%%%%%%%
-%% Inductors
-%%%%%%%%%%%%%%%
-
-%% cute inductor
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
- \ctikzvalof{bipoles/cuteinductor/height} :% even
- -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
-{cuteinductor}
-{\ctikzvalof{bipoles/cuteinductor/height}}
-{\ctikzvalof{bipoles/cuteinductor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% cute inductive sensor
-\pgfcircdeclarebipolescaled{inductors}
-{% anchor for labelling the type of dependency
- \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}%
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
- \ctikzvalof{bipoles/cuteinductor/height} :% even
- -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
-{scuteinductor}
-{\ctikzvalof{bipoles/cuteinductor/height}}
-{\ctikzvalof{bipoles/cuteinductor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% cute choke
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
- \ctikzvalof{bipoles/cuteinductor/height} :% even
- -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/cutechoke/lower coil height}}
-{cutechoke}
-{\ctikzvalof{bipoles/cutechoke/height}}
-{\ctikzvalof{bipoles/cutechoke/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cutechoke/coil aspect}*\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen/(\ctikzvalof{bipoles/cutechoke/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cutechoke/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cutechoke/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cutechoke/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
- \pgfusepath{stroke}
-
- \ifpgf@circuit@bipole@twolineschoke
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
- \pgfusepath{stroke}
- \fi
-}
-
-%% variable cute inductor
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
- \ctikzvalof{bipoles/cuteinductor/height} :% even
- -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}
-{vcuteinductor}
-{\ctikzvalof{bipoles/vcuteinductor/height}}
-{\ctikzvalof{bipoles/vcuteinductor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% american inductor
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?%
- 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even
- 0) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/americaninductor/height 2}}
-{americaninductor}
-{\ctikzvalof{bipoles/americaninductor/height}}
-{\ctikzvalof{bipoles/americaninductor/width}}
-{
- \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-
-%% american inductive sensor
-\pgfcircdeclarebipolescaled{inductors}
-{% anchor for labelling the type of dependency
- \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}%
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?%
- 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even
- 0) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/americaninductor/height 2}}
-{samericaninductor}
-{\ctikzvalof{bipoles/americaninductor/height}}
-{\ctikzvalof{bipoles/americaninductor/width}}
-{
- \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% variable american inductor
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/vamericaninductor/coils},2) ?%
- 2*\ctikzvalof{bipoles/vamericaninductor/coil height} :% even
- 0) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/vamericaninductor/height 2}}
-{vamericaninductor}
-{\ctikzvalof{bipoles/vamericaninductor/height}}
-{\ctikzvalof{bipoles/vamericaninductor/width}}
-{
- \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@scaled@Rlen
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/vamericaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Generic bipole, filled - used as inductor by some
-\pgfcircdeclarebipolescaled{inductors}
-{
- \anchor{midtap}{\northeast\pgf@x=0pt\relax}
-}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{fullgeneric}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{\ctikzvalof{bipoles/fullgeneric/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfusepath{draw,fill}
-}
-
-%% Generic sensor, filled - used as inductive sensor by some
-\pgfcircdeclarebipolescaled{inductors}
-{% anchor for labelling the type of dependency
- \anchor{label}{\southwest\pgf@x=0.4\pgf@x\pgf@y=2\pgf@y}%
- \anchor{midtap}{\northeast\pgf@x=0pt\relax}
-}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{sfullgeneric}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{\ctikzvalof{bipoles/fullgeneric/width}}
-{
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw,fill}
- %\pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{2\pgf@circ@res@down}}
- \pgfusepath{draw}
- %\endpgfscope
-}
-
-%% Generic full tunable
-\pgfcircdeclarebipolescaled{inductors}
-{
- \anchor{midtap}{\northeast\pgf@x=0pt\relax}
-}
-{\ctikzvalof{bipoles/tfullgeneric/height}}
-{tfullgeneric}
-{\ctikzvalof{bipoles/tfullgeneric/height}}
-{\ctikzvalof{bipoles/tfullgeneric/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw,fill}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%%%%%%%%%%%
-%% Battery
-%%%%%%%%%%%
-
-%% Battery
-\pgfcircdeclarebipolescaled{batteries}
-{}
-{\ctikzvalof{bipoles/battery/height}}
-{battery}
-{\ctikzvalof{bipoles/battery/height}}
-{\ctikzvalof{bipoles/battery/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 6
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \ifpgf@circ@fixbatteries
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-}
-
-
-%% Battery 1 % poles with equl thickness
-
-\pgfcircdeclarebipolescaled{batteries}
-{}
-{\ctikzvalof{bipoles/battery1/height}}
-{battery1}
-{\ctikzvalof{bipoles/battery1/height}}
-{\ctikzvalof{bipoles/battery1/width}}
-{
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \ifpgf@circ@fixbatteries
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-}
-
-%% Battery 2 % negative pole thicker
-
-\pgfcircdeclarebipolescaled{batteries}
-{}
-{\ctikzvalof{bipoles/battery2/height}}
-{battery2}
-{\ctikzvalof{bipoles/battery2/height}}
-{\ctikzvalof{bipoles/battery2/width}}
-{
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \ifpgf@circ@fixbatteries
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{3\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{3\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%
-%% Round and diamond sources
-%%%%%%%%%%%
-
-%% Independent voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsource/height}}
-{vsource}
-{\ctikzvalof{bipoles/vsource/height}}
-{\ctikzvalof{bipoles/vsource/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-%% Independent voltage source - American style
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsourceam/height}}
-{vsourceAM}
-{\ctikzvalof{bipoles/vsourceam/height}}
-{\ctikzvalof{bipoles/vsourceam/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfsetcolor{\ctikzvalof{color}}
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$-$}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{$-$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{$+$}
- \fi
-}
-
-%% Independent sinusoidal voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsourcesin/height}}
-{vsourcesin}
-{\ctikzvalof{bipoles/vsourcesin/height}}
-{\ctikzvalof{bipoles/vsourcesin/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Square Voltage source - contributed by Alistair Kwan
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsourcesquare/height}}
-{vsourcesquare}
-{\ctikzvalof{bipoles/vsourcesquare/height}}
-{\ctikzvalof{bipoles/vsourcesquare/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Triangle Voltage source - contributed by Ralf Farkas
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsourcetri/height}}
-{vsourcetri}
-{\ctikzvalof{bipoles/vsourcetri/height}}
-{\ctikzvalof{bipoles/vsourcetri/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% PV Source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/pvsource/height}}
-{pvsource}
-{\ctikzvalof{bipoles/pvsource/height}}
-{\ctikzvalof{bipoles/pvsource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %Arrow Part
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty Source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/esource/height}}
-{esource}
-{\ctikzvalof{bipoles/esource/height}}
-{\ctikzvalof{bipoles/esource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-}
-
-%% DC Current Source with open shape
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/dcisource/height}}
-{dcisource}
-{\ctikzvalof{bipoles/dcisource/height}}
-{\ctikzvalof{bipoles/dcisource/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@maybefill
- \edef\@@angle{\ctikzvalof{bipoles/dcisource/angle}}
- \pgfpathmoveto{\pgfpointpolar{\@@angle}{\pgf@circ@res@up}}
- \pgfpatharc{\@@angle}{-\@@angle}{\pgf@circ@res@up}
- \pgfpathmoveto{\pgfpointpolar{180-\@@angle}{\pgf@circ@res@up}}
- \pgfpatharc{180-\@@angle}{180+\@@angle}{\pgf@circ@res@up}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% DC-Voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/dcvsource/height}}
-{dcvsource}
-{\ctikzvalof{bipoles/dcvsource/height}}
-{\ctikzvalof{bipoles/dcvsource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
- \pgfusepath{draw}
-}
-
-%% Independent current source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isource}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
-}
-
-%% Independent double oo source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/oosource/height}}
-{oosource}
-{\ctikzvalof{bipoles/oosource/height}}
-{\ctikzvalof{bipoles/oosource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
- \pgf@circ@maybefill
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
- \pgf@circ@draworfill
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
- \pgfusepath{draw}
-}
-
-%% Independent current source - American
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isourceam/height}}
-{isourceAM}
-{\ctikzvalof{bipoles/isourceam/height}}
-{\ctikzvalof{bipoles/isourceam/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% Independent sinusoidal current source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isourcesin}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty controlled source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/ecsource/height}}
-{ecsource}
-{\ctikzvalof{bipoles/ecsource/height}}
-{\ctikzvalof{bipoles/ecsource/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-}
-
-%% Controlled voltage source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsource/height}}
-{cvsource}
-{\ctikzvalof{bipoles/cvsource/height}}
-{\ctikzvalof{bipoles/cvsource/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-%% Controlled voltage source - American
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsourceam/height}}
-{cvsourceAM}
-{\ctikzvalof{bipoles/cvsourceam/height}}
-{\ctikzvalof{bipoles/cvsourceam/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfsetcolor{\ctikzvalof{color}}
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$+$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$-$}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{$-$}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{$+$}
- \fi
-}
-
-%% Controlled sinusoidal voltage source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{cvsourcesin}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{\ctikzvalof{bipoles/cvsourcesin/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Controlled sinusoidal current source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{cisourcesin}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{\ctikzvalof{bipoles/cvsourcesin/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Controlled current source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cisource/height}}
-{cisource}
-{\ctikzvalof{bipoles/cisource/height}}
-{\ctikzvalof{bipoles/cisource/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Controlled current source - American
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cisourceam/height}}
-{cisourceAM}
-{\ctikzvalof{bipoles/cisourceam/height}}
-{\ctikzvalof{bipoles/cisourceam/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% Cute Independent voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsource/height}}
-{vsourceC}
-{\ctikzvalof{bipoles/vsource/height}}
-{\ctikzvalof{bipoles/vsource/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Cute Independent current source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isourceC}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Cute Controlled voltage source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsource/height}}
-{cvsourceC}
-{\ctikzvalof{bipoles/cvsource/height}}
-{\ctikzvalof{bipoles/cvsource/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Cute Controlled current source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cisource/height}}
-{cisourceC}
-{\ctikzvalof{bipoles/cisource/height}}
-{\ctikzvalof{bipoles/cisource/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@down}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Noise voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsource/height}}
-{vsourceN}
-{\ctikzvalof{bipoles/vsource/height}}
-{\ctikzvalof{bipoles/vsource/width}}
-{
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- %
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax
- \edef\pgf@noise@temp{dashed}
- \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}}
- \ifx\pgf@noise@temp\pgf@noise@fill
- % fillable in this case
- \pgf@circ@draworfillandclip
- \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thinner\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- %
- \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \else
- \pgfsetfillcolor{\pgf@noise@fill}
- \pgfusepath{draw,fill}
- \fi
- \endpgfscope
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-%% Noise current source
-
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isourceN}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- %
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax
- \edef\pgf@noise@temp{dashed}
- \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}}
- \ifx\pgf@noise@temp\pgf@noise@fill
- % fillable in this case
- \pgf@circ@draworfillandclip
- \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thinner\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- %
- \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \else
- \pgfsetfillcolor{\pgf@noise@fill}
- \pgfusepath{draw,fill}
- \fi
- \endpgfscope
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%%
-%% Diodes
-%%%%%%%%%%%%%%
-
-%% Black generic diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fulldiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black Zener diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black alternative zigzag Zener diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullzzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black Schottky diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullsdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Black tunnel diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fulltdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black light emitting diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fulllediode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-}
-
-%% Black photodiode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullpdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latexslim}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black varcap
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/varcap/height}}
-{fullvarcap}
-{\ctikzvalof{bipoles/varcap/height}}
-{\ctikzvalof{bipoles/varcap/width}}
-{
- \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgfsetlinewidth{\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfusepath{draw,fill}
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Code for the diode triangle
-\def\pgf@circ@basicdiodeshape{
- % \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfscope
- % to allow filling, we need to draw explicitly the stroke here.
- \pgfsetlinewidth{\pgfstartlinewidth}
- \ifpgf@circuit@bipole@strokedsymbol
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
- % \endpgfscope
-}
-
-%% Empty generic diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptydiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty Zener diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptyzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty alternative zigzag Zener diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptyzzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-%% Empty Schottky diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptysdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty tunnel diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptytdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty light emitting diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptylediode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty photodiode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptypdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latexslim}
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty varcap
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/varcap/height}}
-{emptyvarcap}
-{\ctikzvalof{bipoles/varcap/height}}
-{\ctikzvalof{bipoles/varcap/width}}
-{
- \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgfsetlinewidth{\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- % \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfscope
- % to allow filling, we need to draw explicitily the stroke here.
- \pgfsetlinewidth{\pgfstartlinewidth}
- \ifpgf@circuit@bipole@strokedsymbol
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty bidirectionaldiode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{emptybidirectionaldiode}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{\ctikzvalof{bipoles/bidirectionaldiode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgf@circ@draworfill
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%% Full bidirectionaldiode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{fullbidirectionaldiode}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{\ctikzvalof{bipoles/bidirectionaldiode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw, fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%% Black thyristor
-\pgfcircdeclarebipolescaled{diodes}
-{
- \anchor{gate}{\northeast}
- \anchor{anode}{\southwest\pgf@y=0cm}
- \anchor{G}{\northeast}
- \anchor{cathode}{\northeast\pgf@y=0cm }
-}
-{\ctikzvalof{tripoles/thyristor/height 2}}
-{fullthyristor}
-{\ctikzvalof{tripoles/thyristor/height}}
-{\ctikzvalof{tripoles/thyristor/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty thyristor
-
-\pgfcircdeclarebipolescaled{diodes}
-{
- \anchor{gate}{\northeast}
- \anchor{anode}{\southwest\pgf@y=0cm}
- \anchor{G}{\northeast}
- \anchor{cathode}{\northeast\pgf@y=0cm }
-}
-{\ctikzvalof{tripoles/thyristor/height 2}}
-{emptythyristor}
-{\ctikzvalof{tripoles/thyristor/height}}
-{\ctikzvalof{tripoles/thyristor/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfscope
- % to allow filling, we need to draw explicitily the stroke here.
- \pgfsetlinewidth{\pgfstartlinewidth}
- \ifpgf@circuit@bipole@strokedsymbol
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%% Empty triac
-\pgfcircdeclarebipolescaled{diodes}
-{
- \anchor{gate}{\northeast}
- \anchor{anode}{\southwest\pgf@y=0cm}
- \anchor{G}{\northeast}
- \anchor{cathode}{\northeast\pgf@y=0cm }
-}
-{\ctikzvalof{tripoles/triac/height}}
-{emptytriac}
-{\ctikzvalof{tripoles/triac/height}}
-{\ctikzvalof{tripoles/triac/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgf@circ@draworfill
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%% Full triac
-\pgfcircdeclarebipolescaled{diodes}
-{
- \anchor{gate}{\northeast}
- \anchor{anode}{\southwest\pgf@y=0cm}
- \anchor{G}{\northeast}
- \anchor{cathode}{\northeast\pgf@y=0cm }
-}
-{\ctikzvalof{tripoles/triac/height}}
-{fulltriac}
-{\ctikzvalof{tripoles/triac/height}}
-{\ctikzvalof{tripoles/triac/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%
-%% switches
-%%%%%%%%%%%%%
-
-%% (Closing) SPST
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/spst/depth}}
-{cspst}
-{\ctikzvalof{bipoles/spst/height}}
-{\ctikzvalof{bipoles/spst/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpointpolar{90}{1.2\pgf@circ@res@right}}
- \pgfpatharc{90}{-20}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfsetbeveljoin
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Opening SPST
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/spst/depth}}
-{ospst}
-{\ctikzvalof{bipoles/spst/height}}
-{\ctikzvalof{bipoles/spst/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
- \pgfpatharc{-10}{90}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfsetbeveljoin
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Normal open Switch
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/nos/depth}}
-{nos}
-{\ctikzvalof{bipoles/nos/height}}
-{\ctikzvalof{bipoles/nos/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{draw}
-}
-
-%% Normal closed Switch
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/ncs/depth}}
-{ncs}
-{\ctikzvalof{bipoles/ncs/height}}
-{\ctikzvalof{bipoles/ncs/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Push Button
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/pushbutton/height 2}}
-{pushbutton}
-{\ctikzvalof{bipoles/pushbutton/height}}
-{\ctikzvalof{bipoles/pushbutton/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-
-%% Normally closed Push Button
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/pushbutton/height 2}}
-{ncpushbutton}
-{\ctikzvalof{bipoles/pushbutton/height}}
-{\ctikzvalof{bipoles/pushbutton/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- % Warning, if the nodes will have a class, we have to touch this.
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp}}
- \pgfpathmoveto{\pgfpoint{0}{-\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- %
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-%%% reed switches
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/reed/depth}}
-{reed}
-{\ctikzvalof{bipoles/reed/height}}
-{\ctikzvalof{bipoles/reed/width}}
-{
- % this is designed to be the same as a "nos".
- \pgfmathsetmacro{\@@tmpx}{0.9*\ctikzvalof{bipoles/nos/width}/\ctikzvalof{bipoles/reed/width}}
- \pgfmathsetmacro{\@@tmpy}{\ctikzvalof{bipoles/nos/height}/\ctikzvalof{bipoles/reed/height}}
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- % eclosure
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@up}{\pgf@circ@res@up}}
- \pgfpatharc{90}{-90}{\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@up}{-\pgf@circ@res@up}}
- \pgfpatharc{270}{90}{\pgf@circ@res@up}
- \pgfpathclose
- \pgf@circ@draworfill
- % switch
- \pgfpathmoveto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{\@@tmpy\pgf@circ@res@up}}
- % connection lines
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- % connection lines
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-}
-
-% cute switch "to" shapes help function
-% #1 -> name
-% #2 -> barposition
-% #3 -> arrowcode
-\long\def\pgfcircdeclarecutesw#1#2#3{
- \pgfcircdeclarebipolescaled{switches}
- {
- \savedanchor\midlever{
- % these values are calculated when we create the definition of the shape.
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgf@circ@res@down = -.5\pgf@y
- \pgf@circ@res@up = .5\pgf@y
- \pgfextracty{\pgf@circ@res@other}{#2}
- \pgf@x=0pt
- \pgf@y=.5\pgf@circ@res@other
- }
- % radius of the connector
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- % If cnnecting nodes are scaled, we have to modify this
- \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % shape type
- \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
- % mid of the lever, to stack switches
- \anchor{mid}{\midlever}
- \anchor{cout}{\northeast \pgf@y=0cm}
- \anchor{cin}{\southwest\pgf@y=0cm}
- \anchor{out}{\northeast \pgf@y=0cm\advance\pgf@x by \radius}
- \anchor{in}{\southwest\pgf@y=0cm\advance\pgf@x by -\radius}
- }
- {\ctikzvalof{bipoles/cuteswitch/height 2}}
- {#1}
- {\ctikzvalof{bipoles/cuteswitch/height}}
- {\ctikzvalof{bipoles/cuteswitch/width}}{
- \pgfscope
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- % If cnnecting nodes are scaled, we have to modify this
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgfsetlinewidth{2\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{#2}
- \pgfsetroundcap\pgfusepath{draw}
- \endpgfscope
- \pgfscope % arrow
- #3
- \endpgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-out}{\pgfusepath{draw}}
- }
-}
-
-%% closed cute switch
-\pgfcircdeclarecutesw{cuteclosedswitch}
- {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
- {}
-
-%% open cute switch
-\pgfcircdeclarecutesw{cuteopenswitch}
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- {}
-
-%% closing cute switch
-\pgfcircdeclarecutesw{cuteclosingswitch}
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- {
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{70}{1.2\pgf@circ@res@right}}
- \pgfpatharc{70}{-10}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
- }
-
-%% opening cute switch
-\pgfcircdeclarecutesw{cuteopeningswitch}
- {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
- {
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
- \pgfpatharc{-10}{60}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
- }
-
-%%%%%%%%%%%%%%%%%
-%% Instruments
-%%%%%%%%%%%%%%%%%
-
-% % METERINGSHAPE
-\long\def\drawmeteringcircle{
- \def\pgf@circ@temp{right}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \def\pgf@circ@temp{below}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \pgf@circ@res@step=1.2\pgf@circ@res@up
- \fi
- \fi
- %draw connections to circle
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- %draw circle
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgf@circ@draworfill
- \endpgfscope
- %draw arrow
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%AMPEREMETER
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/ammeter/height}}
-{ammeter}
-{\ctikzvalof{bipoles/ammeter/height}}
-{\ctikzvalof{bipoles/ammeter/width}}
-{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\pgf@circ@font@bold{A}}{}{}
-}
-%OHMMETER
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/ohmmeter/height}}
-{ohmmeter}
-{\ctikzvalof{bipoles/ohmmeter/height}}
-{\ctikzvalof{bipoles/ohmmeter/width}}
-{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
-}
-%VOLTMETER
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/voltmeter/height}}
-{voltmeter}
-{\ctikzvalof{bipoles/voltmeter/height}}
-{\ctikzvalof{bipoles/voltmeter/width}}
-{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\pgf@circ@font@bold{V}}{}{}
-
-}
-
-% oscilloscope, suggested by @nobrl https://github.com/circuitikz/circuitikz/issues/176
-\pgfcircdeclarebipolescaled{instruments}
-{
- \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
- \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/oscope/height}}
-{oscope}
-{\ctikzvalof{bipoles/oscope/height}}
-{\ctikzvalof{bipoles/oscope/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\southwest}
- \pgfextracty{\pgf@circ@res@down}{\southwest}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfscope
- \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- % this would create a round (analog?) scope...
- % \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \endpgfscope
- % get the rotation
- \ifpgf@circuit@straightinstruments
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \else
- \edef\rot{0}
- \fi
- % and unrotate the scope
- \pgfscope
- \pgftransformrotate{\rot}
- % grid
- \pgfscope
- \pgfsetlinewidth{0.5\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfpathgrid[stepx=\pgf@circ@res@step, stepy=\pgf@circ@res@step]%
- {\pgfpoint{0.75\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- {\pgfpoint{0.75\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfsetstrokeopacity{0.5}
- \pgfusepath{draw}
- \endpgfscope
- % function displayed, thanks to
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% generic round meter with always horizontal text, no arrow
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/esource/height}}
-{rmeter}
-{\ctikzvalof{bipoles/esource/height}}
-{\ctikzvalof{bipoles/esource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- % draw the text label
- % get the rotation
- \ifpgf@circuit@straightinstruments
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \else
- \edef\rot{0}
- \fi
- % and unrotate the scope
- \pgfscope
- \pgfsetcolor{\ctikzvalof{color}}
- \pgftransformrotate{\rot}
- \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
- \endpgfscope
-}
-
-% generic round meter with always horizontal text, with arrow
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/esource/height}}
-{rmeterwa}
-{\ctikzvalof{bipoles/esource/height}}
-{\ctikzvalof{bipoles/esource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- % draw the text label
- % get the rotation
- \ifpgf@circuit@straightinstruments
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \else
- \edef\rot{0}
- \fi
- % and unrotate the scope
- \pgfscope
- \pgftransformrotate{\rot}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfsetlinewidth{\pgfstartlinewidth}
- % arrow: create a center hole to have better visual
- \pgfscope
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
- {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
- % next open a circle into it
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{.6\pgf@circ@res@up}}{\pgfpoint{.6\pgf@circ@res@left}{0}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfsetarrowsend{latexslim}
- % the arrow is better if it has a bit of breath and it's not 45ยบ
- \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@right}{1.2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- \pgftext[center]{\ctikzvalof{bipoles/twoport/text}}
- \endpgfscope
-}
-
-% generic square meter with always horizontal text
-\pgfcircdeclarebipolescaled{instruments}
-{
- \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
- \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/smeter/height}}
-{smeter}
-{\ctikzvalof{bipoles/smeter/height}}
-{\ctikzvalof{bipoles/smeter/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\southwest}
- \pgfextracty{\pgf@circ@res@down}{\southwest}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfscope
- \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
- \endpgfscope
- % get the rotation
- \ifpgf@circuit@straightinstruments
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \else
- \edef\rot{0}
- \fi
- % and unrotate the scope
- \pgfscope
- \pgftransformrotate{\rot}
- % the metering window
- \pgfscope
- \def\@starta{105}\def\@stopa{75}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftransformshift{\pgfpoint{0pt}{-1.8\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{\@starta}{2\pgf@circ@res@up}}
- \pgfpatharc{\@starta}{\@stopa}{2\pgf@circ@res@up}
- \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
- \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
- \pgfclosepath
- \pgfpathmoveto{\pgfpointpolar{80}{2\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{80}{2.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- \pgftext[center, y=0.5\pgf@circ@res@down]{\ctikzvalof{bipoles/twoport/text}}
- \endpgfscope
-}
-
-% probes qucs style:
-% #1 : name
-% #2 : extra code
-\long\def\pgfcirc@qucsprobe#1#2{
- \pgfcircdeclarebipolescaled{instruments}
- {
- \anchor{v+}{\southwest\pgf@x=0.6\pgf@x}
- \anchor{v-}{\southwest\pgf@x=-0.6\pgf@x}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- }
- {\ctikzvalof{bipoles/qmeter/depth}}
- {#1}
- {\ctikzvalof{bipoles/qmeter/height}}
- {\ctikzvalof{bipoles/qmeter/width}}
- {
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\southwest}
- \pgfextracty{\pgf@circ@res@down}{\southwest}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfscope
- \pgfscope
- \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
- \endpgfscope
- \def\@starta{103}\def\@stopa{77}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfscope
- \pgftransformshift{\pgfpoint{0pt}{-1.7\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{\@starta}{2.1\pgf@circ@res@up}}
- \pgfpatharc{\@starta}{\@stopa}{2.1\pgf@circ@res@up}
- \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
- \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
- \pgfclosepath
- \pgfpathmoveto{\pgfpointpolar{83}{2.1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{83}{2.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgf@circ@draworfill
- \endpgfscope
- #2
- \endpgfscope
- }
-}
-
-\pgfcirc@qucsprobe{qiprobe}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- \pgfnode{currarrow}{center}{}{}{}
-}
-
-\pgfcirc@qucsprobe{qvprobe}{
- \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{0pt}}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
- \pgfusepath{draw}
- \pgfscope
- % "+" and "-", drawn so that they scale correctly
- \pgfsetlinewidth{2\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-1.5\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-3.5\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-\pgfcirc@qucsprobe{qpprobe}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- \pgfnode{currarrow}{center}{}{}{}
- \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{-4\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{-4\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfscope
- % "+" and "-", drawn so that they scale correctly
- \pgfsetlinewidth{2\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-2\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-4\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right-4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% current loop for oscope and similar: stylized
-\pgfcircdeclarebipolescaled{instruments}
-{
- \anchor{i}{\northeast\pgf@x=0pt\relax}
- \anchor{text}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/iloop/height}}
-{iloop}
-{\ctikzvalof{bipoles/iloop/height}}
-{\ctikzvalof{bipoles/iloop/width}}
-{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@down=-\pgf@circ@res@up
- \pgf@circ@res@left=-\pgf@circ@res@right
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcolor{\ctikzvalof{color}}
- % external ellipse
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
- {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
- % next the opening to the left
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
- {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathellipse{\pgfpointorigin}{
- \pgfpoint{0pt}{0.8\pgf@circ@res@up}}{
- \pgfpoint{0.4\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- % internal wire
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % and the contact line up
- \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% current loop for oscope and similar: real (double connection)
-\pgfcircdeclarebipolescaled{instruments}
-{
- \anchor{i+}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@step=0.4\pgf@circ@res@right
- \pgf@circ@res@other=0.8\pgf@circ@res@up
- \pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgf@y=\pgf@circ@res@up
- }
- \anchor{i-}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@step=0.4\pgf@circ@res@right
- \pgf@circ@res@other=0.8\pgf@circ@res@up
- \pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgf@y=\pgf@circ@res@up
- }
- \anchor{text}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/iloop/height}}
-{iloop2}
-{\ctikzvalof{bipoles/iloop/height}}
-{\ctikzvalof{bipoles/iloop/width}}
-{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@down=-\pgf@circ@res@up
- \pgf@circ@res@left=-\pgf@circ@res@right
- % must be the same than internal i+ and i- anchors definition
- \pgf@circ@res@step=0.4\pgf@circ@res@right
- \pgf@circ@res@other=0.8\pgf@circ@res@up
- \def\@plus{\pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}}
- \def\@minus{\pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}}
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcolor{\ctikzvalof{color}}
- % external ellipse
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
- {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
- % next the opening to the left
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
- {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathmoveto{\@plus}
- \pgfpatharc{105}{435}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfusepath{draw}
- \endpgfscope
- % internal wire
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % and the contact line up
- % I use ...left and ---right as temporal lengths here to avoid defining more
- \pgfextractx{\pgf@circ@res@left}{\@plus}
- \pgfextractx{\pgf@circ@res@right}{\@minus}
- \pgfpathmoveto{\@plus}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathmoveto{\@minus}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% Varistor
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/varistor/height}}
-{varistor}
-{\ctikzvalof{bipoles/varistor/height}}
-{\ctikzvalof{bipoles/varistor/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\pgf@circ@font@tiny\textsf{U}}}
-}
-
-%%%%%%%%%%%%%%
-%% RF bipoles
-%%%%%%%%%%%%%%
-
-% transmission line
-\pgfcircdeclarebipolescaled{RF}
-{}
-{\ctikzvalof{bipoles/tline/height}}
-{tline}
-{\ctikzvalof{bipoles/tline/height}}
-{\ctikzvalof{bipoles/tline/width}}
-{
- \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
- \begin{pgftransparencygroup}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
- {\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{-\pgf@circ@res@up}}
- \pgf@circ@draworfill
- \end{pgftransparencygroup}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{stroke}
-}
-
-% microstrip transmission line
-\pgfcircdeclarebipolescaled{RF}
-{}
-{\ctikzvalof{bipoles/mstline/height}}
-{mstline}
-{\ctikzvalof{bipoles/mstline/height}}
-{\ctikzvalof{bipoles/mstline/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-
-%%%%%%%%%%%%%%%%%%%
-%% Block diagrams
-%%%%%%%%%%%%%%%%%%%
-
-%% Draw the two-port fillable box
-\def\pgf@circ@twoportbox{
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \endpgfscope
-}
-
-%% Generic two port box
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/twoport/height}}
-{twoport}
-{\ctikzvalof{bipoles/twoport/height}}
-{\ctikzvalof{bipoles/twoport/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw outer box
- \pgf@circ@twoportbox
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
-}
-
-%% voltage controled oscillator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/vco/width}}
-{vco}
-{\ctikzvalof{bipoles/twoport/width}}
-{\ctikzvalof{bipoles/vco/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw circle
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
- \pgf@circ@draworfill
- \endpgfscope
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% bandpass filter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/bandpass/width}}
-{bandpass}
-{\ctikzvalof{bipoles/bandpass/width}}
-{\ctikzvalof{bipoles/bandpass/width}}
-{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% bandstop filter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/bandstop/width}}
-{bandstop}
-{\ctikzvalof{bipoles/bandstop/width}}
-{\ctikzvalof{bipoles/bandstop/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/bandstop/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225% 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt}% always draw solid line for inner symbol
- \pgfsetarrows{-}%never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% highpass filter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/highpass/width}}
-{highpass}
-{\ctikzvalof{bipoles/highpass/width}}
-{\ctikzvalof{bipoles/highpass/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% lowpass filter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/lowpass/width}}
-{lowpass}
-{\ctikzvalof{bipoles/lowpass/width}}
-{\ctikzvalof{bipoles/lowpass/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% ADC
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/adc/width}}
-{adc}
-{\ctikzvalof{bipoles/adc/width}}
-{\ctikzvalof{bipoles/adc/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{A}
- \def\textii{D}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{A}
- \def\textii{D}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DAC
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/dac/width}}
-{dac}
-{\ctikzvalof{bipoles/dac/width}}
-{\ctikzvalof{bipoles/dac/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{D}
- \def\textii{A}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{D}
- \def\textii{A}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DSP
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/dsp/width}}
-{dsp}
-{\ctikzvalof{bipoles/dsp/width}}
-{\ctikzvalof{bipoles/dsp/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{DSP}}
-}
-
-%% FFT
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/fft/width}}
-{fft}
-{\ctikzvalof{bipoles/fft/width}}
-{\ctikzvalof{bipoles/fft/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{FFT}}
-}
-
-%% Amplifier
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{amp}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \pgf@circ@draworfill
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
-
- \pgfsetarrows{-} %never draw arrows
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgf@circ@draworfill
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-}
-
-
-%% variable amplifier
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{vamp}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
-
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgf@circ@draworfill
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
- % draw arrow
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% pi attenuator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/piattenuator/width}}
-{piattenuator}
-{\ctikzvalof{bipoles/piattenuator/width}}
-{\ctikzvalof{bipoles/piattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable pi attenuator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/vpiattenuator/width}}
-{vpiattenuator}
-{\ctikzvalof{bipoles/vpiattenuator/width}}
-{\ctikzvalof{bipoles/vpiattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% T attenuator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/tattenuator/width}}
-{tattenuator}
-{\ctikzvalof{bipoles/tattenuator/width}}
-{\ctikzvalof{bipoles/tattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable T attenuator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/vtattenuator/width}}
-{vtattenuator}
-{\ctikzvalof{bipoles/vtattenuator/width}}
-{\ctikzvalof{bipoles/vtattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% phase shifter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{phaseshifter}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-}
-
-%% variable phase shifter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{vphaseshifter}
-{\ctikzvalof{bipoles/vphaseshifter/width}}
-{\ctikzvalof{bipoles/vphaseshifter/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% detector
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/detector/width}}
-{detector}
-{\ctikzvalof{bipoles/detector/width}}
-{\ctikzvalof{bipoles/detector/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{0.8\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@fulldiode
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
- \else
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
- \fi
-
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%
-%% MECHANICAL SYMBOLS
-%%%%%%%%%%%%%%%%%%%%%%%
-
-%% mechanical capacitance - stiffness/spring
-
-\pgfcircdeclarebipolescaled{mechanicals}
-{}
-{\ctikzvalof{bipoles/spring/height}}
-{spring}
-{\ctikzvalof{bipoles/spring/height}}
-{\ctikzvalof{bipoles/spring/width}}{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@scaled@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% mechanical inductance - mass
-\pgfcircdeclarebipolescaled{mechanicals}
-{}
-{\ctikzvalof{bipoles/mass/box height}}
-{mass}
-{\ctikzvalof{bipoles/mass/height}}
-{\ctikzvalof{bipoles/mass/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-}
-
-%% mechanical resistor - damper
-\pgfcircdeclarebipolescaled{mechanicals}
-{}
-{\ctikzvalof{bipoles/damper/height}}
-{damper}
-{\ctikzvalof{bipoles/damper/height}}
-{\ctikzvalof{bipoles/damper/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@maybefill
-
- % line into the damper
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {\pgf@circ@res@zero}}
- \pgfusepath{stroke}
-
- % damper box
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
-
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-
- % damper vertical element
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{stroke}
-
-}
-%% mechanical viscoelastic element, suggested by @alex
-%% in https://tex.stackexchange.com/questions/484268/combined-spring-damper-in-circuitikz
-\pgfcircdeclarebipolescaled{mechanicals}
-{} % extra anchors
-{\ctikzvalof{bipoles/damper/height}} % depth (under the path line)
-{viscoe} % name
-{\ctikzvalof{bipoles/damper/height}} % height (above the path line)
-{\ctikzvalof{bipoles/damper/width}} % width
-{ % draw the bipole
- \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@maybefill
-
- % spring into the damper
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfsetcornersarced{\pgfpoint{.25\pgf@circ@res@up}{.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.75\pgf@circ@res@left}{.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@left}{-.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{.75\pgf@circ@res@up}}
- \pgfusepath{stroke}
- \endpgfscope
- % damper box
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
-
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-
- % damper vertical element
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{stroke}
-
-}
-
-%%%%%%%%%%%%%%%%
-%% Crossing
-%%%%%%%%%%%%%%%%
-
-%% crossing bipole (but see also nodes)
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/crossing/size}}
-{crossing}
-{\ctikzvalof{bipoles/crossing/size}}
-{\ctikzvalof{bipoles/crossing/size}}{
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
- \pgfsetbeveljoin
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Miscellaneous bipoles
-%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% loudspeaker and microphone
-
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/loudspeaker/depth}}
-{loudspeaker}
-{\ctikzvalof{bipoles/loudspeaker/height}}
-{\ctikzvalof{bipoles/loudspeaker/width}}{
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{.4\pgf@circ@res@up}}
- \pgfpathclose
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/mic/depth}}
-{mic}
-{\ctikzvalof{bipoles/mic/height}}
-{\ctikzvalof{bipoles/mic/width}}{
-
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0pt}{.6\pgf@circ@res@up}}{.4\pgf@circ@res@up}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{0pt}}
- % 0.25358 is 0.6-0.4*cos(30)
- \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% european gas filled surge arrester
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
-{european gas filled surge arrester}
-{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
-{\ctikzvalof{bipoles/european gas filled surge arrester/width}}
-{
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@draworfill
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
-}
-
-%% american gas filled surge arrester
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
-{american gas filled surge arrester}
-{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
-{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope{}
-
- \pgfcircle{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\ctikzvalof{bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\ctikzvalof{bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
- \pgfusepath{fill}
-}
-
-%% thermocouple
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/thermocouple/height 2}}
-{thermocouple}
-{\ctikzvalof{bipoles/thermocouple/height}}
-{\ctikzvalof{bipoles/thermocouple/width}}
-{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-}
-
-%% fuse
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/fuse/height}}
-{fuse}
-{\ctikzvalof{bipoles/fuse/height}}
-{\ctikzvalof{bipoles/fuse/width}}
-{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@draworfill
-}
-
-%% asymmetric fuse
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/afuse/height}}
-{afuse}
-{\ctikzvalof{bipoles/afuse/height}}
-{\ctikzvalof{bipoles/afuse/width}}
-{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-%% SQUID added by Cor Molenaar 5 March 2010
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/squid/height}}
-{squid}
-{\ctikzvalof{bipoles/squid/height}}
-{\ctikzvalof{bipoles/squid/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-% Generic barrier added by Cor Molenaar 5 March 2010
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/barrier/height}}
-{barrier}
-{\ctikzvalof{bipoles/barrier/height}}
-{\ctikzvalof{bipoles/barrier/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
-
- \pgfusepath{draw}
-}
-
-%% Lamp
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/lamp/height}}
-{lamp}
-{\ctikzvalof{bipoles/lamp/height}}
-{\ctikzvalof{bipoles/lamp/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% bulb
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/bulb/height}}
-{bulb}
-{\ctikzvalof{bipoles/bulb/height}}
-{\ctikzvalof{bipoles/bulb/width}}
-{%
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{0.8\pgf@circ@res@up}}{\pgfpoint{0.8\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
- \pgfsetbeveljoin
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-% end of pgfcircbipoles.tex
-%%%---------- close: tex/pgfcircbipoles
-%%%%%%%%%%% Springe nach tex/pgfcirctripoles
-%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Tripoles
-
-%%%%%%%%%%%%%
-%% switches
-%%%%%%%%%%%%%
-
-% Legacy spdt
-\pgfdeclareshape{spdt}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/spdt/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out 1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{out 2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@res@other = \ctikzvalof{tripoles/spdt/margin}\pgf@circ@res@left
-
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfscope
- \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
- \pgfpathlineto{
- \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
- {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
- }
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-
-% cute switch "node" shapes, matching with cute "to" shapes
-% #1 -> name
-% #2 -> barposition
-% #3 -> arrowcode
-\long\def\pgfcircdeclarecutespdt#1#2#3{
- \pgfdeclareshape{#1}
- {
- \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.25\pgf@x
- }
- \savedanchor\midlever{
- % these values are calculated when we create the definition of the shape.
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgf@circ@res@down = -.5\pgf@y
- \pgf@circ@res@up = .5\pgf@y
- \pgfextracty{\pgf@circ@res@other}{#2}
- \pgf@x=0pt
- \pgf@y=.5\pgf@circ@res@other
- }
- % radius of the connector
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % shape type
- \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
- % mid of the lever, to stack switches
- \anchor{mid}{\midlever}
- % center anchors
- \anchor{cin}{ \northwest \pgf@y=0pt}
- \anchor{cout 1}{ \northwest \pgf@x=-\pgf@x }
- \anchor{cout 2}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- % horizontal angles
- \anchor{in}{ \northwest \pgf@y=0pt\advance\pgf@x by -\radius}
- \anchor{out 1}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius}
- \anchor{out 2}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius \pgf@y=-\pgf@y }
-
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \pgf@circ@res@temp=\radius\relax
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgfsetlinewidth{2\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{#2}
- \pgfsetroundcap\pgfusepath{draw}
- \endpgfscope
- \pgfscope % arrow
- #3
- \endpgfscope
- % terminals
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfnode{\cshape}{center}{}{\thisshape-out 1}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfnode{\cshape}{center}{}{\thisshape-out 2}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
- \endpgfscope
-
- }
- }
-}
-
-\pgfcircdeclarecutespdt{cute spdt up}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
-{}
-
-\pgfcircdeclarecutespdt{cute spdt mid}
-{\pgfpoint{\pgf@circ@res@right}{0pt}}
-{}
-
-\pgfcircdeclarecutespdt{cute spdt down}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
-{}
-
-\pgfcircdeclarecutespdt{cute spdt up arrow}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{70}{1.5\pgf@circ@res@right}}
- \pgfpatharc{70}{-50}{1.5\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclarecutespdt{cute spdt mid arrow}
-{\pgfpoint{\pgf@circ@res@right}{0pt}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfsetarrowsstart{latexslim}
- \pgfpathmoveto{\pgfpointpolar{-60}{1.5\pgf@circ@res@right}}
- \pgfpatharc{-60}{60}{1.5\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclarecutespdt{cute spdt down arrow}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{-50}{1.5\pgf@circ@res@right}}
- \pgfpatharc{-50}{70}{1.5\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% Logic ports
-%%
-%% Code from John Kormylo at tex.stackexchange.com
-%% See https://tex.stackexchange.com/questions/372993/is-it-possible-to-implement-multiple-input-logic-ports-with-circuitikz
-%% Integration and fixes from Romano Giannetti and TheTeXnician <38565529+TheTeXnician@users.noreply.github.com>
-%%
-
-\newcount\pgf@circ@res@count% reserve global register
-
-\def\pgf@circ@logicport@input#1% #1 = \pgfmathcounter
-{%
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
-}%
-
-% #1 = \pgfmathcounter #2=type #3 specificic port
-% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor, 4 for european.
-\def\pgf@circ@logicport@baseinput#1#2#3%
-{%
- % and and nand
- \ifnum #2=1\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@x=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@left
- \fi
- % or and nor
- \ifnum #2=2\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american #3 port/angle}}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\pgf@y
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgf@x=\pgf@circ@res@other
- \fi
- % xor and xnor
- \ifnum #2=3\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american #3 port/angle}{\pgf@circ@math@angle}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\ctikzvalof{tripoles/american #3 port/distance}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
- % this compensates for the effect of the line width on the gap between the arcs
- \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
- \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
-
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@circ@res@temp=\pgf@y
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \advance\pgf@circ@res@other by -\pgf@circ@math@distance
- \pgf@x=\pgf@circ@res@other
- \fi
- % european
- \ifnum #2=4\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@other}{\left}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@x=\pgf@circ@res@other
- \fi
-}%
-
-%%% american
-\long\def\pgfcircdeclarelogicport#1#2#3{%
- \pgfdeclareshape{american #1 port}%
- {%
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro\resize{% automatic
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@up = \ctikzvalof{tripoles/american #1 port/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgf@circ@res@down = -\pgf@circ@res@up
- \pgf@circ@res@right = \ctikzvalof{tripoles/american #1 port/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right = .5\pgf@circ@res@right
- \pgf@circ@res@left = -\pgf@circ@res@right
- }%
- \savedmacro\inputs{% get number of inputs
- \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
- \ifnum\pgf@circ@res@count=0
- \pgf@circ@res@count=\ctikzvalof{tripoles/american #1 port/inputs}\relax%
- \fi
- \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
- \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
- \def\inputs{\the\pgf@circ@res@count}%
- }%
- \savedanchor\step{% 1/2 gap at edges
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step = \ctikzvalof{tripoles/american #1 port/height}\pgf@circ@scaled@Rlen
- \divide\pgf@circ@res@step by \pgf@circ@res@count
- \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
- }%
- \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \savedanchor\left{\pgfpoint{\ctikzvalof{tripoles/american #1 port/port width}\pgf@circ@res@left}{0pt}}
- \savedanchor\right{\pgfpoint{\ctikzvalof{tripoles/american #1 port/port width}\pgf@circ@res@right}{0pt}}
- \savedanchor\origin{\pgfpoint{\ctikzvalof{tripoles/american #1 port/origin}\pgf@circ@res@right}{0pt}}
-
- \anchor{center}{\origin}% for backwards compatibility
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- % create input anchors
- \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@american #1 port\endcsname{%
- \pgfmathloop%
- \ifnum\pgfmathcounter>\pgf@circ@res@count%
- \else%
- %\pgfutil@ifundefined{pgf@anchor@american #1 port@in \pgfmathcounter}{%
- \expandafter\xdef\csname pgf@anchor@american #1 port@in \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
- }%
- \expandafter\xdef\csname pgf@anchor@american #1 port@bin \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{#2}{#1}% defined above
- }%
- %}{}%
- \repeatpgfmathloop%
- }
-
- \anchor{out}{\northeast\pgf@y=0pt}
- \anchor{bout}{\right\pgf@y=0pt}
-
-
- \anchor{left}{\left}% edges of component minus leads
- \anchor{right}{\right}
-
- \anchor{north east}{\northeast}% see \Compass macro
- \anchor{south west}{\southwest}
- \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfpoint{0cm}{\pgf@circ@res@up}}
- \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{0cm}}
- \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfpoint{0cm}{\pgf@circ@res@down}}
- \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{0cm}}
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- #3
- }
-}
-}
-%%% american and %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{and}{1}{
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@temp}}
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
- % output lead
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@right}
- {0pt}}
- \pgfusepath{draw}
-
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgf@circ@res@other=\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@left
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpatharc{-90}{90}{-2\pgf@circ@res@other and \pgf@circ@res@up}
- \pgfpathclose
- \pgf@circ@draworfill
- }
-%%% american nand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \pgfcircdeclarelogicport{nand}{1}{
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@temp}}
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@right} {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgf@circ@res@step = \ctikzvalof{tripoles/american nand port/circle width}\pgf@circ@res@right
- \pgf@circ@res@other = \ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@right
- \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpatharc{-90}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}
- \pgfpathclose
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgf@circ@draworfill
-}
-%%% american nor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{nor}{2}{
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american nor port/angle}}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/port width}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american nor port/angle}}%
- \pgf@circ@res@step = \ctikzvalof{tripoles/american nor port/circle width}\pgf@circ@res@right
- \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
- \advance\pgf@circ@res@other by -\pgf@circ@res@step
-
- % main shape
- \ifpgfcirc@roundy@or@shapes
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpathclose
- \else
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathclose
- \fi
-
- % not dot
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgf@circ@draworfill
-}
-%%% american or %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{or}{2}{
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american or port/angle}}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/port width}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american or port/angle}}%
-
- % main shape
- \ifpgfcirc@roundy@or@shapes
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpathclose
- \else
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathclose
- \fi
-
- \pgf@circ@draworfill
-}
-%%% american xor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{xor}{3}{
- \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xor port/angle}{\pgf@circ@math@angle}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\ctikzvalof{tripoles/american xor port/distance}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
- % this compensates for the effect of the line width on the gap between the arcs
- \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
- \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \advance\pgf@circ@res@other by -\pgf@circ@math@distance
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/port width}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american xor port/angle}}%
-
- % main shape
- \ifpgfcirc@roundy@or@shapes
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpathclose
- \else
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathclose
- \fi
- \pgf@circ@draworfill
-
- \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
-
- \pgfusepath{draw}
-}
-%%% american xnor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{xnor}{3}{
- \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xnor port/angle}{\pgf@circ@math@angle}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\ctikzvalof{tripoles/american xor port/distance}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
- % this compensates for the effect of the line width on the gap between the arcs
- \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
- \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \advance\pgf@circ@res@other by -\pgf@circ@math@distance
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american xnor port/angle}}%
- \pgf@circ@res@step = \ctikzvalof{tripoles/american xnor port/circle width}\pgf@circ@res@right
- \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
- \advance\pgf@circ@res@other by -\pgf@circ@res@step
-
- % main shape
- \ifpgfcirc@roundy@or@shapes
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpathclose
- \else
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathclose
- \fi
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@left
- \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
-
- \pgfusepath{draw}
-}
-
-%%% Original one-input ports
-
-\pgfdeclareshape{american not port}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{bin}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{bin 1}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgf@circ@draworfill
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgf@circ@draworfill
- \endpgfscope
-
- \ifpgfcirc@draw@leads
- %input leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
- \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
- }
-}
-
-\pgfdeclareshape{american buffer port}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{bin}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{bin 1}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgf@circ@draworfill
- \endpgfscope
-
- \ifpgfcirc@draw@leads
- %input leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
- \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
- }
-}
-\pgfdeclareshape{invschmitt}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{bin}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{bin 1}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgf@circ@draworfill
- \endpgfscope
-
- \ifpgfcirc@draw@leads
- %input leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
- \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- %draw inner shape
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- }
-}
-
-\pgfdeclareshape{schmitt}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{bin}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{bin 1}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-.7\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \ifpgfcirc@draw@leads
- %input leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
- \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- %draw inner shape
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- }
-}
-
-
-%%% start european logic ports, from John Kormylo
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-
-% #1 - name
-% #2 - text inside
-% #3 - number of inputs
-% #4 = is it a not?
-
-\long\def\pgfcircdeclareeurologicport#1#2#3#4{
- \pgfdeclareshape{european #1 port}
- {
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro\resize{% automatic
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@up = \ctikzvalof{tripoles/european #1 port/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgf@circ@res@down = -\pgf@circ@res@up
- \pgf@circ@res@right = \ctikzvalof{tripoles/european #1 port/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right = .5\pgf@circ@res@right
- \pgf@circ@res@left = -\pgf@circ@res@right
- }%
- \savedmacro\inputs{% get number of inputs
- \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
- \ifnum\pgf@circ@res@count=0
- \pgf@circ@res@count=\ctikzvalof{tripoles/european #1 port/inputs}\relax%
- \fi
- \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
- \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
- \def\inputs{\the\pgf@circ@res@count}%
- }%
- \savedanchor\step{% 1/2 gap at edges
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step = \ctikzvalof{tripoles/european #1 port/height}\pgf@circ@scaled@Rlen
- \divide\pgf@circ@res@step by #3
- \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
- }%
- \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}%
- \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}%
- \savedanchor\left{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
- \savedanchor\right{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}%
- \savedanchor\origin{\pgfpoint{\ctikzvalof{tripoles/european #1 port/origin}\pgf@circ@res@right}{0pt}}%
-
- \anchor{center}{\origin}% for backwards compatibility
- % the text anchor overlaps the logic symbol
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}%
- % create input anchors
- \ifnum#3=1\relax
- \anchor{in}{\southwest\pgfpoint{\pgf@x}{0pt}}% or \step
- \anchor{in 1}{\southwest\pgfpoint{\pgf@x}{0pt}}% or \step
- \anchor{bin}{\left\pgfpoint{\pgf@x}{0pt}}% or \step
- \anchor{bin 1}{\left\pgfpoint{\pgf@x}{0pt}}% or \step
- \else
- \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@european #1 port\endcsname{%
- \pgfmathloop%
- \ifnum\pgfmathcounter>#3%
- \else%
- %\pgfutil@ifundefined{pgf@anchor@european #1 port@in \pgfmathcounter}{% redundant
- \expandafter\xdef\csname pgf@anchor@european #1 port@in \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
- }%
- \expandafter\xdef\csname pgf@anchor@european #1 port@bin \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{4}{#1}% defined above
- }%
- %}{}%
- \repeatpgfmathloop%
- }
- \fi
- \anchor{out}{\northeast\pgf@y=0pt}
- \anchor{bout}{\right\pgf@y=0pt}
-
- \anchor{left}{\left}% edges of component minus leads
- \anchor{right}{\right}
-
- \anchor{north east}{\northeast}% see \Compass macro
- \anchor{south west}{\southwest}
- \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfpoint{0cm}{\pgf@circ@res@up}}
- \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{0cm}}
- \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfpoint{0cm}{\pgf@circ@res@down}}
- \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{0cm}}
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathrectanglecorners
- {\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \endpgfscope
- \ifpgfcirc@draw@leads
- %input leads
- \ifnum#3=1\relax
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}%
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
- \else
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- %\pgf@circ@res@count = #3\relax% redundant
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}
- {\pgf@circ@res@temp}}
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
- \fi
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{%
- \pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
- %
- \edef\pgf@temp{not}
- \edef\pgf@circ@temp{#4}
- \ifx\pgf@temp\pgf@circ@temp % is a not
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/european #1 port/not height}\pgf@circ@res@up}}
- \fi
- %
- \pgfusepath{draw}
- %
- \pgfpathmoveto{\pgfpointorigin}
- \pgftext{#2}
- }
- }
-}
-\pgfcircdeclareeurologicport{and}{\&}{\pgf@circ@res@count}{}
-\pgfcircdeclareeurologicport{or}{$\ge 1$}{\pgf@circ@res@count}{}
-\pgfcircdeclareeurologicport{xor}{$=1$}{\pgf@circ@res@count}{}
-\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
-\pgfcircdeclareeurologicport{buffer}{$1$}{1}{}
-\pgfcircdeclareeurologicport{nand}{\&}{\pgf@circ@res@count}{not}
-\pgfcircdeclareeurologicport{nor}{$\ge 1$}{\pgf@circ@res@count}{not}
-\pgfcircdeclareeurologicport{xnor}{$=1$}{\pgf@circ@res@count}{not}
-
-%% end european logic ports
-
-%%%%%%%%%%%%%%%%%%%%%%%%
-%% Transistors
-%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-\long\def\pgfcircdeclaretransistor#1#2#3{
- \pgfdeclareshape{#1}
- {
- \savedmacro{\ctikzclass}{\edef\ctikzclass{transistors}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northeast{% upper right
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/#1/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=0pt
- }
- \savedanchor\left{%center left
- \pgf@y=0pt
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/#1/width}\pgf@circ@scaled@Rlen
- }
- \savedanchor\right{%center right -- added by Burak Kelleci % this is really 0,0
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{text}{
- \northeast
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@transisors@fixlabels
- \ifpgf@circuit@fet@bodydiode
- % try to put the text to the right of the flyback diode
- \pgfmathsetlength{\pgf@circ@res@other}{(
- \ctikzvalof{tripoles/#1/bodydiode distance}*
- \ctikzvalof{tripoles/#1/width} +
- \ctikzvalof{tripoles/#1/bodydiode scale}*
- \ctikzvalof{bipoles/diode/height}/2
- )*\pgf@circ@scaled@Rlen}
- \advance\pgf@x by \pgf@circ@res@other
- \fi
- % add a bit of space to avoid central (substrate) terminal if drawn
- \advance\pgf@x by 0.05\pgf@circ@scaled@Rlen\relax
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- \else
- \pgf@y=.7\pgf@y
- \pgf@x= \pgf@circ@scaled@Rlen
- \pgf@x=0.1\pgf@x
- \fi
- }
- \anchor{pathstart}{ % south
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{pathend}{
- \northeast
- }
- \anchor{north}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \northeast
- \pgf@y=0pt
- }
- \anchor{south}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{south west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- }
- \anchor{north east}{
- \northeast
- }
- \anchor{north west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{south east}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{B}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{base}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{bulk}{ %added by Burak Kelleci
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \right
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{nobulk}{ %added by Burak Kelleci
- \left
- \pgf@x=\ctikzvalof{tripoles/#1/base width}\pgf@x
- }
- \anchor{G}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{gate}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{nobase}{
- \left
- \pgf@x=\ctikzvalof{tripoles/#1/base width}\pgf@x
- }
- \anchor{nogate}{
- \left
- \pgf@x=\ctikzvalof{tripoles/#1/gate width}\pgf@x
- }
- \anchor{E}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{emitter}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{C}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{collector}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{D}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{drain}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{body C in}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- \pgf@y=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y
- }
- \anchor{body E in}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- \pgf@y=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y
- }
- \anchor{body C out}{
- \northeast
- \pgf@ya=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- \pgf@ya=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@ya
- \pgf@y=\pgf@ya
- \left
- \pgf@x=-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@x
- \pgf@y=\pgf@ya
- }
- \anchor{body E out}{
- \northeast
- \pgf@ya=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- \pgf@ya=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@ya
- \pgf@y=\pgf@ya
- \left
- \pgf@x=-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@x
- \pgf@y=\pgf@ya
- }
- #2
- \backgroundpath{
- \pgftransformationadjustments
- \pgfsetcolor{\ctikzvalof{color}}
- %
- \ifnum \ctikzvalof{tripoles/#1/curr direction} > 0
- \pgf@circuit@trans@ntypetrue
- \else
- \pgf@circuit@trans@ntypefalse
- \fi
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = \pgf@x
- \left
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- %
- #3
- % BODY DIODE
- \ifpgf@circuit@fet@bodydiode
- \drawbodydiode{#1}
- \fi
- %
- }
-}
-}
-
-\long\def\drawbodydiode#1{
- \pgfscope
- \pgftransformshift{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgftransformrotate{90}
- % diode scale and bodydiode scale interacts. We want the size of the diode
- % proportional to the transistor, so we will:
- % 1) undo diode scale 2) apply transistor scale (using the current class) 3) apply bodydiode scale
- \pgfmathsetmacro{\@@BDscale}{\ctikzvalof{tripoles/#1/bodydiode scale}* \ctikzvalof{\ctikzclass/scale}/\ctikzvalof{diodes/scale}}
- \pgftransformscale{\@@BDscale}
- \ifpgf@circuit@fulldiode
- \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \else
- \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \fi
- \endpgfscope
- % Draw stroke line
- \ifpgf@circuit@strokediode
- \pgfpathmoveto{\pgfpointanchor{pgf@bodydiode}{west}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
- \pgfusepath{stroke}
- \fi
- %Draw upper connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope{}
- %Draw lower connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope
-}
-
-\long\def\declarebpt#1{
- \pgfcircdeclaretransistor{#1}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/base height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/base height}\pgf@y
- }
- }{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transistor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \edef\@@anchor{center}
- \ifpgf@circuit@trans@ntype
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{btip}
- \pgftransformlineattime{1.0}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{\ctikzvalof{tripoles/#1/arrow pos}}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}%
- }
- \fi
- \else % p-type
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{tip}
- \pgftransformlineattime{1.0}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}%
- }
- \else
- \pgftransformlineattime{\ctikzvalof{tripoles/#1/arrow pos}}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}%
- }
- \fi
- \fi
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \ifpgf@circuit@bpt@drawphoto
- \pgfscope
- \pgfsetarrowsstart{latexslim}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
- \else
- \ifpgf@circuit@bpt@drawbase
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
- \fi
- }
-}
-
-\declarebpt{npn}
-\declarebpt{pnp}
-%
-% multi-emitter and multi-collector BJTs by Romano Giannetti
-%
-\def\pgf@circ@bjt@C@anchor#1{% #1: collector number
- \pgfextractx{\pgf@circ@res@temp}{\basedimension}
- \pgfextracty{\pgf@circ@res@other}{\basedimension}
- \ifnum\cdir>0 % NPN, above
- \pgfpoint{\pgf@circ@res@temp}{%
- \pgf@circ@res@other+\pgfverticaltransformationadjustment*.5*\pgflinewidth+(#1-1)*\multistep}
- \else % PNP, below
- \pgfpoint{\pgf@circ@res@temp}{%
- -\pgf@circ@res@other-\pgfverticaltransformationadjustment*.5*\pgflinewidth-(#1-1)*\multistep}
- \fi
-}
-\def\pgf@circ@bjt@E@anchor#1{% #1: collector number
- \pgfextractx{\pgf@circ@res@temp}{\basedimension}
- \pgfextracty{\pgf@circ@res@other}{\basedimension}
- \ifnum\cdir<0 % PNP, above
- \pgfpoint{\pgf@circ@res@temp}{%
- \pgf@circ@res@other+\pgfverticaltransformationadjustment*.5*\pgflinewidth+(#1-1)*\multistep}
- \else % PNP, below
- \pgfpoint{\pgf@circ@res@temp}{%
- -\pgf@circ@res@other-\pgfverticaltransformationadjustment*.5*\pgflinewidth-(#1-1)*\multistep}
- \fi
-}
-
-\long\def\declarebjt#1{
- \pgfdeclareshape{bjt#1}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{transistors}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- % \cdir is 1 for npn, -1 for pnp
- \savedmacro{\cdir}{\edef\cdir{\ctikzvalof{tripoles/bjt/#1/curr direction}}}
- \savedmacro{\numE}{\edef\numE{\ctikzvalof{tripoles/bjt/emitters}}}
- \savedmacro{\numC}{\edef\numC{\ctikzvalof{tripoles/bjt/collectors}}}
- % step up or down for the additional C/Es
- \saveddimen{\multistep}{\pgfmathsetlength{\pgf@x}{%
- \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
- \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}}
- \saveddimen{\external}{\pgfmathsetlength{\pgf@x}{%
- \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}}
- \savedanchor\basedimension{% these are the dimensions if nC=1 y nE=1
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\northeast{% upper right
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@step}{%
- \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
- \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \ifnum\cdir> 0
- \edef\numup{\numC}\edef\numdown{\numE}
- \else
- \edef\numup{\numE}\edef\numdown{\numC}
- \fi
- \pgfmathsetlength{\pgf@y}{0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
- + (\numup-1)*\pgf@circ@res@step+\pgfverticaltransformationadjustment*.5*\pgflinewidth
- + \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\southeast{% lower right
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@step}{%
- \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
- \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \ifnum\cdir> 0
- \edef\numup{\numC}\edef\numdown{\numE}
- \else
- \edef\numup{\numE}\edef\numdown{\numC}
- \fi
- \pgfmathsetlength{\pgf@y}{-0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
- - (\numdown-1)*\pgf@circ@res@step-\pgfverticaltransformationadjustment*.5*\pgflinewidth
- - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\southwest{% lower left
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@step}{%
- \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
- \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \ifnum\cdir> 0
- \edef\numup{\numC}\edef\numdown{\numE}
- \else
- \edef\numup{\numE}\edef\numdown{\numC}
- \fi
- \pgfmathsetlength{\pgf@y}{-0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
- - (\numdown-1)*\pgf@circ@res@step-\pgfverticaltransformationadjustment*.5*\pgflinewidth
- - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{tripoles/bjt/width}*\pgf@circ@scaled@Rlen
- - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\southwest\pgf@x=0cm\relax}
- \anchor{west}{\southwest\pgf@y=0cm}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@ya=\pgf@y\southwest\pgf@y=\pgf@ya}
- \anchor{south west}{\southwest}
- \anchor{south east}{\southeast}
-
- \anchor{text}{\northeast\pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax}
- \anchor{B}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x\advance\pgf@x by -\external}
- \anchor{base}{\basedimension\pgf@y=0cm\pgf@x=-\pgf@x\advance\pgf@x by -\external}
- \anchor{nobase}{\basedimension\pgf@y=0cm\pgf@x=-\pgf@x}
- % center of the base "bar"
- \anchor{cbase}{\basedimension\pgf@x=-\pgf@x
- \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
- }
- % geometrical centers
- \anchor{vcenter}{\pgf@x=0cm\relax
- \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
- }
- \anchor{gcenter}{%
- \northeast\pgf@xa=0.5\pgf@x
- \southwest\advance\pgf@xa by 0.5\pgf@x
- \pgf@x=\pgf@xa
- \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
- }
- % external connections
- \anchor{E}{
- \ifnum\cdir>0% npn, emitter down
- \southeast
- \else
- \northeast
- \fi
- }% first emitter
- \anchor{emitter}{\ifnum\cdir>0\southeast\else\northeast\fi}% first emitter
- \anchor{C}{\ifnum\cdir<0\southeast\else\northeast\fi}
- \anchor{collector}{\ifnum\cdir<0\southeast\else\northeast\fi}
-
- \backgroundpath{
- \pgftransformationadjustments
- \pgfsetcolor{\ctikzvalof{color}}
- %
- % set the type and up and down number of connections
- %
- \ifnum\cdir> 0
- \pgf@circuit@trans@ntypetrue
- \edef\numup{\numC}
- \edef\numdown{\numE}
- \else
- \pgf@circuit@trans@ntypefalse
- \edef\numup{\numE}
- \edef\numdown{\numC}
- \fi
- \basedimension
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = \pgf@x
- \pgf@circ@res@left = -\pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\multistep
- %
- % set arrow positions options
- %
- \edef\@@anchor{center}\edef\@@pos{\ctikzvalof{tripoles/#1/arrow pos}}
- \ifpgf@circuit@trans@arrowatend
- \edef\@@pos{1.0}
- \ifpgf@circuit@trans@ntype % arrow is toward outside, push it a bit
- \edef\@@anchor{btip}
- \else
- \edef\@@anchor{tip}
- \fi
- \fi
- %
- % Drawing upper connections
- %
- \pgfscope
- \pgf@circ@count@a=\numup\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \advance\pgf@circ@count@a-1\relax
- \pgfmathsetlength{\pgf@circ@res@other}{\the\pgf@circ@count@a*\multistep}%
- \ifnum\pgf@circ@count@a=\numexpr\numup-1\relax % draw the external pin connection
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\external+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
- \pgfpathlineto{\pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
- \else
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
- \fi
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@up+\pgf@circ@res@other}}%
- \pgfsetroundcap % better when connecting to sloped lines
- \pgfusepath{draw}
- \ifpgf@circuit@trans@ntype\else % it's a PNP; draw arrow
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}%
- }{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@up+\pgf@circ@res@other}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
- \repeatpgfmathloop
- \endpgfscope
- %
- % Drawing base
- %
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfsetroundcap % I like it more...
- \pgfusepath{draw}
- \endpgfscope
- %
- % draw base external connection
- %
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-\external}{0pt}}
- \pgfusepath{draw}
- %
- % Drawing lower connections
- %
- \pgfscope
- \pgf@circ@count@a=\numdown\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \advance\pgf@circ@count@a-1\relax
- \pgfmathsetlength{\pgf@circ@res@other}{\the\pgf@circ@count@a*\multistep}%
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint
- {\pgf@circ@res@right}
- {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other}}
- \ifnum\pgf@circ@count@a=\numexpr\numdown-1\relax % draw the external pin connection
- \pgfpathlineto{\pgfpoint
- {\pgf@circ@res@right}
- {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other-\external}}
- \fi
- \pgfsetroundcap % better when connecting to sloped lines
- \pgfusepath{draw}
- \ifpgf@circuit@trans@ntype % it's a NPN; draw arrow
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@down-\pgf@circ@res@other}%
- }{\pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
- \repeatpgfmathloop
- \endpgfscope
- }
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@bjt#1\endcsname{%
- % Start with the maximum collector number and go backwards.
- \pgf@circ@count@a=\numC\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@bjt#1@C\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@bjt@C@anchor{\the\pgf@circ@count@a}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- % and emitters
- \pgf@circ@count@a=\numE\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@bjt#1@E\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@bjt@E@anchor{\the\pgf@circ@count@a}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
- }
-}
-
-\declarebjt{npn}
-\declarebjt{pnp}
-
-% end of multi-bjts
-
-\long\def\declareigbt#1{
- \pgfcircdeclaretransistor{#1}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/gate height}\pgf@y
- }
- }
- {
- %draw upper connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- %draw thicker gate lines
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %draw lower connection
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transistor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \ifpgf@circuit@trans@ntype
- \edef\@@anchor{btip}\edef\@@pos{1.0}
- \else
- \edef\@@anchor{tip}\edef\@@pos{1.0}
- \fi
- \else
- \edef\@@anchor{center}\edef\@@pos{0.5}
- \fi
- \ifpgf@circuit@trans@ntype
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}%
- }
- \fi
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- %draw gate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}}
- \fi
- \pgfusepath{draw}
- }
-}
-
-\declareigbt{pigbt}
-\declareigbt{nigbt}
-\declareigbt{Lnigbt}
-\declareigbt{Lpigbt}
-
-\pgfcircdeclaretransistor{nmos}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/nmos/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/nmos/gate height}\pgf@y
- }
- }{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \ifpgf@circuit@trans@arrowatend
- \pgftransformshift{\pgfpoint
- {\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{trarrow}{btip}{}{}{\pgfusepath{stroke}}
- \else
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\ctikzvalof{tripoles/nmos/arrow pos}}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \fi
- \endpgfscope
- \fi
-
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-
- \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-}
-
-\pgfcircdeclaretransistor{pmos}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/pmos/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/pmos/gate height}\pgf@y
- }
- }{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \ifpgf@circuit@trans@arrowatend
- \pgftransformshift{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
- }
- \pgftransformrotate{180}
- \pgfnode{trarrow}{tip}{}{}{\pgfusepath{stroke}}
- \else
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\ctikzvalof{tripoles/pmos/arrow pos}}{%
- \pgfpoint%
- {\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \fi
- \endpgfscope
- \fi
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
-
-
- \pgfusepath{draw}
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-
- \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-
- \ifpgf@circuit@pmos@nocircle\else
- % we are not scaling the circle with the MOS --- I think it's better to have it
- % coherent with the poles/nodes of the rest of the circuit.
- \pgfpathcircle{\pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left - \ctikzvalof{nodes width}*\pgf@circ@Rlen}
- {\pgf@circ@res@up+\pgf@circ@res@down}}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \ifpgf@circuit@pmos@emptycircle
- \pgfsetfillcolor{white}
- \fi
- \pgfusepath{draw,fill}
- \fi
-}
-
-%% HEMT FET Transistor
-\pgfcircdeclaretransistor{hemt}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/hemt/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/hemt/gate height}\pgf@y
- }
- }{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/hemt/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/hemt/base height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-\long\def\drawfetcore#1{
- \pgftransformationadjustments
- %top connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
- \ifpgf@circuit@trans@depletiontype
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \else
-
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up*0.45}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up*0.25}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down*0.25}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \fi
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %Bulk connection line
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- %bottom connection
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- %draw thick gate line
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- % arrows
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \ifpgf@circuit@trans@ntype
- \edef\@@anchor{tip}
- \edef\@@pos{1.0}
- \else
- \edef\@@anchor{btip}
- \edef\@@pos{0.0}
- \fi
- \else
- \edef\@@anchor{center}\edef\@@pos{0.6}
- \fi
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \ifpgf@circuit@trans@ntype
- \else
- \pgftransformrotate{180}
- \fi
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
-% GATE CONNECTION
-\ifpgf@circuit@bpt@drawgate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {-\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-\fi
-
-}
-
-\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
-{\pgfcircdeclaretransistor{#1}{
- \anchor{bulk}{\left\pgf@x=0pt}
- \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/gate height}\pgf@y
- }
- #2
- }
- {#3}
-}
-
-\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nfet}
-}
-
-\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pfet}
-}
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfete}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
-\fi
-}
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
-\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfetebulk}
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-% N-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{nigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfete}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/pigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
-\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfetebulk}
-}
-
-% P-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{pigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-\pgfcircdeclaretransistor{njfet}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/njfet/gate height 2}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/njfet/gate height 2}\pgf@y
- }
- }{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- % arrow
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{tip}\edef\@@pos{1.0}
- \else
- \edef\@@anchor{center}\edef\@@pos{0.6}
- \fi
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint{\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclaretransistor{pjfet}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@y
- }
- }{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{btip}\edef\@@pos{1.0}
- \else
- \edef\@@anchor{center}\edef\@@pos{0.4}
- \fi
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-\pgfdeclaretransistorwrapperaddbulk{isfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- % DRAIN CONNECTION
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@up}}
- % DRAIN
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % GATE, DEPLETION TYPE
- \pgfscope %% added
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/isfet/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/isfet/base height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth} %% added
- \pgfusepath{draw} %% added
- \endpgfscope %% added
-
- % BULK
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- % SOURCE
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@down}}
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
- % ARROW
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{tip}\edef\@@pos{1.0}
- \else
- \edef\@@anchor{center}\edef\@@pos{0.6}
- \fi
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfusepath{draw}
-
- % Wavy lines
- \pgfscope
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% end of transistors
-
-%%%%%%%%%%%%%
-%% Switches
-%%%%%%%%%%%%%
-
-\pgfcircdeclarebipole{
- \anchor{out 1}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{out 2}{
- \northeast
- \pgf@y=.8\pgf@y
- }
-}
-{\ctikzvalof{tripoles/toggleswitch/height 2}}
-{toggleswitch}
-{\ctikzvalof{tripoles/toggleswitch/height}}
-{\ctikzvalof{tripoles/toggleswitch/width}}
-{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetdash{}{0cm}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% operational and instrumentation amplifiers
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{op amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\left{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/op amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- % Triangle
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Output terminal
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@right}{0pt}}
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-% Op amp shape as in european standard EN 60617
-\pgfdeclareshape{en amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{up}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{down}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/en amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \pgfsetrectcap
- \pgfusepath{draw}
-
-
- \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\hbox{\ctikzvalof{tripoles/en amp/font2}\ctikzvalof{tripoles/en amp/text}}}
- % \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font2}$\mathstrut{\triangleright}\,\mathrm{A}$}
- }
-}
-
-% Fully differential output op amp
-% Contributed by Kristofer M. Monisit
-\pgfdeclareshape{fd op amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\outline{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y\pgf@x=0pt\relax
- }
- \anchor{north}{
- \northwest\pgf@x=0pt\relax
- }
- \savedanchor\left{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd op amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd op amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/fd op amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out up}{
- \northwest
- \pgf@y=\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{out down}{
- \northwest
- \pgf@y=-\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{out +}{
- \outline
- \pgf@y=\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{out -}{
- \outline
- \pgf@y=-\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bout +}{
- \outline
- \pgf@xa=\pgf@x\pgf@ya=\pgf@y
- \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
- {\pgfpoint{\pgf@xa}{0pt}}
- {\pgfpoint{0pt}{\pgf@ya}}
- }
- \anchor{bout -}{
- \outline
- \pgf@xa=\pgf@x\pgf@ya=\pgf@y
- \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
- {\pgfpoint{\pgf@xa}{0pt}}
- {\pgfpoint{0pt}{\pgf@ya}}
- \pgf@y=-\pgf@y
- }
- \anchor{bout up}{
- \northwest
- \pgf@xa=\pgf@x\pgf@ya=\pgf@y
- \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
- {\pgfpoint{\pgf@xa}{0pt}}
- {\pgfpoint{0pt}{\pgf@ya}}
- }
- \anchor{bout down}{
- \northwest
- \pgf@xa=\pgf@x\pgf@ya=\pgf@y
- \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
- {\pgfpoint{\pgf@xa}{0pt}}
- {\pgfpoint{0pt}{\pgf@ya}}
- \pgf@y=-\pgf@y
- }
- % end border anchors
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{out}{% should not be used
- \left
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x \pgf@y=-\pgf@y }
- \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- % Triangle
- % Includes output terminals in the traingular shape
- % to ensure that diagonal joins are properly displayed
- % we first draw the main triangle and the leads with normal thickness,
- % and the redraw the main triangle with the component shape
- \pgfscope
- % shift origin a bit to ease calculations
- \pgftransformxshift{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@step
-
- % Initial point (right vertex)
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
-
- % Negative output terminal
- \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\ctikzvalof{tripoles/fd op amp/output height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@up}}}
-
- % Top vertex
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
-
- % Bottom vertex
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
-
- % Positive output terminal
- \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@down}}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\ctikzvalof{tripoles/fd op amp/output height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@down}}}
-
- % Right vertex
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
-
- \pgfpathclose
- \pgfusepath{stroke}
-
- % ok, now we'll redraw the triangle with the class specific
- % thickness and optionally fill
-
- \pgfscope
- \pgf@circ@setlinewidth{quadpoles}{\pgflinewidth}
-
- % Initial point (right vertex)
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- % Top vertex
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- % Bottom vertex
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
-
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope % thick and fill
- \endpgfscope % shift
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Negative output terminal label
- \pgftext[right, bottom, x=3pt, y=1pt, at=\pgfpoint{0pt}{0.425\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@oplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Positive output terminal label
- \pgftext[right, top, x=3pt, y=-1pt, at=\pgfpoint{0pt}{0.425\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@oplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-
-% Instrumentation amplifier with differential output
-\pgfdeclareshape{fd inst amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- % when tikz calls the anchor it wants the relative position in the lengths
- % \pgf@x \pgf@y
- % \pgfpoint* functions set that variables
- % anchors are visible outside and run on use
- \anchor{center}{\pgfpointorigin}
- % savedanchors are internals and run on node creation (not use)
- % bounding-box top left
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{nw}{
- \northwest
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y\pgf@x=0pt\relax
- }
- \anchor{north}{
- \northwest\pgf@x=0pt\relax
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \ctikzvalof{tripoles/fd inst amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/fd inst amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- % reference voltage input anchors.
- \savedanchor\refv{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/fd inst amp/refv pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
- }
- % we need both because they are normally drawn under the amp, and if you
- % mirror it vertically you need them
- \anchor{refv up}{
- \refv
- }
- \anchor{refv down}{
- \refv
- \pgf@y=-\pgf@y
- }
- \savedanchor\outport{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
- }
- \anchor{out}{
- \outport
- \pgf@y=0pt
- }
- \anchor{out +}{
- \outport
- }
- \anchor{out -}{
- \outport
- \pgf@y=-\pgf@y
- }
- \savedanchor\outportfixed{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- }
- \anchor{out up}{
- \outportfixed
- }
- \anchor{out down}{
- \outportfixed
- \pgf@y=-\pgf@y
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/fd inst amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@x=-\pgf@x \pgf@y=0pt
- }
- \anchor{bout +}{
- \outport
- \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
- }
- \anchor{bout -}{
- \outport
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
- }
- \anchor{bout up}{
- \outportfixed
- \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
- }
- \anchor{bout down}{
- \outportfixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
- }
- % end border anchors
- %
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- % let's start drawing the component
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- %
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- % main component, normally in thicker lines
- \pgfscope
- \newdimen\pgf@circ@res@right@double
- \pgf@circ@res@right@double=2\pgf@circ@res@right
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@step
- %first point (near output)
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{0}}
- %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
- % and then to the input "front up", "down", to the output short side "down"
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@down}}
- % ...and close
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- % input terminal up
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}}
- %
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % input terminal down
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % output leads down and up
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}} %
- \pgftext[right, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$-\;$\else$+\;$\fi}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}} %
- \pgftext[right, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$+\;$\else$-\;$\fi}
- %
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-% Transconductance amplifier (Transkonduktanzverstรคrker)
-\pgfdeclareshape{gm amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/gm amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/gm amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/gm amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/gm amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgfscope
- \newdimen\pgf@circ@res@right@double
- \pgf@circ@res@right@double=2\pgf@circ@res@right
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@step
- %Umrandung:
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{0}} %geรคndert startpunkt neu am ausgangsstrich
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@up}}%vom Ausgang nach oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@down}}%ecke links unten nach rechts unten
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right}{0pt}} %
- \pgfsetrectcap
- \pgfusepath{draw}
-
- }
-}
-
-% Instrumentation amplifier
-\pgfdeclareshape{inst amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- % when tikz calls the anchor it wants the relative position in the lengths
- % \pgf@x \pgf@y
- % \pgfpoint* functions set that variables
- % anchors are visible outside and run on use
- \anchor{center}{\pgfpointorigin}
- % savedanchors are internals and run on node creation (not use)
- % bounding-box top left
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{nw}{
- \northwest
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/inst amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- % reference voltage input anchors.
- \savedanchor\refv{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/inst amp/refv pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
- }
- % we need both because they are normally drawn under the amp, and if you
- % mirror it vertically you need them
- \anchor{refv up}{
- \refv
- }
- \anchor{refv down}{
- \refv
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/inst amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- % let's start drawing the component
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- %
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- % main component, normally in thicker lines
- \pgfscope
- \newdimen\pgf@circ@res@right@double
- \pgf@circ@res@right@double=2\pgf@circ@res@right
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@step
- %first point (near output)
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{0}}
- %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
- % and then to the input "front up", "down", to the output short side "down"
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@down}}
- % ...and close
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}}
- %
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Output terminal
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{0pt}} %
- %
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-% Instrumentation amplifier with terminals for gain resistance between inputs
-\pgfdeclareshape{inst amp ra}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- % bounding-box top left
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{nw}{
- \northwest
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y\pgf@x=0pt\relax
- }
- \anchor{north}{
- \northwest\pgf@x=0pt\relax
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
- }
- % inputs (+-)
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- % R ampli anchors. They are by default at 20% more than R-length distance
- % you can change that with the `ra pos` key (use 0.5 for one-R).
- \savedanchor\raOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\pgf@circ@scaled@Rlen
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{ra up}{
- \raOneFixed
- }
- \anchor{ra down}{
- \raOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\raOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\pgf@circ@scaled@Rlen
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{ra-}{
- \raOne
- }
- \anchor{ra+}{
- \raOne
- \pgf@y=-\pgf@y
- }
- % power supplies
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/inst amp ra/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- % reference voltage input anchors.
- \savedanchor\refv{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=0.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=0.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/inst amp ra/refv pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
- }
- % we need both because they are normally drawn under the amp, and if you
- % mirror it vertically you need them
- \anchor{refv up}{
- \refv
- }
- \anchor{refv down}{
- \refv
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/inst amp ra/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bra up}{
- \raOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bra down}{
- \raOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bra-}{
- \raOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bra+}{
- \raOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- % drawing of the component
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \newdimen\pgf@circ@res@right@double
- \pgf@circ@res@right@double=2\pgf@circ@res@right
-
- % main component, normally in thicker lines
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@step
- %primer punto: la linea de salida (lado componente)
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{0}}
- %from the exit to the top (short side)... (note that the .6 must be copied in \up anchor
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
- % and then to the input "front up", "down", to the output short side "down"
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@down}}
- % ...and close
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- % ra terminal -
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
- % ra terminal +
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {-\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {-\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}}
- %
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Output terminal
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{0pt}} %
- %
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-% Buffer
-% Contributed by Danilo Piazzalunga
-\pgfdeclareshape{buffer}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/buffer/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/buffer/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bin}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
-
- \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
- }
-}
-
-% plain amplifier, no symbols
-\pgfdeclareshape{plain amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/plain amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/plain amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/plain amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/plain amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@up}}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
- }
-}
-
-% plain amplifier, no symbols, one input
-\pgfdeclareshape{plain mono amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt\relax
- }
- \anchor{in}{
- \inOne
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/plain amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/plain amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {0pt}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
- }
-}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% electromechanical device (motor/generator)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{elmech}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{electromechanicals}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/elmech/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/elmech/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgfpointorigin
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -.5\ht\pgfnodeparttextbox
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{%
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{top}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathstart}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathend}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{bottom}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{%
- \@tempdima=\pgf@x\@tempdimb=\pgf@y
- \northwest\pgf@circ@res@other=-\pgf@x
- \pgfpointborderellipse{\pgfqpoint{\@tempdima}{\@tempdimb}}{\pgfqpoint{\pgf@circ@res@other}{\pgf@circ@res@other}}
- }
- \anchor{block north west}{\northwest\pgf@x=0.5\pgf@x}
- \anchor{block south west}{\northwest\pgf@x=0.5\pgf@x\pgf@y=-\pgf@y}
- \anchor{block north east}{\northwest\pgf@x=-0.5\pgf@x}
- \anchor{block south east}{\northwest\pgf@x=-0.5\pgf@x\pgf@y=-\pgf@y}
- \anchor{block up right}{
- \northwest
- % remember that pgf@x is negative
- % center of the block is at 0.5*H+W*cos(30)/2
- \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
- \pgf@x=-0.5\pgf@x
- }
- \anchor{block up left}{
- \northwest
- % remember that pgf@x is negative
- % center of the block is at 0.5*H+W*cos(30)/2
- \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
- \pgf@x=0.5\pgf@x
- }
- \anchor{block down right}{
- \northwest
- % remember that pgf@x is negative
- % center of the block is at 0.5*H+W*cos(30)/2
- \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
- \pgf@y=-\pgf@y
- \pgf@x=-0.5\pgf@x
- }
- \anchor{block down left}{
- \northwest
- % remember that pgf@x is negative
- % center of the block is at 0.5*H+W*cos(30)/2
- \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
- \pgf@y=-\pgf@y
- \pgf@x=0.5\pgf@x
- }
- \behindbackgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@scaled@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope % clip the bar: whole size minus the circle
- \pgfpathrectanglecorners{\pgfpoint{-.5\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfsetfillcolor{\ctikzvalof{color}}
- \pgfusepath{fill, draw}
- \endpgfscope
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{white}
- % ...but override it if the class is defined!
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{draw, fill}
- \fi
- \endpgfscope
- }
-}
-
-%%%%%%%%%%%%%%%%%%%
-%% Magnetron
-%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{magnetron}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}} % class of these components
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{anode}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{cathode1}{
- \northwest
- \pgf@circ@res@step=\pgf@y
- \pgfmathparse{cos(105)}
- \pgf@x=\pgfmathresult\pgf@circ@res@step
- \pgfmathparse{sin(105)}
- \pgf@y=\pgfmathresult\pgf@circ@res@step
- %\pgfpointorigin
- %\pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
- }
- \anchor{cathode2}{
- \northwest
- \pgf@circ@res@step=\pgf@y
- \pgfmathparse{cos(75)}
- \pgf@x=\pgfmathresult\pgf@circ@res@step
- \pgfmathparse{sin(75)}
- \pgf@y=\pgfmathresult\pgf@circ@res@step
- %\pgfpointorigin
- %\pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
- }
- \anchor{text}{
- \pgfpointorigin
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -.5\ht\pgfnodeparttextbox
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{%
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{top}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathstart}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathend}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{bottom}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfmathsetlength{\pgf@circ@res@other}{sin(15)*\pgf@circ@res@up}
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- %create outer circle
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@right}
- \pgf@circ@draworfill
- %create chambers
- \foreach \angle in {45,135,225,315}{
- \pgfpathmoveto{ \pgfpointpolar{\angle}{0.6\pgf@circ@res@right}}
- \pgfpathlineto{ \pgfpointpolar{\angle}{\pgf@circ@res@right}}
- }
- \pgfsetroundcap
- \pgfusepath{draw}
- \pgfscope
- %draw connection from outside
- %anode
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- %cathodes
- \pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- %create cathode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.15\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- %create anode
- \pgfpathmoveto{\pgfpoint{0.3\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Electronic tubes, submitted by J. op den Brouw
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Draw tube outline
-\def\pgf@circ@tubes@drawtube{%
- \ifdim\ctikzvalof{tubes/width}pt>\ctikzvalof{tubes/height}pt\relax
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfutil@tempdima=\pgf@circ@res@right
- \advance\pgfutil@tempdima by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgfutil@tempdima}{\pgf@circ@res@up}}
- \pgfpatharc{90}{-90}{\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{-\pgfutil@tempdima}{-\pgf@circ@res@up}}
- \pgfpatharc{270}{90}{\pgf@circ@res@up}
- \else
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{0pt}}
- \pgfutil@tempdima=\pgf@circ@res@up
- \advance\pgfutil@tempdima by -\pgf@circ@res@right
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
- \pgfpatharc{180}{0}{\pgf@circ@res@right}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfutil@tempdima}}
- \pgfpatharc{180}{0}{-\pgf@circ@res@right}
- \fi
- \pgfpathclose
-}
-
-%% The diode (tube), triode, tetrode and pentode only differ in the
-%% number of grids. So we construct a generic declare function in
-%% which we can put code for the grid anchors and grid drawing code
-%% \pgfcircdeclaretube{tube name}{grid anchors}{grid drawing code}
-\long\def\pgfcircdeclaretube#1#2#3{%
- \pgfdeclareshape{#1}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
- % x and y should be half the Rlen
- \pgf@y=\pgf@circ@res@up
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgf@circ@res@right
- \pgf@x=.5\pgf@x
- }
- \anchor{north} {%
- \northwest
- \pgf@x=0pt
- }
- \anchor{east}{%
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0pt
- }
- \anchor{south}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{west}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{north west}{%
- \northwest
- }
- \anchor{north east}{%
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{anode} {%
- \northwest
- \pgf@x=0pt
- }
- \anchor{cathode}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
- }
- \anchor{cathode 1}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
- }
- \anchor{cathode 2}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=-\ctikzvalof{tubes/cathode width}\pgf@x
- }
- \anchor{filament 1}{%
- \northwest
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
- \pgf@x=\pgfmathresult\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{filament 2}{%
- \northwest
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
- \pgf@x=-\pgfmathresult\pgf@x
- \pgf@y=-\pgf@y
- }
-
- % Extra anchors
- #2
-
- \backgroundpath{
- \pgfscope
- % Line width for tripoles
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- % Setup to draw tube
- \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up=\ctikzvalof{tubes/tube radius}\pgf@circ@res@up
- \pgf@circ@res@right=\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
-
- % Tube outline
- \pgf@circ@tubes@drawtube
-
- % Setup to draw grid, filament, anode and cathode
- \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up=0.5\pgf@circ@res@up
- \pgf@circ@res@right=0.5\pgf@circ@res@right
-
- % Tube fill color (if any)
- \pgf@circ@draworfill
-
- % Grid drawing
- #3
-
- % Filament (is not drawn by default)
- \ifpgf@circuit@tubes@filament
- \pgf@circ@res@temp=-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up
- \advance\pgf@circ@res@temp by -\ctikzvalof{tubes/filament distance}\pgf@circ@res@up
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
- \pgf@xa=\pgfmathresult\pgf@circ@res@right
- \pgfmathparse{\ctikzvalof{tubes/tube radius}+\ctikzvalof{tubes/tube radius}*cos(\ctikzvalof{tubes/filament angle}}
- \pgf@ya=\pgfmathresult\pgf@circ@res@up
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@ya}}
- \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@ya}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@circ@res@up}}
- \pgf@circuit@tubes@filamentfalse
- \fi
-
- % Anode (or plate)
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}} % north
- \pgfpathlineto{\pgfpoint{0pt}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
-
- % Cathode
- \ifpgf@circuit@tubes@nocathode
- \pgf@circuit@tubes@nocathodefalse
- \else
- \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
- \ifpgf@circuit@tubes@fullcathode
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
- \pgf@circuit@tubes@fullcathodefalse
- \else
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-\ctikzvalof{tubes/cathode right extend}\pgf@circ@res@up}}
- \fi
- \fi
-
- % Draw the background
- \pgfusepath{draw}
- \endpgfscope
- }
- }
-}
-
-\pgfcircdeclaretube{diodetube}{}{} % shape diode already exists
-
-\pgfcircdeclaretube{triode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
- \anchor{control} {%
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
-}
-{
- % Grid protrusion
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
-}
-
-\pgfcircdeclaretube{tetrode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \pgf@y=0.5\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{control} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \pgf@y=0.5\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{screen} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
- \pgf@y=0.5\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
-}
-{
- % Grid x/y points
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
- \pgfutil@tempdimb=-\pgfutil@tempdima
- \pgfutil@tempdima=0.5\pgfutil@tempdima
- \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \pgfutil@tempdimb=0.5\pgfutil@tempdimb
- \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- % Grid protrusion
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
-}
-
-\pgfcircdeclaretube{pentode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{control} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{screen} {%
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
- \anchor{suppressor} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
-}
-{
- % Grid x/y points
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
- \pgfutil@tempdimb=-\pgfutil@tempdima
- \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- % Grid protrusion
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
-}
-
-\pgfcircdeclaretube{pentode suppressor to cathode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{control} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{screen} {%
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
-}
-{
- % Grid x/y points
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
- \pgfutil@tempdimb=-\pgfutil@tempdima
- \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- % Grid protrusion
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \ifnum\pgf@circ@count@a>1\relax
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
- \fi
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
- % Grid: connection from suppressor to cathode
- \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima-2*\ctikzvalof{tubes/grid separation}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
-
-}
-
-%%%---------- close: tex/pgfcirctripoles
-%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
-%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Quadripoles
-
-\long\def\pgfcircdeclarequadpole#1#2#3{
- \pgfdeclareshape{#1}
- {
- \savedmacro{\ctikzclass}{\edef\ctikzclass{inductors}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedmacro{\stretto}{\def\stretto{\ctikzvalof{quadpoles/#1/inner}}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{quadpoles/#1/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=.5\pgf@circ@scaled@Rlen
- \pgf@x=-\ctikzvalof{quadpoles/#1/width}\pgf@x
- }
- %% we define the upper right (positive coord) dot (which is B1)
- \savedanchor{\innerdot}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@xa=.5\pgf@circ@scaled@Rlen
- \pgf@xa=-\ctikzvalof{quadpoles/#1/width}\pgf@xa
- % by default use the cute inductor size
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@scaled@Rlen/2}
- % check if it's american
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}
- \edef\pgf@temp{american}
- \ifx\pgf@circ@temp\pgf@temp
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/americaninductor/height}*\pgf@circ@scaled@Rlen/2}
- \fi
- % check if it's european
- \edef\pgf@temp{european}
- \ifx\pgf@circ@temp\pgf@temp
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/fullgeneric/height}*\pgf@circ@scaled@Rlen/2}
- \fi
- \pgfmathsetlength\pgf@y{0.5*\pgf@circ@scaled@Rlen}
- }
- \savedanchor{\outerdot}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@xa=.5\pgf@circ@scaled@Rlen
- \pgf@xa=-\ctikzvalof{quadpoles/#1/width}\pgf@xa
- % by default use the cute inductor size
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@scaled@Rlen/2}
- % check if it's american
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}
- \edef\pgf@temp{american}
- \ifx\pgf@circ@temp\pgf@temp
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/americaninductor/height}*\pgf@circ@scaled@Rlen/2}
- \fi
- % check if it's european
- \edef\pgf@temp{european}
- \ifx\pgf@circ@temp\pgf@temp
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/fullgeneric/height}*\pgf@circ@scaled@Rlen/2}
- \fi
- \pgfmathsetlength\pgf@y{0.5*\pgf@circ@scaled@Rlen}
- }
- \anchor{A2}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{B1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{A1}{
- \northwest
- }
- \anchor{B2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- %% dot's anchors
- \anchor{inner dot A1}{\innerdot\pgf@x=-\pgf@x}
- \anchor{outer dot A1}{\outerdot\pgf@x=-\pgf@x}
- \anchor{inner dot A2}{\innerdot\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{outer dot A2}{\outerdot\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{inner dot B1}{\innerdot}
- \anchor{outer dot B1}{\outerdot}
- \anchor{inner dot B2}{\innerdot\pgf@y=-\pgf@y}
- \anchor{outer dot B2}{\outerdot\pgf@y=-\pgf@y}
- % geographical
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{base}{
- \northwest
- \pgf@x=0pt
- }
- #3
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- #2
- }
- }
-}
-
-
-\def\pgf@circ@drawtransformerbasicanchor{
- \ctikzvalof{quadpoles/trans/height}
- \anchor{AA2}{
- \northwest
- \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
- }
- \anchor{AA1}{
- \northwest
- \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
- }
-}
-
-%% Null styles that can be used to change individually the L1 and L2
-%% inductors of the transformer.
-
-\ctikzset{transformer L1/.style={}}
-\ctikzset{transformer L2/.style={}}
-
-\def\pgf@circ@drawtransformerbasicbody{
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@down}%
- }
-
- \pgfkeys{\circuitikzbasekey/.cd, transformer L1}
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
-
- \endpgfscope
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@up}%
- }
-
- \pgfkeys{\circuitikzbasekey/.cd, transformer L2}
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{\thisshape-L1}{b}}
-
- \pgfpathmoveto{\pgfpointanchor{\thisshape-L1}{a}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{\thisshape-L2}{a}}
-
- \pgfpathmoveto{\pgfpointanchor{\thisshape-L2}{b}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
-}
-
-
-\pgfcircdeclarequadpole{transformer}{
- \pgf@circ@drawtransformerbasicbody
-}{\pgf@circ@drawtransformerbasicanchor}
-
-\pgfcircdeclarequadpole{transformer core}{
-
- \pgf@circ@drawtransformerbasicbody
-
- % use the chocke line thickness
- \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
-
- % Find the distance from center for the lines representing the core
- % the 2.5 is for backward compatibility --- the distance was calculated as a fraction
- % of the whole component, now as a fraction of the distance between coils, to be
- % compatible with the quadpoles "inner" style.
- \pgfmathsetlength{\pgf@circ@res@other}{2.5*\stretto*\ctikzvalof{quadpoles/transformer core/core width}*\pgf@circ@res@right}
-
- \pgfmoveto{\pgfpoint%
- {\pgf@circ@res@other}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint%
- {\pgf@circ@res@other}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- %% this should be just -\pgf@circ@res@other, but in case someone define an asymmetric trafo someday...
- \pgfmathsetlength{\pgf@circ@res@other}{2.5*\stretto*\ctikzvalof{quadpoles/transformer core/core width}*\pgf@circ@res@left}
- \pgfmoveto{\pgfpoint%
- {\pgf@circ@res@other}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint%
- {\pgf@circ@res@other}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgfusepath{draw}
-}{\pgf@circ@drawtransformerbasicanchor}
-
-
-\pgfcircdeclarequadpole{gyrator}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{quadpoles}{\pgflinewidth}
- \pgfmathsetlength{\pgf@circ@res@other}{min(.7*\stretto*\pgf@circ@res@up, .8*\pgf@circ@res@right)} % radius
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{-\pgf@circ@res@other}}
- \pgfpatharc{-90}{90}{\pgf@circ@res@other}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpatharc{90}{270}{\pgf@circ@res@other}
- \pgfpathclose
- \pgf@circ@draworfill
-}{}
-
-%%%%%%%%%%%%%%%%%%%%
-%% Block elements
-%%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{mixer}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@boxed
- \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{adder}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@boxed
- \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{oscillator}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@boxed
- \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \else
- \pgf@y=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{north}{
- \northwest
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@x=.5\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y}
- \anchor{north east}{ \northwest \pgf@x=0pt\relax}
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{text}{
- \pgf@x=-2\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen{}
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
-
- % draw outer box
- \ifpgf@circuit@boxed{}
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{circulator}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@boxed
- \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{3}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed{}
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % inner arrow
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
- \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
- }
-
-
-% Wilkinson divider
-\pgfdeclareshape{wilkinson}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/wilkinson/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x= \pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=-\ctikzvalof{tripoles/wilkinson/width}\pgf@x
- }
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{out2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgf@circ@twoportbox
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- % draw inner resisitor - european or american style is recognised
- {
- \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgftransformrotate{90}
-
- % calculate size of resistor
- \ifpgf@circuit@europeanresistor
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{genericshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
- \else
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{resistorshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
- \fi
- }
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{wilk@int@R}{right}}
-
- \pgfpathmoveto{\pgfpointanchor{wilk@int@R}{left}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-
-%% couplers generics
-\long\def\pgfcircdeclarefourport#1#2{
-
- \pgfdeclareshape{#1}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{quadpoles/#1/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=.5\pgf@circ@scaled@Rlen
- \pgf@x=-\ctikzvalof{quadpoles/#1/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{port1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{port4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
- \anchor{1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
-
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
-
- % draw inner stuff
- #2
-
- % draw inner text
- \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
- }
- }
-}
-
-% four-port
-\pgfcircdeclarefourport{fourport}{}
-
-% straight coupler
-\pgfcircdeclarefourport{coupler}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
-}
-
-% "bended" coupler
-\pgfcircdeclarefourport{coupler2}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%%%---------- close: tex/pgfcircquadpoles
-%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
-%%%---------- open: tex/pgfcircmultipoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Multipoles by Romano Giannetti
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%
-%% Chips
-%%%%%%%%%
-
-% let's use the same shifts everywhere, no magic numbers
-\def\pgf@circ@dip@pin@shift{0.5}
-\def\pgf@circ@qfp@pin@shift{0.25}
-
-% derived from https://tex.stackexchange.com/a/146753/38080
-% original author Mark Wibrow
-% Thanks also to John Kormylo https://tex.stackexchange.com/a/372996/38080
-% a lot of thanks to @marmot for the un-rotation hint
-% https://tex.stackexchange.com/a/473571/38080
-
-% DIP (dual in line package) chips
-
-\pgfdeclareshape{dipchip}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{chips}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro\numpins{%
- \pgf@circ@count@a=\ctikzvalof{multipoles/dipchip/num pins}%
- \def\numpins{\the\pgf@circ@count@a}
- }
- \savedanchor\centerpoint{%
- \pgf@x=-.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \savedanchor\origin{\pgfpoint{0pt}{0pt}}
- \anchor{center}{\origin}
- \anchor{text}{\centerpoint}% to adjust text
- \saveddimen\height{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{((\numpins)
- *\ctikzvalof{multipoles/dipchip/pin spacing})*\pgf@circ@scaled@Rlen/2}%
- }%
- \saveddimen{\chipspacing}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/pin spacing}}}
- \saveddimen{\width}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/width}}}
- \saveddimen{\extshift}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
- % standard anchors
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{0.5*((\numpins)
- *\ctikzvalof{multipoles/dipchip/pin spacing})*\pgf@circ@scaled@Rlen/2}%
- \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/width}}
- }
- \anchor{dot}{\northwest
- \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
- \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- % start drawing
- \backgroundpath{%
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step = \ctikzvalof{multipoles/dipchip/pin spacing}\pgf@circ@scaled@Rlen
- \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
- \pgfscope% (for the line width)
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
- \pgf@circ@draworfill
- %% upside mark
- \ifpgf@circuit@chip@topmark
- \pgfpathmoveto{\pgfpoint{0.2*\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpatharc{0}{180}{0.2*\pgf@circ@res@left}
- \fi
- \pgfusepath{stroke}%
- \pgfsetcolor{\ctikzvalof{color}}
- % Adding the pin number
- \ifpgf@circuit@chip@shownumbers
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
- \ifpgf@circuit@chip@straightnumbers
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
- \else
- \pgfmathsetmacro{\rot}{0}
- \pgfmathsetmacro{\quadrant}{0}
- \fi
- \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
- \def\mytext{\ctikzvalof{multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \ifcase\quadrant % rotation 0
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation -90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or %rotation 180
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation +90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \fi
- \endpgfscope
- \ifdim\pgf@circ@res@other>0pt
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \edef\padfrac{\ctikzvalof{multipoles/external pad fraction}}
- \ifnum\padfrac>0
- \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
- % left side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % right side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \else
- % left side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % right side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
- \pgfusepath{stroke}
- \endpgfscope
- \fi
- }%
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@dipchip{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\numpins\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@dipchip@pin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@dipchip@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
- }
-
-% QFP (quad flat package) chips
-
-\pgfdeclareshape{qfpchip}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{chips}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro\numpins{%
- \pgf@circ@count@a=\ctikzvalof{multipoles/qfpchip/num pins}%
- \def\numpins{\the\pgf@circ@count@a}
- }
- \savedanchor\centerpoint{%
- \pgf@x=-.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \savedanchor\origin{\pgfpoint{0pt}{0pt}}
- \anchor{center}{\origin}
- \anchor{text}{\centerpoint}% to adjust text
- \saveddimen\height{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{((\numpins+2)
- *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
- }%
- \saveddimen\width{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{((\numpins+2)
- *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
- }%
- \saveddimen{\chipspacing}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/qfpchip/pin spacing}}}
- \saveddimen{\extshift}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
- % standard anchors
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{0.5*((\numpins+2)
- *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
- \pgf@x=-\pgf@y
- }
- \anchor{dot}{\northwest
- \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
- \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- % start drawing
- \backgroundpath{%
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step = \ctikzvalof{multipoles/qfpchip/pin spacing}\pgf@circ@scaled@Rlen
- \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
- \pgfscope% (for the line width)
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- %% upside mark
- \ifpgf@circuit@chip@topmark
- \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2-\pgf@circ@res@step/2}}
- \pgfpathlineto{\pgfpoint{-\width/2+\pgf@circ@res@step/2}{\height/2}}
- \else
- \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2}}
- \fi
- %% rest of the shape
- \pgfpathlineto{\pgfpoint{\width/2}{\height/2}}
- \pgfpathlineto{\pgfpoint{\width/2}{-\height/2}}
- \pgfpathlineto{\pgfpoint{-\width/2}{-\height/2}}
- \pgfpathclose
- \pgf@circ@draworfill
- % Adding the pin number
- \pgfsetcolor{\ctikzvalof{color}}
- \ifpgf@circuit@chip@shownumbers
- \pgf@circ@count@a=\numpins%
- \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
- % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
- \ifpgf@circuit@chip@straightnumbers
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
- \else
- \pgfmathsetmacro{\rot}{0}
- \pgfmathsetmacro{\quadrant}{0}
- \fi
- \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
- \def\mytext{\ctikzvalof{multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \ifcase\quadrant % rotation 0
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \or % rotation -90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \or %rotation 180
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \or % rotation +90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \fi
- \endpgfscope
- \ifdim\pgf@circ@res@other>0pt
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins%
- \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \edef\padfrac{\ctikzvalof{multipoles/external pad fraction}}
- \ifnum\padfrac>0
- \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
- % left side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % bottom side pads
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
- % right side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % top side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
- \else
- % left side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % bottom side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
- % right side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % top side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \pgfusepath{stroke}
- \endpgfscope
- \fi
- }%
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@qfpchip{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\numpins%
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \expandafter\xdef\csname pgf@anchor@qfpchip@pin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@qfpchip@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop%
- }%
- }
-
-%% anchors for DIP
-\def\pgf@circ@dippinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \c@pgf@countc=\numpins\relax
- \divide\c@pgf@countc by 2
- \ifnum #1 > \the\c@pgf@countc
- % right side
- \pgfpoint{\width/2+#2*\extshift}{-\height/2+(\pgf@circ@dip@pin@shift-\c@pgf@countc+#1-1)*\chipspacing}
- \else
- \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@dip@pin@shift-#1)*\chipspacing}
-\fi
-}
-
-%% anchors for QFP
-\def\pgf@circ@qfppinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \c@pgf@countc=\numpins\relax
- \divide\c@pgf@countc by 4
- \ifnum #1 > \the\c@pgf@countc
- \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 2
- \ifnum #1 > \the\c@pgf@countb
- \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 3
- \ifnum #1 > \the\c@pgf@countb
- % 3*npins/4 < pin, top side
- \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift+\c@pgf@countb-#1)*\chipspacing}{\height/2+#2*\extshift}%
- \else
- % 2*npins/4 < pin <= 3*npins/4, right side
- \pgfpoint{\width/2+#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}%
- \fi
- \else
- % npins/4 < pin <= 2*npins/4, bottom side
- \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}{-\height/2-#2*\extshift}%
- \fi
- \else
- % <= npins/4, left side
- \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-#1)*\chipspacing}%
- \fi
-}
-
-%%%%%%%%%%%%%%%%%
-%% Rotary Switch
-%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{rotaryswitch}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northeast{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- % the magic number is 0.25/cos(35)
- % try to recalculate it for the actual switch
- \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=.3052\pgf@circ@res@temp
- \edef\a{\ctikzvalof{multipoles/rotary/angle}}
- \edef\r{\ctikzvalof{nodes width}}
- \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@x}{\r*\pgf@circ@scaled@Rlen + \pgf@circ@res@temp}
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- % the magic number is 0.25/cos(35)
- % try to recalculate it for the actual switch
- \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=.3052\pgf@circ@res@temp
- \edef\a{\ctikzvalof{multipoles/rotary/angle}}
- \edef\r{\ctikzvalof{nodes width}}
- \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@x}{-\r*\pgf@circ@scaled@Rlen - (\a<90 ? 1 : 1-2*cos(\a))*\pgf@circ@res@temp}
- }
- \savedanchor\central{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- % the magic number is 0.25/cos(35)
- % try to recalculate it for the actual switch
- \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=.3052\pgf@circ@res@temp
- \edef\a{\ctikzvalof{multipoles/rotary/angle}}
- \edef\r{\ctikzvalof{nodes width}}
- \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@x}{(\a<90 ? 0 : cos(\a))*\pgf@circ@res@temp}
- }
- % external square limits
- \savedanchor\extnorthwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- \pgf@x=.3052\pgf@x % the magic number is 0.25/cos(35)
- \pgf@x=2.5\pgf@x % external square size
- \pgf@y=-\pgf@x %square thing when angle=180?
- }
- \saveddimen{\width}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{0.3052*\pgf@circ@scaled@Rlen*\ctikzvalof{tripoles/spdt/width}}}
- % radius of the connector
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % shape type
- \savedmacro{\cshape}{\def\cshape{\ctikzvalof{multipoles/rotary/shape}}}
- \savedmacro{\channels}{\def\channels{\ctikzvalof{multipoles/rotary/channels}}}
- \savedmacro{\angle}{\def\angle{\ctikzvalof{multipoles/rotary/angle}}}
- \savedmacro{\wiper}{\def\wiper{\ctikzvalof{multipoles/rotary/wiper}}}
- \savedmacro{\stepa}{\pgfmathsetmacro{\stepa}{2*\ctikzvalof{multipoles/rotary/angle}/(\ctikzvalof{multipoles/rotary/channels}-1)}}
- % mid of the lever, to stack switches
- %\anchor{mid}{\midlever}
- \anchor{mid}{\northwest
- \pgf@circ@res@temp=-\pgf@x
- \pgfmathsetlength{\pgf@x}{\pgf@circ@res@temp*(-1+cos(\wiper))}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp*sin(\wiper)}
- }
- % center anchors
- \anchor{cin}{ \northwest \pgf@y=0pt\advance\pgf@x by \radius}
- % horizontal angles
- \anchor{in}{ \northwest \pgf@y=0pt}
- \anchor{ain}{ \northwest \pgf@y=0pt}
-
- \anchor{center}{ \central \pgf@y=0pt }
- \anchor{east}{ \northeast \pgf@y=0pt }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \central \pgf@y=-\pgf@y }
- \anchor{north}{ \central }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northeast }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northeast \pgf@y=-\pgf@y }
-
- \anchor{ext center}{ \pgf@y=0pt \pgf@x=0pt \advance\pgf@x by -\width}
- \anchor{ext east}{ \extnorthwest \pgf@y=0pt \pgf@x=-\pgf@x \advance\pgf@x by -\width}
- \anchor{ext west}{ \extnorthwest \pgf@y=0pt \advance\pgf@x by -\width}
- \anchor{ext south}{ \extnorthwest \pgf@x=0pt \pgf@y=-\pgf@y \advance\pgf@x by -\width}
- \anchor{ext north}{ \extnorthwest \pgf@x=0pt \advance\pgf@x by -\width}
- \anchor{ext south west}{ \extnorthwest \pgf@y=-\pgf@y \advance\pgf@x by -\width}
- \anchor{ext north east}{ \extnorthwest \pgf@x=-\pgf@x \advance\pgf@x by -\width}
- \anchor{ext north west}{ \extnorthwest \advance\pgf@x by -\width}
- \anchor{ext south east}{ \extnorthwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y \advance\pgf@x by -\width}
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@res@right = \width
- \pgf@circ@res@left = -\width
-
- \pgfscope %wiper
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \pgf@circ@res@temp=\radius\relax
- \pgf@circ@res@temp=\ctikzvalof{multipoles/rotary/thickness}\pgf@circ@res@temp
- \pgfsetlinewidth{2\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\wiper}{2\pgf@circ@res@right}}}
- \pgfsetroundcap\pgfusepath{draw}
- \endpgfscope
-
- \ifpgf@circ@rotaryarrow
- \pgfscope % arrow
- \ifpgf@circ@rotaryarrow@ccw\pgfsetarrowsstart{latexslim}\fi
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % center of cin node
- \pgftransformrotate{\wiper}
- \pgfpathmoveto{\pgfpointpolar{50}{1.0\pgf@circ@res@right}}
- \pgfpatharc{50}{-50}{1.0\pgf@circ@res@right}
- \ifpgf@circ@rotaryarrow@cw\pgfsetarrowsend{latexslim}\fi
- \pgfusepath{draw}
- \endpgfscope
- \fi
-
- % \typeout{CHANNELS\space\channels\space ANGLE\space\angle STEPA\space\stepa}
- \pgf@circ@count@a=\channels\relax
- \pgfmathsetmacro{\currenta}{-\angle}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % \typeout{LOOPIN\space\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
- \pgfscope
- \pgftransformshift{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\currenta}{2\pgf@circ@res@right}}}
- \pgfnode{\cshape}{center}{}{\thisshape-out \the\pgf@circ@count@a}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfmathsetmacro{\currenta}{\currenta+\stepa}
- % \typeout{LOOPOUT\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
-
- \pgfscope % input
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
- \endpgfscope
- }
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@rotaryswitch{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\channels\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@out\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{1}{0}%
- }
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@cout\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{0}%
- }
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@aout\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@sqout\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotarysqanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
-}
-
-\def\pgf@circ@rotaryanchor#1#2#3{% #1: numero del pin; #2: 1 - x pos, 0 - center; #3 0: inner, 1 outer
- \pgf@circ@res@temp=\width
- \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
- \pgfmathsetlength{\pgf@x}{2*(\pgf@circ@res@temp+#3*\radius/2)*cos(\myangle))+#2*\radius}
- \pgfmathsetlength{\pgf@y}{2*(\pgf@circ@res@temp+#3*\radius/2)*sin(\myangle)}
- \advance\pgf@x by -\pgf@circ@res@temp
-}
-
-\def\pgf@circ@rotarysqanchor#1{% external square anchors
- \pgf@circ@res@temp=\width
- \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
- \pgfpointborderrectangle{\pgfpointpolar{\myangle}{1pt}}{\pgfpoint{2.5\pgf@circ@res@temp}{2.5\pgf@circ@res@temp}}
- \advance\pgf@x by -\pgf@circ@res@temp
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Seven segments displays
-%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{bare7seg}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{displays}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\dotstatus}{\edef\dotstatus{\pgf@circ@sevenseg@dotstate}}
- \saveddimen{\dotspace}{% the dot is on the right, and occupy the same as the thickness
- \ifpgf@circ@sevenseg@dot
- \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/thickness}}
- \else
- \pgf@x=0pt
- \fi
- }
- % The object extension is more or less (-width/2,-width) to (width/2,width)
- % and adjusted for line thickness (both sides) and eventually the dot
- \saveddimen{\width}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}}
- \saveddimen{\gap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/segment sep}}}
- \saveddimen{\boxgap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/box sep}}}
- \savedanchor{\southwest}{% both negative
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
- -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
- \pgfmathsetlength{\pgf@y}{-\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
- -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
- }
- \savedanchor{\northeast}{% both positive
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circ@sevenseg@dot
- \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{seven seg/thickness}}
- \else
- \pgf@circ@res@other=0pt
- \fi
- \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
- +0.5*\ctikzvalof{seven seg/thickness}+\pgf@circ@res@other+\ctikzvalof{seven seg/box sep}}
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
- +0.5*\ctikzvalof{seven seg/thickness}+\ctikzvalof{seven seg/box sep}}
- }
- \savedanchor{\topright}{% anchor without the box sep and the thickness
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{north west}{\southwest\pgf@y=-\pgf@y}
- \anchor{north east}{\northeast}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\southwest}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0pt}
- \anchor{south}{\southwest\pgf@x=0pt}
- \anchor{west}{\southwest\pgf@y=0pt}
- \anchor{a}{\topright\pgf@x=0pt}
- \anchor{b}{\topright\pgf@y=0.5\pgf@y}
- \anchor{c}{\topright\pgf@y=-0.5\pgf@y}
- \anchor{d}{\topright\pgf@y=-\pgf@y\pgf@x=0pt}
- \anchor{e}{\topright\pgf@x=-\pgf@x\pgf@y=-0.5\pgf@y}
- \anchor{f}{\topright\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{g}{\pgfpointorigin}
- \anchor{dot}{\topright\pgf@y=-\pgf@y\advance\pgf@x by \dotspace}
- \behindbackgroundpath{%
- \southwest % I do not want the dot here, it will stick out
- \pgf@circ@res@up = -\pgf@y
- \pgf@circ@res@down = \pgf@y
- \pgf@circ@res@right = \pgf@x
- \pgf@circ@res@left = -\pgf@x
- \pgfscope
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfpathrectanglecorners%
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@left+\dotspace}{\pgf@circ@res@up}}
- \ifpgf@circ@sevenseg@box
- \pgf@circ@draworfill
- \else
- \pgf@circ@maybefill
- \fi
- \endpgfscope
- \edef\bits{\ctikzvalof{seven seg/bits}}
- \pgfscope
- \pfg@circ@sseg@drawbits{\bits}
- \endpgfscope
- \pgfscope
- \ifpgf@circ@sevenseg@dot
- \pgf@circ@sseg@drawdots
- \fi
- \endpgfscope
- }
-}
-
-\def\pgf@circ@sseg@splitbits#1#2#3#4#5#6#7\relax{%split the seven bits
- \edef\@@a{#1}\edef\@@b{#2}\edef\@@c{#3}\edef\@@d{#4}\edef\@@e{#5}\edef\@@f{#6}\edef\@@g{#7}%
-}
-\def\pgf@circ@sseg@drawone#1#2#3#4#5{% #1 on off the x1, y1, x2 , y2
- \ifnum #1 > 0\relax
- \pgfsetcolor{\ctikzvalof{seven seg/color on}}
- \else
- \pgfsetcolor{\ctikzvalof{seven seg/color off}}
- \fi
- \pgfpathmoveto{\pgfpoint{#2}{#3}}
- \pgfpathlineto{\pgfpoint{#4}{#5}}
- \pgfusepath{draw}
-}
-\def\pfg@circ@sseg@drawbits#1{% #1 must be 7 bits
- \expandafter\pgf@circ@sseg@splitbits#1\relax% a bit of magic...
- \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
- \pgfsetlinewidth{\ctikzvalof{seven seg/thickness}}
- % \pgfsetroundcap
- \pgfsetarrowsstart{Triangle Cap[]}
- \pgfsetarrowsend{Triangle Cap[]}
- % segments
- \pgf@circ@sseg@drawone{\@@a}{-\width/2+\gap}{\width}{\width/2-\gap}{\width}
- \pgf@circ@sseg@drawone{\@@b}{\width/2}{\width-\gap}{\width/2}{0pt+\gap}
- \pgf@circ@sseg@drawone{\@@c}{\width/2}{0pt-\gap}{\width/2}{-\width+\gap}
- \pgf@circ@sseg@drawone{\@@d}{\width/2-\gap}{-\width}{-\width/2+\gap}{-\width}
- \pgf@circ@sseg@drawone{\@@e}{-\width/2}{-\width+\gap}{-\width/2}{0pt-\gap}
- \pgf@circ@sseg@drawone{\@@f}{-\width/2}{0pt+\gap}{-\width/2}{\width-\gap}
- \pgf@circ@sseg@drawone{\@@g}{-\width/2+\gap}{0pt}{\width/2-\gap}{0pt}
-}
-\def\pgf@circ@sseg@drawdots{% dots
- \edef\what{empty}
- \ifx\what\pgf@circ@sevenseg@dotstate
- % do nothing
- \else
- \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
- \edef\what{off}
- \ifx\what\pgf@circ@sevenseg@dotstate
- % dot off
- \pgfsetfillcolor{\ctikzvalof{seven seg/color off}}
- \pgfsetcolor{\ctikzvalof{seven seg/color off}}
- \else
- % dot on
- \pgfsetfillcolor{\ctikzvalof{seven seg/color on}}
- \pgfsetcolor{\ctikzvalof{seven seg/color on}}
- \fi
- \pgfpathcircle{\pgfpoint{\width/2+2*\pgf@circ@res@other}{-\width}}{\pgf@circ@res@other}
- \pgfusepath{draw,fill}
- \fi
-}
-
-
-%%%%%%
-%%%%%% Flip-flops
-%%%%%%
-
-% Flip flops are a specialized kind of dipchip.
-% they have a class by themselves
-
-%% flip flop definitions --- by default empty
-%% pin texts
-\ctikzset{multipoles/flipflop/t1/.initial={}}
-\ctikzset{multipoles/flipflop/t2/.initial={}}
-\ctikzset{multipoles/flipflop/t3/.initial={}}
-\ctikzset{multipoles/flipflop/t4/.initial={}}
-\ctikzset{multipoles/flipflop/t5/.initial={}}
-\ctikzset{multipoles/flipflop/t6/.initial={}}
-\ctikzset{multipoles/flipflop/tu/.initial={}}
-\ctikzset{multipoles/flipflop/td/.initial={}}
-% pin clock wedge flags
-\ctikzset{multipoles/flipflop/c1/.initial={0}}
-\ctikzset{multipoles/flipflop/c2/.initial={0}}
-\ctikzset{multipoles/flipflop/c3/.initial={0}}
-\ctikzset{multipoles/flipflop/c4/.initial={0}}
-\ctikzset{multipoles/flipflop/c5/.initial={0}}
-\ctikzset{multipoles/flipflop/c6/.initial={0}}
-\ctikzset{multipoles/flipflop/cu/.initial={0}}
-\ctikzset{multipoles/flipflop/cd/.initial={0}}
-% pin negation circle flags
-\ctikzset{multipoles/flipflop/n1/.initial={0}}
-\ctikzset{multipoles/flipflop/n2/.initial={0}}
-\ctikzset{multipoles/flipflop/n3/.initial={0}}
-\ctikzset{multipoles/flipflop/n4/.initial={0}}
-\ctikzset{multipoles/flipflop/n5/.initial={0}}
-\ctikzset{multipoles/flipflop/n6/.initial={0}}
-\ctikzset{multipoles/flipflop/nu/.initial={0}}
-\ctikzset{multipoles/flipflop/nd/.initial={0}}
-
-
-% Thanks to @marmot
-\tikzset{flipflop def/.code=\pgfqkeys{\circuitikzbasekey/multipoles/flipflop}{#1}}
-
-% default set of flip flops
-\tikzset{
- % async
- latch/.style={flipflop, flipflop def={t1=D, t6=Q, t3=CLK, t4=\ctikztextnot{Q}}},
- flipflop SR/.style={flipflop, flipflop def={t1=S, t3=R, t6=Q, t4=\ctikztextnot{Q}}},
- % sync
- flipflop D/.style={flipflop, flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
- flipflop T/.style={flipflop, flipflop def={t1=T, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
- flipflop JK/.style={flipflop, flipflop def={t1=J, t3=K, c2=1, t6=Q, t4=\ctikztextnot{Q}}},
- % additional features
- add async SR/.style={flipflop def={tu={\ctikztextnot{SET}}, td={\ctikztextnot{RST}}}},
- dot on notQ/.style={flipflop def={t4={Q}, n4=1}},
-}
-
-%
-% commodity macro to draw the clock wedges. They leave the size of the
-% wedge in \pgf@circ@res@temp so that a possible label can be displaced.
-%
-\def\pgf@circ@do@wedge@left{
- \pgf@circ@res@temp=0pt\relax
- \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step+\wedge}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\wedge}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step-\wedge}}
- \pgfusepath{stroke}
- \pgf@circ@res@temp=\wedge
- \fi
-}
-\def\pgf@circ@do@wedge@right{
- \pgf@circ@res@temp=0pt\relax
- \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step+\wedge}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\wedge}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step-\wedge}}
- \pgfusepath{stroke}
- \pgf@circ@res@temp=-\wedge
- \fi
-}
-\def\pgf@circ@do@wedge@up{
- \pgf@circ@res@temp=0pt\relax
- \ifnum\ctikzvalof{multipoles/flipflop/cu}>0
- \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up-\wedge}}
- \pgfpathlineto{\pgfpoint{\wedge}{\pgf@circ@res@up}}
- \pgfusepath{stroke}
- \pgf@circ@res@temp=-\wedge
- \fi
-}
-\def\pgf@circ@do@wedge@down{
- \pgf@circ@res@temp=0pt\relax
- \ifnum\ctikzvalof{multipoles/flipflop/cd}>0
- \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down+\wedge}}
- \pgfpathlineto{\pgfpoint{\wedge}{\pgf@circ@res@down}}
- \pgfusepath{stroke}
- \pgf@circ@res@temp=\wedge
- \fi
-}
-% generic flip-flop shape
-\pgfdeclareshape{flipflop}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{flipflops}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- \savedmacro\numpins{\def\numpins{6}}
- \savedanchor\centerpoint{%
- \pgf@x=-.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \savedanchor\origin{\pgfpoint{0pt}{0pt}}
- \anchor{center}{\origin}
- \anchor{text}{\centerpoint}% to adjust text
- \saveddimen\height{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{((\numpins)
- *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf@circ@scaled@Rlen/2}%
- }%
- \saveddimen{\chipspacing}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/pin spacing}}}
- \saveddimen{\width}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/width}}}
- \saveddimen{\extshift}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
- % standard anchors
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{0.5*((\numpins)
- *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf@circ@scaled@Rlen/2}%
- \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/width}}
- }
- \anchor{dot}{\northwest
- \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
- \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- % upper and lower pin
- \anchor{up}{\northwest\pgf@x=0pt\advance\pgf@y by\extshift }
- \anchor{down}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y\advance\pgf@y by-\extshift}
- \anchor{bup}{\northwest\pgf@x=0pt }
- \anchor{bdown}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- % start drawing
- \backgroundpath{%
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step = \ctikzvalof{multipoles/flipflop/pin spacing}\pgf@circ@scaled@Rlen
- \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfscope% (for the line width)
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
- \pgf@circ@draworfill
- \pgfusepath{stroke}%
- \endpgfscope
- % Adding the pin number
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
- \ifpgf@circuit@chip@straightnumbers
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
- \else
- \pgfmathsetmacro{\rot}{0}
- \pgfmathsetmacro{\quadrant}{0}
- \fi
- \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
- % text
- \def\mytext{\ctikzvalof{multipoles/flipflop/font}\space
- \ctikzvalof{multipoles/flipflop/t\the\pgf@circ@count@c}%
- \pgf@circ@strut\space}
- % \typeout{TEXT\space\mytext}
- \pgfmathloop%
- \def\wedge{\ctikzvalof{multipoles/flipflop/clock wedge size}\pgf@circ@res@step}
- \pgf@circ@res@temp=0pt\relax
- \ifnum\pgf@circ@count@a>0
- \ifcase\quadrant % rotation 0
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgf@circ@do@wedge@left
- % \typeout{TEXT Left Q1\space\mytext}
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgf@circ@do@wedge@right
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation -90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgf@circ@do@wedge@left
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgf@circ@do@wedge@right
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or %rotation 180
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgf@circ@do@wedge@left
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgf@circ@do@wedge@right
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation +90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgf@circ@do@wedge@left
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgf@circ@do@wedge@right
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- % Now the up and down text
- % up
- \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf@circ@strut\ctikzvalof{multipoles/flipflop/tu}\space}
- \pgf@circ@do@wedge@up
- \ifcase\quadrant % rotation 0
- \pgftext[top,
- at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or % rotation -90
- \pgftext[right,
- at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or %rotation 180
- \pgftext[bottom,
- at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or % rotation +90
- \pgftext[left,
- at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \fi
- % down
- \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf@circ@strut\ctikzvalof{multipoles/flipflop/td}\space}
- \pgf@circ@do@wedge@down
- \ifcase\quadrant % rotation 0
- \pgftext[bottom,
- at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or % rotation -90
- \pgftext[left,
- at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or %rotation 180
- \pgftext[top,
- at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or % rotation +90
- \pgftext[right,
- at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \fi
- % external pins
- \ifdim\pgf@circ@res@other>0pt
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % left side pins
- \pgf@circ@count@c=\pgf@circ@count@a
- %% we draw the pin only if it's defined either a text, a clock wedge or a not pin
- %% Or'ing tests in core TeX is tough
- \edef\@@or{0}
- % Just expand the key the minimum needed
- \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf@circ@count@c}}\edef\@@x{x}
- \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \ifnum\@@or>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfusepath{stroke}
- \fi
- % right side pins
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \edef\@@or{0}
- \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf@circ@count@c}}\edef\@@x{x}
- \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- % \typeout{TEST\space\@@tmp\space\@@x}
- \ifnum\@@or>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfusepath{stroke}
- \fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
- % up side
- \edef\@@or{0}
- \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/tu}}\edef\@@x{x}
- \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cu}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- % \typeout{TEST\space\@@tmp\space\@@x}
- \ifnum\@@or>0
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \pgfusepath{stroke}
- \fi
- % down side
- \edef\@@or{0}
- \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/td}}\edef\@@x{x}
- \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cd}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- % \typeout{TEST\space\@@tmp\space\@@x}
- \ifnum\@@or>0
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfusepath{stroke}
- \fi
- \endpgfscope
- \fi % external pin width >0
- %
- % draw "inverting" circles on outputs, they must be last
- %
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % left side pins
- \pgf@circ@count@c=\pgf@circ@count@a
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfnode{ocirc}{east}{}{\thisshape-N\the\pgf@circ@count@c}{\pgfusepath{stroke}}
- \endpgfscope\fi
- % right side pins
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfnode{ocirc}{west}{}{\thisshape-N\the\pgf@circ@count@c}{\pgfusepath{stroke}}
- \endpgfscope\fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
- % up side
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
- \ifnum\@@tmp>0\pgfscope
- \pgftransformshift{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfnode{ocirc}{south}{}{\thisshape-Nu}{\pgfusepath{stroke}}
- \endpgfscope\fi
- % down side
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nd}}
- \ifnum\@@tmp>0\pgfscope
- \pgftransformshift{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfnode{ocirc}{north}{}{\thisshape-Nd}{\pgfusepath{stroke}}
- \endpgfscope\fi
- \endpgfscope
- }%
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@flipflop{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\numpins\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@flipflop@pin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@flipflop@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
-}
-
-%
-% MUX-DEMUXES
-%
-% Thanks to @marmot
-\tikzset{muxdemux def/.code=\pgfqkeys{\circuitikzbasekey/multipoles/muxdemux}{#1}}
-\tikzset{demux/.style={muxdemux, muxdemux def={Lh=4, Rh=8, NL=1, NB=3, NR=8}}}
-\tikzset{one bit adder/.style={muxdemux,
- muxdemux def={Lh=4, NL=2, Rh=2, NR=1, NB=1, w=1.5,
- inset w=0.5, inset Lh=2, inset Rh=1.5}}}
-\tikzset{ALU/.style={muxdemux,
- muxdemux def={Lh=5, NL=2, Rh=2, NR=1, NB=2, NT=1, w=2,
- inset w=1, inset Lh=2, inset Rh=0, square pins=1}}}
-%generic mux-demux shape
-\pgfdeclareshape{muxdemux}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{muxdemuxes}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % pins on the four sides
- % \savedmacro\NL{%
- % \pgf@circ@count@a=\ctikzvalof{multipoles/muxdemux/NL}%
- % \def\NL{\the\pgf@circ@count@a}
- % }
- \savedmacro\NL{\edef\NL{\ctikzvalof{multipoles/muxdemux/NL}}}
- \savedmacro\NR{\edef\NR{\ctikzvalof{multipoles/muxdemux/NR}}}
- \savedmacro\NT{\edef\NT{\ctikzvalof{multipoles/muxdemux/NT}}}
- \savedmacro\NB{\edef\NB{\ctikzvalof{multipoles/muxdemux/NB}}}
- \savedmacro\squarepins{\edef\squarepins{\ctikzvalof{multipoles/muxdemux/square pins}}}
- % topleft and topright sizes
- \savedanchor{\topleft}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/Lh}*\pgf@circ@scaled@Rlen/2}
- \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
- }
- \savedanchor{\topright}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/Rh}*\pgf@circ@scaled@Rlen/2}
- \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
- }
- \savedanchor{\insetnortheast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/inset Lh}*\pgf@circ@scaled@Rlen/2}
- \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*
- (\ctikzvalof{multipoles/muxdemux/w}-2*\ctikzvalof{multipoles/muxdemux/inset w})*\pgf@circ@scaled@Rlen/2}
- }
- \saveddimen{\insethright}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/inset Rh}*\pgf@circ@scaled@Rlen/2}}
- \saveddimen{\extshift}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
- \savedanchor{\northwest}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*max(\ctikzvalof{multipoles/muxdemux/Rh},\ctikzvalof{multipoles/muxdemux/Lh})*\pgf@circ@scaled@Rlen/2}
- \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- \anchor{center}{\pgfpointorigin}
- \anchor{top right}{\topright}
- \anchor{bottom right}{\topright\pgf@y=-\pgf@y}
- \anchor{right}{\topright\pgf@y=0pt\relax}
- \anchor{top left}{\topleft}
- \anchor{bottom left}{\topleft\pgf@y=-\pgf@y}
- \anchor{left}{\topleft\pgf@y=0pt\relax}
- \anchor{top}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
- \divide\pgf@y by 2 \pgf@x=0pt\relax}
- \anchor{bottom}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
- \divide\pgf@y by 2 \pgf@y=-\pgf@y \pgf@x=0pt\relax}
- \anchor{inset top right}{\pgf@ya=\insethright\insetnortheast\advance\pgf@y by -0.5\pgf@ya}
- \anchor{inset bottom right}{\pgf@ya=\insethright\insetnortheast\advance\pgf@y by -0.5\pgf@ya\pgf@y=-\pgf@y}
- \anchor{inset right}{\insetnortheast\pgf@y=0pt\relax}
- \anchor{inset top left}{\insetnortheast\pgf@ya=\pgf@y\topleft\pgf@y=\pgf@ya}
- \anchor{inset bottom left}{\insetnortheast\pgf@ya=\pgf@y\topleft\pgf@y=-\pgf@ya}
- \anchor{inset left}{\topleft\pgf@y=0pt\relax}
- \anchor{inset bottom}{\topleft\pgf@xa=\pgf@x\pgf@ya=\insethright
- \insetnortheast\pgf@xb=\pgf@x\pgf@yb=\pgf@x
- \pgfpoint{(\pgf@xa+\pgf@xb)/2}{-\pgf@ya+\pgf@yb/2}}
- \anchor{inset top}{\topleft\pgf@xa=\pgf@x\pgf@ya=\insethright
- \insetnortheast\pgf@xb=\pgf@x\pgf@yb=\pgf@x
- \pgfpoint{(\pgf@xa+\pgf@xb)/2}{\pgf@ya-\pgf@yb/2}}
- \anchor{inset center}{\topleft\pgf@xa=\pgf@x\insetnortheast
- \advance\pgf@x by \pgf@xa \divide\pgf@x by 2 \pgf@y=0pt\relax}
- \anchor{narrow center}{\insetnortheast\pgf@xa=\pgf@x\topright
- \advance\pgf@x by \pgf@xa \divide\pgf@x by 2\pgf@y=0pt\relax}
- \anchor{center up}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
- \divide\pgf@y by 2
- \pgf@yb = \insethright \advance\pgf@y by \pgf@yb
- \divide\pgf@y by 2 \pgf@x=0pt\relax}
- \anchor{center down}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
- \divide\pgf@y by 2
- \pgf@yb = \insethright \advance\pgf@y by \pgf@yb
- \divide\pgf@y by 2 \pgf@y=-\pgf@y \pgf@x=0pt\relax}
- \anchor{text}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*
- \ctikzvalof{multipoles/muxdemux/inset w}*\pgf@circ@scaled@Rlen/2}
- \advance\pgf@x by -.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \backgroundpath{%
- \topleft
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@left = \pgf@x
- \topright
- \pgf@circ@res@other = \pgf@y
- \pgf@circ@res@right = \pgf@x
- \insetnortheast
- \pgf@circ@res@step = \pgf@x
- \pgf@circ@res@temp = \pgf@y
- %
- % external block
- %
- \pgfscope% (for the line width)
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- % inset, starting down
- \ifdim\pgf@circ@res@temp>0pt % inset
- % \typeout{INSETw\space\the\pgf@circ@res@right\space x\space\the\pgf@circ@res@step\space y\space\the\pgf@circ@res@temp}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\insethright}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\insethright}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}
- \fi
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- % now we have to draw the pins, if needed
- \ifdim\extshift>0pt\ifpgfcirc@draw@leads\pgfscope % let's avoid too much indent
- % Ok, we have to draw the leads (a.k.a. pins)
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- % We mimic the anchors here --- probably there is a better way
- % left pins
- \ifnum\NL>0\relax % not indented, closed on \repeatpgfmathloop
- \pgf@circ@count@a=\NL\relax
- \pgf@circ@count@b=\NL \divide\pgf@circ@count@b by 2 % see https://tex.stackexchange.com/questions/146523/why-does-numexpr-integer-division-round-rather-than-truncate
- \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
- \insetnortheast\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
- \ifdim\pgf@circ@res@down>0pt % check if we have an inset
- % we have to check oddity
- \ifodd\NL
- \ifnum\NL=1
- % only centerpin, step should not be used, but anyway...
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/(\NL)}
- \else
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/(\NL-1)}
- \fi
- \else
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/\NL}
- \fi
- \else % no inset
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@up/\NL}
- \fi
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- %%%%%
- \ifdim\pgf@circ@res@down>0pt % check if we have an inset
- \ifnum\pgf@circ@count@a>\pgf@circ@count@b\relax
- % for lower pins we have to shift them down
- % \typeout{DEBUGTEST1\space #1\space entering\space \NL}
- \ifodd\NL
- % odd number of pins
- \ifnum\pgf@circ@count@a=\numexpr\the\pgf@circ@count@b+1\relax
- % centerpin!
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \ifnum\squarepins>0
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{0pt}}
- \else
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\extshift}{0pt}}
- \fi
- \else
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a+1)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a+1)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
- \fi
- \else
- % even numer of pins: just go down
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
- \fi
- \else
- % nothing need for #1<=NL/2
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \fi
- \else
- % no inset
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \fi
- %%%%%
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop\fi%
- % right pins
- \ifnum\NR>0\pgf@circ@count@a=\NR\relax
- \pgfmathloop%
- \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@up=\pgf@y
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@up/\NR}
- \ifnum\pgf@circ@count@a>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop\fi%
- % bottom pins
- \ifnum\NB>0\pgf@circ@count@a=\NB\relax %%%
- \pgfmathloop%
- \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
- \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@right/\NB}
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@res@down-\pgf@circ@res@up)/(\pgf@circ@res@right-\pgf@circ@res@left)*\pgf@circ@res@step}
- \ifnum\pgf@circ@count@a>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {-\pgf@circ@res@down+(\NB-\pgf@circ@count@a+0.5)*\pgf@circ@res@other}}
- \ifnum\squarepins>0
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {-max(\pgf@circ@res@down, \pgf@circ@res@up)-\extshift}}
- \else
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {-\pgf@circ@res@down+(\NB-\pgf@circ@count@a+0.5)*\pgf@circ@res@other-\extshift}}
- \fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop\fi%
- % top pins
- \ifnum\NT>0\pgf@circ@count@a=\NT\relax
- \pgfmathloop%
- \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
- \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@right/\NT}
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@res@down-\pgf@circ@res@up)/(\pgf@circ@res@right-\pgf@circ@res@left)*\pgf@circ@res@step}
- \ifnum\pgf@circ@count@a>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {\pgf@circ@res@down-(\NT-\pgf@circ@count@a+0.5)*\pgf@circ@res@other}}
- \ifnum\squarepins>0
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {max(\pgf@circ@res@down, \pgf@circ@res@up)+\extshift}}
- \else
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {\pgf@circ@res@down-(\NT-\pgf@circ@count@a+0.5)*\pgf@circ@res@other+\extshift}}
- \fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop\fi%
- % end drawing pins; stroke them
- \pgfusepath{stroke}
- \endpgfscope\fi\fi
- }
- % let's start adding anchors
- \pgfutil@g@addto@macro\pgf@sh@s@muxdemux{%
- % left side anchors
- \pgf@circ@count@a=\NL\relax
- % \typeout{STARTGENERATINGLEFT\space\the\pgf@circ@count@a\space FOR\space\thisshape\space\NL}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % \typeout{GENERATINGLEFT\space\the\pgf@circ@count@a\space FOR\space\thisshape\space\NL}
- % we will create two anchors per pin: the "normal one" like `lpin 1` for the
- % external leads, and the "border one" like `blpin 1` for internal ones.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@muxdemux@lpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@L@anchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@muxdemux@blpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@L@anchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- % right anchors
- \pgf@circ@count@a=\NR\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `rpin 1` for the
- % external leads, and the "border one" like `brpin 1` for internal ones.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@muxdemux@rpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@R@anchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@muxdemux@brpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@R@anchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- % bottom anchors
- \pgf@circ@count@a=\NB\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `bpin 1` for the
- % external leads, and the "border one" like `bbpin 1` for internal ones.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@muxdemux@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@B@anchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@muxdemux@bbpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@B@anchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- % top anchors
- \pgf@circ@count@a=\NT\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `tpin 1` for the
- % external leads, and the "border one" like `btpin 1` for internal ones.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@muxdemux@tpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@T@anchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@muxdemux@btpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@T@anchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
-}
-
-%% left anchors for muxdemux
-
-\def\pgf@circ@muxdemux@L@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \topleft
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \insetnortheast
- \pgf@xb=\pgf@x
- \pgf@yb=\pgf@y
- \ifnum#1>\NL
- \PackageError{circuitikz}{%
- You requested left pin #1 for mux/demux shape \thisshape\space \MessageBreak
- which has been defined with \NL\space left pins%
- }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
- \fi
- \pgf@circ@count@a=\NL \divide\pgf@circ@count@a by 2 % see https://tex.stackexchange.com/questions/146523/why-does-numexpr-integer-division-round-rather-than-truncate
- % \typeout{LEFT \the\pgf@xa \space \the\pgf@ya \space \NL}
- \ifnum\NL>1
- \ifdim\pgf@yb>0pt % check if we have an inset
- % we have to check oddity
- \ifodd\NL
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@ya-\pgf@yb)/(\NL-1)}
- \else
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@ya-\pgf@yb)/\NL}
- \fi
- \else % no inset
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@ya/\NL}
- \fi
- \ifdim\pgf@yb>0pt % check if we have an inset
- \ifnum#1>\pgf@circ@count@a\relax
- % for lower pins we have to shift them down
- % \typeout{DEBUGTEST1\space #1\space entering\space \NL}
- \ifodd\NL
- % odd number of pins
- \ifnum#1=\numexpr\the\pgf@circ@count@a+1\relax
- % centerpin!
- \ifnum#2=0\relax
- \pgfpoint{\pgf@xb}{0pt}
- \else
- \ifnum\squarepins>0
- \pgfpoint{\pgf@xa-#2*\extshift}{0pt}
- \else
- \pgfpoint{\pgf@xb-#2*\extshift}{0pt}
- \fi
- \fi
- \else
- \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1+1)*\pgf@circ@res@step-2*\pgf@yb}
- \fi
- \else
- % even numer of pins: just go down
- \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step-2*\pgf@yb}
- \fi
- \else
- % nothing need for #1<=NL/2
- \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
- \fi
- \else
- % no inset
- \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
- \fi
- \else
- \pgfpoint{\pgf@xa-#2*\extshift}{0pt}
- \fi
-}
-
-% right anchors
-\def\pgf@circ@muxdemux@R@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \topright
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \ifnum#1>\NR
- \PackageError{circuitikz}{%
- You requested right pin #1 for mux/demux shape \thisshape\space \MessageBreak
- which has been defined with \NR\space right pins%
- }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
- \fi
- \ifnum\NR>1
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@ya/\NR}
- \pgfpoint{\pgf@xa+#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
- \else
- \pgfpoint{\pgf@xa+#2*\extshift}{0pt}
- \fi
-}
-
-% bottom anchors
-\def\pgf@circ@muxdemux@B@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \topleft
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \topright
- \pgf@xb=\pgf@x
- \pgf@yb=\pgf@y
- \ifnum#1>\NB
- \PackageError{circuitikz}{%
- You requested bottom pin #1 for mux/demux shape \thisshape\space \MessageBreak
- which has been defined with \NB\space bottom pins%
- }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
- \fi
- \ifnum\NB>0
- % \typeout{DEBUGTESTtopleft\space\the\pgf@ya \space topright\space\the\pgf@yb \space\NB}
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@xb/\NB}
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@yb-\pgf@ya)/(\pgf@xb-\pgf@xa)*\pgf@circ@res@step}
- \pgfmathsetlength\pgf@x{\pgf@xa+(#1-0.5)*\pgf@circ@res@step}
- \ifnum#2=0\relax
- \pgfmathsetlength\pgf@y{-\pgf@yb+(\NB-#1+0.5)*\pgf@circ@res@other}
- \else
- \ifnum\squarepins>0\relax
- \pgfmathsetlength\pgf@y{-max(\pgf@ya,\pgf@yb)-\extshift}
- \else
- \pgfmathsetlength\pgf@y{-\pgf@yb+(\NB-#1+0.5)*\pgf@circ@res@other-\extshift}
- \fi
- \fi
- \else
- % should not happen, give the same as pin 1 anyway
- \ifnum#2=0\relax
- \pgfpoint{0pt}{-\pgf@yb+(\pgf@yb-\pgf@ya)/2}
- \else
- \pgfpoint{0pt}{-max(\pgf@ya,\pgf@yb)-\extshift}
- \fi
- \fi
-}
-
-% top anchors
-\def\pgf@circ@muxdemux@T@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \topleft
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \topright
- \pgf@xb=\pgf@x
- \pgf@yb=\pgf@y
- \ifnum#1>\NT
- \PackageError{circuitikz}{%
- You requested top pin #1 for mux/demux shape \thisshape\space \MessageBreak
- which has been defined with \NT\space top pins%
- }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
- \fi
- \ifnum\NT>0
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@xb/\NT}
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@yb-\pgf@ya)/(\pgf@xb-\pgf@xa)*\pgf@circ@res@step}
- \pgfmathsetlength\pgf@x{\pgf@xa+(#1-0.5)*\pgf@circ@res@step}
- \ifnum#2=0\relax
- \pgfmathsetlength\pgf@y{\pgf@yb-(\NT-#1+0.5)*\pgf@circ@res@other}
- \else
- \ifnum\squarepins>0
- \pgfmathsetlength\pgf@y{max(\pgf@ya,\pgf@yb)+\extshift}
- \else
- \pgfmathsetlength\pgf@y{\pgf@yb-(\NT-#1+0.5)*\pgf@circ@res@other+\extshift}
- \fi
- \fi
- \else
- % should not happen, give the same as pin 1 anyway
- \ifnum#2=0\relax
- \pgfpoint{0pt}{\pgf@yb-(\pgf@yb-\pgf@ya)/2}
- \else
- \pgfpoint{0pt}{max(\pgf@ya,\pgf@yb)+\extshift}
- \fi
- \fi
-}
-%%%---------- close: tex/pgfcircmultipoles
-
-%%%%%%%%%%% Springe nach tex/pgfcirclabel
-%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Bipole label positioning
-
-%% bipole labels and annotation extra style
-
-\ctikzset{bipole label style/.style={}}
-\tikzset{bipole label style/.code={
- \ctikzset{bipole label style/.style={#1}}
-}}
-\tikzset{bipole label append style/.code={
- \ctikzset{bipole label style/.append style={#1}}
-}}
-\ctikzset{bipole annotation style/.style={}}
-\tikzset{bipole annotation style/.code={
- \ctikzset{bipole annotation style/.style={#1}}
-}}
-\tikzset{bipole annotation append style/.code={
- \ctikzset{bipole annotation style/.append style={#1}}
-}}
-
-%% Options
-\ctikzset{label/.style = { l=#1 } }
-\ctikzset{l/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
- \ctikzsetvalof{bipole/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-
-\ctikzset{label above/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-
-\ctikzset{l^/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-
-\ctikzset{label below/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-\ctikzset{l_/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-\ctikzset{annotation/.style = { a=#1 } }
-\ctikzset{a/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/annotation/name=#1}
- \ctikzsetvalof{bipole/annotation/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/annotation/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/annotation/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-
-\ctikzset{annotation above/.code = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=90 }
-}
-
-\ctikzset{a^/.style = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=90 }
-}
-
-\ctikzset{annotation below/.code = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=-90 }
-}
-\ctikzset{a_/.style = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=-90 }
-}
-
-% This is to adjust spacing for the labels so that they are not cramped on components
-\def\pgf@circ@ls{.75ex} % labelspace to have just one point to change
-
-\def\pgf@circ@drawlabels#1{
- \pgfextra{
- % This function will be called with argument #1 equal
- % to "label" or "annotation" form pgfcircpath.tex.
- % pgf@circ@direction is the direction of the path,
- % its value is set in pgfcircpath.tex
- \pgfmathsubtract{\pgf@circ@direction}{90}
- \pgfmathround{\pgfmathresult} % avoid precision loss errors
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
-
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/position}}
- \ifnum \pgf@circ@temp < 0
- \pgfmathadd{\pgf@circ@labanc}{180}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- % \typeout{INI: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
- %
- % normalize the angle values
- %
- \pgfmathmod{\pgf@circ@labanc}{360}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- %
- \ifpgf@circuit@bipole@inverted
- \pgfmathadd{\pgf@circ@temp}{180} %If shape is inverted, use opposite anchor
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- %
- \ifnum \ctikzvalof{mirror value} = -1
- \pgfmathadd{\pgf@circ@temp}{180} %If shape is mirrored, use opposite anchor
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- % \typeout{FIN: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
- }
- %Firstly, place a coordinate directly at the edge of the shape
- (\ctikzvalof{bipole/name}.\pgf@circ@temp) coordinate (labelcoor)
- %now decide, which labels should be drawn
- \pgfextra{
- \edef\pgf@temp{\ctikzvalof{label/align}}
- \def\pgf@circ@temp{straight}
- }
- \ifx\pgf@temp\pgf@circ@temp %straight
- \pgf@circ@drawreglabels{#1}
- \else
- \pgfextra{\def\pgf@circ@temp{rotate}}
- \ifx\pgf@temp\pgf@circ@temp %rotate
- \pgf@circ@drawrotlabels{#1}
- \else% smart
- \pgf@circ@drawsmartlabels{#1}
- \fi
- \fi
-}
-
-
-\def\pgf@circ@drawsmartlabels#1{
- \pgfextra{
- \pgfmathmod{\pgf@circ@direction}{90}
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- \ifnum \pgfcircmathresult > 20
- \ifnum \pgfcircmathresult < 70
- \pgf@circ@drawrotlabels{#1}
- \else
- \pgf@circ@drawreglabels{#1}
- \fi
- \else
- \pgf@circ@drawreglabels{#1}
- \fi
- }
-
-
-\def\pgf@circ@drawrotlabels#1{
- \pgfextra{
- % scale the distances in function of zoom, so that they are not
- % dependent on it but on font size. Thanks to @marmot
- % https://tex.stackexchange.com/a/476018/38080
- % the coeffcient is adjusted so that the distance is more or less
- % the same for rotated labels and straight ones (although it will
- % depend on the font, so it's not exact).
- \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
- \pgfmathsetmacro{\myscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
- % \typeout{ROT\tmpa\space\tmpb\space\tmpc\space\tmpd\space\myscale}
- \pgfmathsetlength\pgf@circ@res@temp{1.5*\pgf@circ@ls/\myscale}
- \ifnum \ctikzvalof{bipole/#1/position}>0
- %we need some more space for placement below, due to mid-anchor
- \else % we do not have <= in \ifnum...
- \pgf@circ@res@temp=1.5\pgf@circ@res@temp
- \fi
- %Calculate rotation of the label from direction and strip decimals
- \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- % rotate the label at second or third quadrant:
- \ifnum \pgfcirclabrot > 90 \ifnum \pgfcirclabrot < 270
- \pgfmathsubtract{\pgf@circ@direction}{180}
- \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- %invert the space relationships due to rotated strings
- \ifnum \ctikzvalof{bipole/#1/position}>0
- \pgf@circ@res@temp=1.5\pgf@circ@res@temp
- \fi
- \fi\fi
- \pgfmathparse{\ctikzvalof{bipole/#1/position}>0?\pgf@circ@direction+90:\pgf@circ@direction-90}
- \edef\pgf@circ@labposangle{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- % reset cm is not working correctly here
- (labelcoor)++(\pgf@circ@labposangle:\the\pgf@circ@res@temp) coordinate(labelcoor)
- node[anchor=mid, rotate=\pgfcirclabrot, \circuitikzbasekey/bipole #1 style]
- (\ctikzvalof{bipole/name}#1){\pgf@circ@finallabels{#1}}
-}
-
-\def\pgf@circ@drawreglabels#1{
- %Now calculate all shape positions
- %Use mid-anchor at x-axis and base-anchor at y-axis, respectively.
- %All points between will be addressed by angled-anchors:
- \pgfextra{
- % scale ex-distance to make it independent on scale
- % thanks @marmot see https://tex.stackexchange.com/a/476018/38080
- \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
- \pgfmathsetmacro{\myscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
- % \typeout{ROT\tmpa\space\tmpb\space\tmpc\space\tmpd\space\myscale}
- \pgfmathsetlength\pgf@circ@res@temp{\pgf@circ@ls/\myscale}
- \pgfmathadd{\pgf@circ@labanc}{90}
- \pgfmathround{\pgfmathresult}
- \def\pgf@circ@labanctext{\pgf@circ@labanc}
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \pgfmathparse{mod(\pgf@circ@temp,180)>135?mod(\pgf@circ@temp,180)-180:mod(\pgf@circ@temp,180)}
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- %Values around 90 are at both y-axis
- \ifnum \pgfcircmathresult > 84 \ifnum \pgfcircmathresult< 96
- \pgfextra{\edef\pgf@circ@labpos{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}}
- \ifnum \pgf@circ@labpos > 180
- \ifnum \ctikzvalof{bipole/#1/position} > 0
- \pgfextra{\def\pgf@circ@labanctext{mid west}}
- \else
- \pgfextra{\def\pgf@circ@labanctext{mid east}}
- \fi
- \else
- \ifnum \ctikzvalof{bipole/#1/position} > 0
- \pgfextra{\def\pgf@circ@labanctext{mid east}}
- \else
- \pgfextra{\def\pgf@circ@labanctext{mid west}}
- \fi
- \fi
- \fi\fi
- %Values between -5 and 5 are at pos /neg x-axis
- \pgfextra{\def\uffa{}\newdimen\realshift\realshift=\dimexpr1pt\relax}
- \ifnum \pgfcircmathresult <6 \ifnum \pgfcircmathresult > -6
- \ifnum \ctikzvalof{bipole/#1/position} < 0
- \ifnum \pgf@circ@labanc > 90
- % using base coordinate instead of south to naturally align
- % symbols with descendants; but this invalidate the effect of
- % the inner sep, so recover it by shifting the anchor
- % reset cm is not working sometime, use @marmot solution
- % see https://tex.stackexchange.com/a/476018/38080
- (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
- \pgfextra{\def\pgf@circ@labanctext{base}}%base
- \else
- \pgfextra{\def\pgf@circ@labanctext{north}}%north
- \fi
- \else
- \ifnum \pgf@circ@labanc < 90
- % shift, as above
- (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
- \pgfextra{\def\pgf@circ@labanctext{base}}%base
- \else
- \ifnum \pgf@circ@labanc > 180
- % this shouldn't happen, but somehow it does (270 degree anchors)
- % shift, as above
- (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
- \pgfextra{\def\pgf@circ@labanctext{base}}%base
- \else
- \pgfextra{\def\pgf@circ@labanctext{north}}%north
- \fi
- \fi
- \fi
- \fi\fi
- (labelcoor) node[anchor=\pgf@circ@labanctext,
- inner sep=0.5\pgf@circ@res@temp, outer sep=0pt, \circuitikzbasekey/bipole #1 style,
- ](\ctikzvalof{bipole/name}#1){\strut\pgf@circ@finallabels{#1}%
- }
-}
-
-\def\pgf@circ@finallabels#1{%
- \edef\pgf@temp{}%
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/unit}}%
- \ifx\pgf@temp\pgf@circ@temp%
- \ctikzvalof{bipole/#1/name}%
- \else%
- $\SI{\ctikzvalof{bipole/#1/name}}{\ctikzvalof{bipole/#1/unit}}$%
- \fi%
-}
-
-\ctikzset{text/.style={t=#1}}
-\ctikzset{t/.code={%
- \ctikzsetvalof{bipoles/twoport/text}{#1}%
-}}
-
-%%%% Stacked labels
-%
-% stacked labels by Romano Giannetti romano@rgtti.com
-% heavily based on Claudo Fiandrinos's https://tex.stackexchange.com/a/65792/38080
-% \expandafter trick inspired by Matthew Leingang's https://tex.stackexchange.com/a/12272/38080
-%
-% labels are in a tabular, globally aligned:
-% vertically with key l2 valign (default c)
-% c: center t: top b: bottom
-% horizontally with key l2 align (default l)
-% l: left c: centered r: right
-% you can switch sides using l2_=... and l2^=...
-% syntax is l2_ = line1 and line2 (same for l2^)
-%
-\ctikzset{%
- l2 valign/.store in=\ltwo@valign, l2 valign=c,
- l2 halign/.store in=\ltwo@halign, l2 halign=l,
-}
-\ctikzset{l2base/.code n args={2}{
- \pgfkeys{/tikz/circuitikz/bipole/label/name=%
- \bgroup
- \setlength{\tabcolsep}{2pt}%
- \def\ltwo@tabu{\tabular[\ltwo@valign]}%
- \expandafter\ltwo@tabu\expandafter{\ltwo@halign}%
- #1\\ #2%
- \endtabular
- \egroup
- }%
- \ctikzsetvalof{bipole/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#2}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-\ctikzset{l2/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l2 above/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l2^/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l2 below/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-\ctikzset{l2_/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-%%%---------- close: tex/pgfcirclabel
-%%%%%%%%%%% Springe nach tex/pgfcircvoltage
-%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Voltage management
-
-%% styles
-\ctikzset{bipole voltage style/.style={}}
-\tikzset{bipole voltage style/.code={
- \ctikzset{bipole voltage style/.style={#1}}
-}}
-\tikzset{bipole voltage append style/.code={
- \ctikzset{bipole voltage style/.append style={#1}}
-}}
-
-\ctikzset{v^>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v^</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v_>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-\ctikzset{v_</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
-\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
-\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
-\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
-
-% Default position varies whether the component is a voltage source
-% or not
-\ctikzset{v/.code = {
- \ifpgf@circuit@bipole@isvoltage
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \ifpgf@circ@oldvoltagedirection
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \fi
- \fi
- \ifpgf@circ@oldvoltagedirection
- \ifpgf@circuit@bipole@iscurrent\ifpgf@circ@fixbatteries
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \fi\fi
- \else
- \ifpgf@circuit@bipole@iscurrent
- \ifpgf@circuit@bipole@current@backward
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \fi\fi\fi
- \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
- \ctikzsetvalof{bipole/voltage/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- }
-}
-
-% american voltage font selection and symbol definition
-% the default font command is {} --- nothing
-\def\pgf@circ@avfont{\ctikzvalof{voltage/american font}}
-%
-% plus and minus symbols (default is $+$ and $-$, see pgfcirc.defines.tex)
-%
-\def\pgf@circ@avplus{\ctikzvalof{voltage/american plus}}
-\def\pgf@circ@avminus{\ctikzvalof{voltage/american minus}}
-
-%%
-\def\setscaledRlenforclass{%
- \csname pgf@sh@ma@\ctikzvalof{bipole/name}\endcsname
- \ifdefined\ctikzclass
- \edef\pgf@temp{/tikz/circuitikz/\ctikzclass/scale}
- \pgfkeysifdefined{\pgf@temp}
- {\pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- {\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}
- \else
- \pgf@circ@scaled@Rlen=\pgf@circ@Rlen
- \fi
-}
-
-%% Output routine for generic bipoles
-
-\def\pgf@circ@drawvoltagegeneric{
- \pgfextra{
- % \typeout{NAME:\ctikzvalof{bipole/name}}
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/straight label distance}
- \pgfkeysifdefined{\pgf@temp}
- {
- \edef\partheight{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/straight label distance}}
- \edef\tmpdistfromline{(\partheight\pgf@circ@scaled@Rlen)}
- }
- {
- \pgfkeysifdefined{/tikz/circuitikz/bipoles/voltage/straight label distance}
- {
- \edef\partheight{\ctikzvalof{bipoles/voltage/straight label distance}}
- \edef\tmpdistfromline{(\partheight\pgf@circ@scaled@Rlen)}
- }
- {%calculate default value from part height
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/height}
- \pgfkeysifdefined{\pgf@temp}
- {
- \edef\partheight{0.5*\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/height}}
- \edef\tmpdistfromline{(\partheight\pgf@circ@scaled@Rlen+0.2\pgf@circ@scaled@Rlen)}
- }
- {
- \edef\tmpdistfromline{(.5\pgf@circ@scaled@Rlen)} %fallback to fixed value
- }
- }
- }
- % \typeout{KIND:\ctikzvalof{bipole/kind}\space RLEN:\the\pgf@circ@Rlen\space SCALED:\the\pgf@circ@scaled@Rlen}
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{\tmpdistfromline}
- \else
- \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{-\tmpdistfromline}
- \else
- \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
- \fi
- \fi
- \else
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{-\tmpdistfromline}
- \else
- \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{\tmpdistfromline}
- \else
- \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
- \fi
- \fi
- \fi
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@voltage@angle{90}
- \else
- \def\pgf@circ@voltage@angle{-90}
- \fi
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/distance from node}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\distancefromnode{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/distance from node}} }
- { \edef\distancefromnode{\ctikzvalof{voltage/distance from node}} }
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/bump b}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\bumpb{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/bump b}} }
- { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
- \edef\shiftv{\ctikzvalof{voltage/shift}}
- % additional per-bipole voltage shift (internal)
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/additional label shift}
- \pgfkeysifdefined{\pgf@temp}
- {
- \edef\addvshift{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/additional label shift}}
- }
- {
- \edef\addvshift{0}
- }
- \newdimen{\absvshift}
- \pgfmathsetlength{\absvshift}{(1+\shiftv+\addvshift)*(\distfromline)}
- % put this to true to see the voltage label coordinate anchors
- \newif\ifpgf@circ@debugv\pgf@circ@debugvfalse
- }
- % %\pgf@circ@Rlen/\ctikzvalof{current arrow scale} is equal to the length of the currarrow
- coordinate (pgfcirc@midtmp) at ($(\tikztostart) ! \pgf@circ@Rlen/\ctikzvalof{current arrow scale} ! (anchorstartnode)$) %absolute move, minimum space is length of arrowhead
- coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distancefromnode ! (anchorstartnode)$)
- coordinate (pgfcirc@Vfrom@flat) at (pgfcirc@midtmp)
- coordinate (pgfcirc@Vfrom) at ($(pgfcirc@midtmp) ! -\distfromline ! \pgf@circ@voltage@angle:(anchorstartnode)$)
-
- coordinate (pgfcirc@midtmp) at ($(\tikztotarget) ! \pgf@circ@Rlen/\ctikzvalof{current arrow scale} ! (anchorendnode)$)%absolute move, minimum space is length of arrowhead
- coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distancefromnode ! (anchorendnode)$)
- coordinate (pgfcirc@Vto@flat) at (pgfcirc@midtmp)
- coordinate (pgfcirc@Vto) at ($(pgfcirc@midtmp) ! \distfromline ! \pgf@circ@voltage@angle : (anchorendnode)$)
-
- \ifpgf@circuit@bipole@voltage@below
- \ifpgf@circ@debugv
- node [ocirc, fill=red] at (anchorstartnode) {}
- node [ocirc, fill=blue] at (anchorendnode) {}
- node [ocirc, fill=green] at (pgfcirc@Vto) {}
- node [ocirc, fill=yellow] at (pgfcirc@Vfrom) {}
- node [odiamondpole, fill=green] at (pgfcirc@Vto@flat) {}
- node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom@flat) {}
- \fi
- coordinate (pgfcirc@Vto) at ($(pgfcirc@Vto@flat) ! \absvshift!90 : (anchorendnode)$)
- coordinate (pgfcirc@Vfrom) at ($(pgfcirc@Vfrom@flat) ! \absvshift!-90 : (anchorstartnode)$)
- coordinate (pgfcirc@Vcont1t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
- coordinate (pgfcirc@Vcont2t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
- coordinate (pgfcirc@Vcont1) at ($(pgfcirc@Vcont1t) ! -\absvshift!90 : (pgfcirc@Vcont2t)$)
- coordinate (pgfcirc@Vcont2) at ($(pgfcirc@Vcont2t) ! -\absvshift!-90 : (pgfcirc@Vcont1t)$)
- \ifpgf@circ@debugv
- node [odiamondpole, fill=green] at (pgfcirc@Vto) {}
- node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom) {}
- node [osquarepole, fill=red] at (pgfcirc@Vcont1) {}
- node [osquarepole, fill=blue] at (pgfcirc@Vcont2) {}
- \fi
- \else
- \ifpgf@circ@debugv
- node [ocirc, fill=red] at (anchorstartnode) {}
- node [ocirc, fill=blue] at (anchorendnode) {}
- node [ocirc, fill=green] at (pgfcirc@Vto) {}
- node [ocirc, fill=yellow] at (pgfcirc@Vfrom) {}
- node [odiamondpole, fill=green] at (pgfcirc@Vto@flat) {}
- node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom@flat) {}
- \fi
- coordinate (pgfcirc@Vto) at ($(pgfcirc@Vto@flat) ! -\absvshift!90 : (anchorendnode)$)
- coordinate (pgfcirc@Vfrom) at ($(pgfcirc@Vfrom@flat) ! -\absvshift!-90 : (anchorstartnode)$)
- coordinate (pgfcirc@Vcont1t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
- coordinate (pgfcirc@Vcont2t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
- coordinate (pgfcirc@Vcont1) at ($(pgfcirc@Vcont1t) ! \absvshift!90 : (pgfcirc@Vcont2t)$)
- coordinate (pgfcirc@Vcont2) at ($(pgfcirc@Vcont2t) ! \absvshift!-90 : (pgfcirc@Vcont1t)$)
- \ifpgf@circ@debugv
- node [odiamondpole, fill=green] at (pgfcirc@Vto) {}
- node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom) {}
- node [osquarepole, fill=red] at (pgfcirc@Vcont1) {}
- node [osquarepole, fill=blue] at (pgfcirc@Vcont2) {}
- \fi
- \fi
-
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@straight
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) --(pgfcirc@Vfrom) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
- \else
- (pgfcirc@Vfrom) --(pgfcirc@Vto) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {}
- (pgfcirc@Vfrom)
- \else
- (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {}
- (pgfcirc@Vto)
- \fi
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- \else
- (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- \fi
- \else
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- \else
- (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- \fi
- \fi
- \fi
-}
-
-%% Output routine for voltage sources
-\def\pgf@circ@drawvoltagegenerator{
- % the following is affected indirectly by voltage/shift, you can move the arrow with voltage/bump a.
- % it's not perfect, but I can't find the way to do it correctly...
- \pgfextra{
- \edef\shiftv{\ctikzvalof{voltage/shift}}
- \edef\bumpa{\ctikzvalof{voltage/bump a}}
- \pgfmathsetmacro{\bumpaplus}{\bumpa + 0.5*\shiftv} % coefficient added "by feel". Sorry.
- }
- \ifpgf@circuit@bipole@voltage@below
- coordinate (pgfcirc@Vfrom) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-120)$)
- coordinate (pgfcirc@Vto) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-60)$)
- \else
- coordinate (pgfcirc@Vfrom) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.120)$)
- coordinate (pgfcirc@Vto) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.60)$)
- \fi
- % fix the (unused in this case) Vcont1/2 coords for label placement along the line
- coordinate (pgfcirc@Vcont1) at (pgfcirc@Vto)
- coordinate (pgfcirc@Vcont2) at (pgfcirc@Vfrom)
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) -- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {} (pgfcirc@Vfrom)
- \else
- (pgfcirc@Vfrom) -- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {} (pgfcirc@Vto)
- \fi
- \else% american voltage
- \ifpgf@circuit@bipole@voltageoutsideofsymbol
- % if it is a battery, must put + and -
-
- \ifpgf@circ@fixbatteries
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- \else
- (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- \else
- (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- \fi
- \fi
- \fi
- \fi
-}
-
-%% Output routine
-\def\pgf@circ@drawvoltage{% node name
- \pgfextra{ %WARNING: indentation is probably wrong
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north west}
- \else
- \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{west}
- \else
- \def\pgf@circ@bipole@voltage@label@anchor{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{east}
- \else \def\pgf@circ@bipole@voltage@label@anchor{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
-
- % this must be set *before* changing for mirroring and inverting; in that case
- % the xscale/yscale parameters take it into account
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@where{-90}
- \else
- \def\pgf@circ@bipole@voltage@label@where{90}
- \fi
-
- % magic to counteract the scale and yscale effects (there should be a better way...)
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@voltage@below
- \pgf@circuit@bipole@voltage@belowfalse
- \else
- \pgf@circuit@bipole@voltage@belowtrue
- \fi
- \fi
-
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@below
- \pgf@circuit@bipole@voltage@belowfalse
- \else
- \pgf@circuit@bipole@voltage@belowtrue
- \fi
- \fi
-
- % take into account scaling
- \setscaledRlenforclass
-
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/european label distance}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\eudist{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/european label distance}} }
- { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
- % find the height of the bipole or use a default value
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/height}
- \pgfkeysifdefined{\pgf@temp}
- {\pgfmathsetmacro{\partheightf}{0.5*\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/height}}
- \edef\partheight{\partheightf\pgf@circ@scaled@Rlen}}
- {\edef\partheight{(.5\pgf@circ@scaled@Rlen)}} %fallback to fixed value
- \newdimen{\alshift}
- % this is more or less the same of the legacy code; we shift the american label a bit
- % outside the (+) -- (-) line
- \pgfmathsetlength{\alshift}{(\ctikzvalof{voltage/american label distance}-0.6)*\partheight}
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- }%end pgfextra
-
- \ifpgf@circuit@bipole@isvoltage
- \pgf@circ@drawvoltagegenerator
- \else
- \pgf@circ@drawvoltagegeneric
- \fi
-
- \ifpgf@circuit@bipole@voltage@straight
- coordinate (Vlab) at ($(pgfcirc@Vto)!0.5!(pgfcirc@Vfrom) $)
- node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt,
- \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
- at (Vlab) {\pgf@circ@finallabels{voltage/label}}
- \else
- \ifpgf@circuit@europeanvoltage
- coordinate (Vlab) at ($(pgfcirc@Vcont1)!0.5!(pgfcirc@Vcont2)$)
- \else
- coordinate (Vlab) at ($(pgfcirc@Vfrom)!0.5!(pgfcirc@Vto)$)
- \ifpgf@circuit@bipole@isvoltage\else
- % add a bit of space for american labels above their symbols in the normal case. You can avoid that
- % with voltage/american label distance=0.5 (it's measured from the center of the component, in heights)
- coordinate (Vlab) at ($(Vlab) ! \alshift ! \pgf@circ@bipole@voltage@label@where :(pgfcirc@Vto)$)
- \fi
- \fi
- node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt,
- \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
- at (Vlab) {\pgf@circ@finallabels{voltage/label}}
- \fi
-}%end drawvoltages
-%%%---------- close: tex/pgfcircvoltage
-%%%%%%%%%%% Springe nach tex/pgfcirccurrent
-%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Current handling
-
-%% styles
-\ctikzset{bipole current style/.style={}}
-\tikzset{bipole current style/.code={
- \ctikzset{bipole current style/.style={#1}}
-}}
-\tikzset{bipole current append style/.code={
- \ctikzset{bipole current style/.append style={#1}}
-}}
-
-%% Options
-\ctikzset{i^>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i>^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i>_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i^</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i<^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i<_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i/.code = {
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above }
- \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
- \ctikzsetvalof{bipole/current/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- %reverse current direction for voltage sources
- \ifpgf@circ@oldvoltagedirection\else
- \ifpgf@circuit@bipole@isvoltage
- \ifpgf@circuit@bipole@voltage@backward
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below }
- \else
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above }
- \fi\fi\fi
- }
-}
-
-\ifpgf@circ@oldvoltagedirection
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
-\else
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
-\fi
-\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
-\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
-\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
-
-%% Output routine
-\def\pgf@circ@drawcurrent{
- \pgfextra{
- \edef\pgf@circ@ffffff{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- \ifnum\pgfcircmathresult >355
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
-
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@bipole@current@label@where{-90}
- \else
- \def\pgf@circ@bipole@current@label@where{+90}
- \fi
- }
-
- \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
- \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line
- (\tikztostart)--(\tikztotarget)
- \else% normal bipole or source
- \ifpgf@circuit@bipole@current@before
- (\tikztostart)--(anchorstartnode)
- \else
- (anchorendnode)--(\tikztotarget)
- \fi
- \fi
- \ifpgf@circuit@bipole@current@backward
- \pgfextra{
- \pgfmathsubtract{\pgf@circ@ffffff}{180}
- \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- \fi
- coordinate[currarrow,pos=\ctikzvalof{current/distance},rotate=\pgf@circ@ffffff,
- anchor=center](Iarrow)
- (Iarrow.\pgf@circ@bipole@current@label@where)
- node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole current style]
- (\ctikzvalof{bipole/name}current){\pgf@circ@finallabels{current/label}}
-}
-
-%%%---------- close: tex/pgfcirccurrent
-%%%%%%%%%%% Springe nach tex/pgfcircflow
-%%%---------- open: tex/pgfcircflow.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% flow handling
-
-%% styles
-\ctikzset{bipole flow style/.style={}}
-\tikzset{bipole flow style/.code={
- \ctikzset{bipole flow style/.style={#1}}
-}}
-\tikzset{bipole flow append style/.code={
- \ctikzset{bipole flow style/.append style={#1}}
-}}
-
-%% Options
-\ctikzset{f^>/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/curflowrent/y position = above
- }
-}
-
-\ctikzset{f_>/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f>^/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f>_/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f^</.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f_</.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f<^/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f<_/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f</.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = backward} }
-\ctikzset{f_/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = below } }
-\ctikzset{f>/.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = forward } }
-\ctikzset{f^/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = above } }
-
-\ctikzset{f/.code = {
- \pgfkeys{\circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = above }
- \pgfkeys{/tikz/circuitikz/bipole/flow/label/name=#1}
- \ctikzsetvalof{bipole/flow/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}
-}
-
-%% Output routine
-\def\pgf@circ@drawflow{
- \pgfextra{
- \edef\pgf@circ@ffffff{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- \ifnum\pgfcircmathresult >355
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
-
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@bipole@flow@label@where{-90}
- \else
- \def\pgf@circ@bipole@flow@label@where{+90}
- \fi
- }
-
- \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
- \ifx\pgf@circ@temp\pgf@temp%draw flow at a short at middle of the line
- (\tikztostart)--(\tikztotarget)
- \else% normal bipole or source
- \ifpgf@circuit@bipole@flow@before
- (\tikztostart)--(anchorstartnode)
- \else
- (anchorendnode)--(\tikztotarget)
- \fi
- \fi
- \pgfextra{
- \ifpgf@circuit@bipole@flow@backward
- \ifpgf@circuit@bipole@flow@below
- \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \else
- \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \fi
- \pgfmathsubtract{\pgf@circ@ffffff}{180}
- \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \else
- \ifpgf@circuit@bipole@flow@below
- \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \else
- \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \fi
- \fi
- }
- coordinate[flowarrow,pos=\ctikzvalof{flow/distance},rotate=\pgf@circ@ffffff,yshift=\flow@offset, anchor=center](Farrowpos)
- (Farrowpos.\pgf@circ@bipole@flow@label@where) node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole flow style]
- (\ctikzvalof{bipole/name}flow){\pgf@circ@finallabels{flow/label}}
-}
-
-%%%---------- close: tex/pgfcircflow
-
-% notice that the default is nooldvoltagedirection; it's not explicitly set to allow for the warning
-\ExecuteOptions{nofetbodydiode, nofetsolderdot, europeancurrents, europeanvoltages,americanports, americanresistors, cuteinductors ,europeangfsurgearrester, nosiunitx, noarrowmos, smartlabels}
-
-\ProcessOptions\relax
-
-%%%%%%%%%%% Springe nach tex/pgfcircpath
-%%%---------- open: tex/pgfcircpath.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-
-\def\pgf@circ@direction{0.0}
-
-% Names
-\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
-\ctikzset{n/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/name=#1}
-}}
-
-% Reflect the node along
-\ctikzset{mirrored/.is choice}
-\ctikzset{mirror value/.initial=1}
-\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
-\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
-\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
-
-% Invert node along path
-\ctikzset{inverted/.is choice}
-\ctikzset{invert value/.initial=1}
-\ctikzset{inverted/true/.code = {\ctikzsetvalof{invert value}{-1}\pgf@circuit@bipole@invertedtrue}}
-\ctikzset{inverted/false/.code = {\ctikzsetvalof{invert value}{1}\pgf@circuit@bipole@invertedfalse}}
-\ctikzset{invert/.style = {/tikz/circuitikz/inverted=true}}
-\newif\ifpgf@circuit@bipole@inverted
-\ctikzset{bipole/inverted/.is if=pgf@circuit@bipole@inverted}
-
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-
-% Initialize paths
-\def\pgfcircresetpath{
- \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90, ,bipole/annotation/name=, bipole/annotation/position=-90,
- bipole/inverted=false, bipole/kind=,
- bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
- bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
- bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
- bipole/current/y position=above, bipole/current/direction=forward,
- mirrored=false
- }
-}
-
-%% Helper function for path-function to ensure using anchors between nodes
-\def\set@explicit@center@anchor#1{
- \pgfutil@ifundefined{pgf@sh@ns@#1}
- {
- %This coordinate is no node(but a relative position or a coordinate), no further handling needed
- }{
- \pgfutil@in@.{#1}
- \ifpgfutil@in@
- % Anchor is used, do nothing!
- \else%
- \let\tikz@moveto@waiting=\relax
- \pgfpathmoveto{\tikz@last@position}%force movement, because tikz@moveto@waiting
- \edef#1{#1.center}%ensure using center anchor
- \fi
-}
-}
-
-
-%% Generic bipole path
-%% I am not user what the second argument is needed for
-\def\pgf@circ@bipole@path#1#2{
-
- \pgfextra{
- \set@explicit@center@anchor{\tikztostart}
- \set@explicit@center@anchor{\tikztotarget}
- \pgfsyssoftpath@getcurrentpath{\myp@th}%% save current path to extend after calculation of correct start/end coordinates
- \ctikzset{bipole/kind = #1}
- \edef\pgf@temp{\ctikzvalof{bipole/name}}
- \def\pgf@circ@temp{}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = #1\pgf@circ@rand} % create it (re-usage should not create problem, but...)
- \fi
- }
-
- (\tikztostart) coordinate (\ctikzvalof{bipole/name}start)%necessary to get correct coordinates in the case of relative start/end or constructions like ((node1)-|(node2))
- (\tikztotarget) coordinate (\ctikzvalof{bipole/name}end)
- \pgfextra{
- \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \pgfmathround{\pgfmathresult}
- \edef\pgf@circ@direction{\pgfmathresult}%Calculate direction(angle) of path
- \pgfsyssoftpath@setcurrentpath{\myp@th}
- }
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- \else
- --($(\ctikzvalof{bipole/name}start) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}end)$) %ugly workaround to get correct linejoins(node breaks path?)
- \fi
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)%%positio of middle node
- node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}, xscale=\ctikzvalof{invert value}]
- (\ctikzvalof{bipole/name}) {}
- \ifpgf@circuit@bipole@inverted
- \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathend)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathstart)
- \else
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.right)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.left)
- \fi
- \else
- \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathstart)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathend)
- \else
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.left)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.right)
- \fi
- \fi
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- \else
- (\ctikzvalof{bipole/name}start.center) -- (anchorstartnode)
- (anchorendnode) -- (\ctikzvalof{bipole/name}end.center)
- \fi
-
- \drawpoles
- \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabels{label}\fi
- \pgf@circ@ifkeyempty{bipole/annotation/name}\else\pgf@circ@drawlabels{annotation}\fi
- \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
- \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
- \pgf@circ@ifkeyempty{bipole/flow/label/name}\else\pgf@circ@drawflow\fi
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- (\ctikzvalof{bipole/name}end)%Move to end of path
- \else
- ($(\ctikzvalof{bipole/name}end) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}start)$) -- (\ctikzvalof{bipole/name}end)%ugly workaround to get correct linejoins(node breaks path?)
- %tikztostart and tikztotarget could not be used, because it would break if target coordinate is something like (node1-|node2)
-
- \fi
- % reset
- \pgfextra{
- \pgfcircresetpath
- }
- \tikztonodes%draw pending nodes an path
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Handling of terminals
-
-\ctikzset{bipole/nodes/.is family}
-\ctikzset{bipole/nodes/left/.initial=none}
-\ctikzset{bipole/nodes/right/.initial=none}
-\tikzset{bipole nodes/.style n args={2}{%
- \circuitikzbasekey/bipole/nodes/left=#1,
- \circuitikzbasekey/bipole/nodes/right=#2
- }
-}
-
-%% Easily usable styles
-
-\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-
-% rectjoinfill workarounds
-
-\ctikzset{.-/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{.-*/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{.-o/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{.-d/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{-./.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{o-./.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{*-./.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{d-./.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{.-./.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-
-\tikzset{reversed/.style = {\circuitikzbasekey/bipole/inverted=true}}
-
-\def\drawpoles{
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{none}}
- \ifx\pgf@temp\pgf@circ@temp\else(\tikztostart) node[\pgf@circ@temp] {}\fi
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} }
- \ifx\pgf@temp\pgf@circ@temp\else(\tikztotarget) node[\pgf@circ@temp] {}\fi
-}
-
-%% Path definitions
-\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
-\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
-\def\pgf@circ@sresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{thermistor}{#1}\else\pgf@circ@bipole@path{resistivesens}{#1}\fi}
-\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
-\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
-\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
-\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
-\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
-\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
-\def\pgf@circ@capacitivesens@path#1{\pgf@circ@bipole@path{capacitivesens}{#1}}
-\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
-%% polar capacitor is deprectaed, use curved capacitor instead
-\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
-\def\pgf@circ@ccapacitor@path#1{\pgf@circ@bipole@path{ccapacitor}{#1}}
-\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
-\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
-\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
-\def\pgf@circ@batteryone@path#1{\pgf@circ@bipole@path{battery1}{#1}}
-\def\pgf@circ@batterytwo@path#1{\pgf@circ@bipole@path{battery2}{#1}}
-\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
-\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
-\def\pgf@circ@cutechoke@path#1{\pgf@circ@bipole@path{cutechoke}{#1}}
-\def\pgf@circ@inductor@path#1{%
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@europeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@cuteinductor@path{#1}%
- \else%
- \pgf@circ@americaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@vinductor@path#1{
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@veuropeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@vcuteinductor@path{#1}%
- \else%
- \pgf@circ@vamericaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@inductivesens@path#1{%
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@europeaninductivesens@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@cuteinductivesens@path{#1}%
- \else%
- \pgf@circ@americaninductivesens@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
-\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
-\def\pgf@circ@europeaninductivesens@path#1{\pgf@circ@bipole@path{sfullgeneric}{#1}}
-\def\pgf@circ@americaninductivesens@path#1{\pgf@circ@bipole@path{samericaninductor}{#1}}
-\def\pgf@circ@cuteinductivesens@path#1{\pgf@circ@bipole@path{scuteinductor}{#1}}
-\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
-\def\pgf@circ@bulb@path#1{\pgf@circ@bipole@path{bulb}{#1}}
-\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
-\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
-\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
-\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
-\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
-\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
-\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
-\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
-\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
-\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
-\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
-\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
-\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
-\def\pgf@circ@ecsource@path#1{\pgf@circ@bipole@path{ecsource}{#1}}
-\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
-\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
-\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
-\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
-\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
-\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
-\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
-\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
-\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
-\def\pgf@circ@nos@path#1{\pgf@circ@bipole@path{nos}{#1}}
-\def\pgf@circ@ncs@path#1{\pgf@circ@bipole@path{ncs}{#1}}
-\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
-\def\pgf@circ@ncpushbutton@path#1{\pgf@circ@bipole@path{ncpushbutton}{#1}}
-\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
-\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
-\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
-\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
-\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
-\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
-\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
-\def\pgf@circ@oscope@path#1{\pgf@circ@bipole@path{oscope}{#1}}
-\def\pgf@circ@empty@path#1{}
-\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
-\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
-\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
-\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
-\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
-\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
-\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
-\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
-\def\pgf@circ@mstline@path#1{\pgf@circ@bipole@path{mstline}{#1}}
-\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
-\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
-\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
-\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
-\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
-
-\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
-\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
-\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
-
-\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
-\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
-\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
-\def\pgf@circ@bandstop@path#1{\pgf@circ@bipole@path{bandstop}{#1}}
-\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
-\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
-\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
-\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
-\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
-\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
-\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
-\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
-\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
-\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
-\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
-\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
-\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
-\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
-\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
-
-%%Mechanical
-\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
-\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
-\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
-\def\pgf@circ@viscoe@path#1{\pgf@circ@bipole@path{viscoe}{#1}}
-
-%% Styles
-
-\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
-\def\compattikzset#1{\tikzset{\comnpatname#1}}
-
-%\def\ctikzsetbipole#1#2{%
-% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
-%}
-
-\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
-\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
-\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
-\compattikzset{viscoe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@viscoe@path, l=#1}}
-\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
-\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
-\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
-\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
-\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
-\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
-\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
-\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
-\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
-\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
-\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
-\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
-\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
-\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
-\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
-\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-% polar capacitor is deprecated, use curved capacitor instead
-\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
-\compattikzset{curved capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ccapacitor@path, l=#1}}
-\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
-\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
-\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batteryone@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{battery2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batterytwo@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
-\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
-\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
-\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
-\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
-\compattikzset{cute choke/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cutechoke@path, l=#1}}
-\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
-\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
-\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
-\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
-\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
-\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
-\compattikzset{transmission line/.style = {tline = #1}}
-\compattikzset{TL/.style = {tline = #1}}
-\compattikzset{mstline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mstline@path, l=#1}}
-\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{empty controlled source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-
-\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source = #1, \circuitikzbasekey/bipole/is current=true}}
-\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source = #1, \circuitikzbasekey/bipole/is current=true}}
-
-
-\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
-\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
-\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
-\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
-\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
-\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
-\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
-
-\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
-\compattikzset{bulb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bulb@path, l=#1}}
-
-\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
-\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
-\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
-\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
-\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
-
-\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
-\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
-\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
-\compattikzset{bandstop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandstop@path}}
-\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
-\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
-\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
-\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
-\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
-\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
-\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
-\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
-\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
-\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
-\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
-\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
-\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
-\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
-\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
-
-% % % % % %
-% % Begin of Diodes
-% % % % % %
-
-\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
-\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
-\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
-\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
-\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
-\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
-\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
-\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
-\def\pgf@circ@fullbidirectionaldiode@path#1{\pgf@circ@bipole@path{fullbidirectionaldiode}{#1}}
-\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
-\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
-\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
-\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
-\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
-\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
-\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
-\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
-\def\pgf@circ@emptybidirectionaldiode@path#1{\pgf@circ@bipole@path{emptybidirectionaldiode}{#1}}
-
-\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
-\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
-\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
-\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
-\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
-\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
-\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
-\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
-\compattikzset{full bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullbidirectionaldiode@path}}
-\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
-\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
-
-\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{empty bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptybidirectionaldiode@path}}
-\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
-\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
-%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
-
-\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
-\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
-\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
-\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
-\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
-\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
-\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
-\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
-\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
-\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
-\compattikzset{bidirectionaldiode/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
-
-%% Define Shortcuts
-\compattikzset{Do/.style = {\comnpatname empty diode}}
-\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
-\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
-\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
-\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
-\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
-\compattikzset{leDo/.style = {\comnpatname empty led}}
-\compattikzset{VCo/.style = {\comnpatname empty varcap}}
-\compattikzset{biDo/.style = {\comnpatname empty bidirectionaldiode}}
-\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
-\compattikzset{Tro/.style = {\comnpatname empty triac}}
-
-\compattikzset{D*/.style = {\comnpatname full diode}}
-\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
-\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
-\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
-\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
-\compattikzset{pD*/.style = {\comnpatname full photodiode}}
-\compattikzset{leD*/.style = {\comnpatname full led}}
-\compattikzset{VC*/.style = {\comnpatname full varcap}}
-\compattikzset{biD*/.style = {\comnpatname full bidirectionaldiode}}
-\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
-\compattikzset{Tr*/.style = {\comnpatname full triac}}
-
-\compattikzset{D/.style = {\comnpatname diode}}
-\compattikzset{tD/.style = {\comnpatname tunnel diode}}
-\compattikzset{zD/.style = {\comnpatname Zener diode}}
-\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
-\compattikzset{sD/.style = {\comnpatname Schottky diode}}
-\compattikzset{pD/.style = {\comnpatname photodiode}}
-\compattikzset{leD/.style = {\comnpatname led}}
-\compattikzset{VC/.style = {\comnpatname varcap}}
-\compattikzset{biD/.style = {\comnpatname bidirectionaldiode}}
-\compattikzset{Ty/.style = {\comnpatname thyristor}}
-\compattikzset{Tr/.style = {\comnpatname triac}}
-
-\compattikzset{D-/.style = {\comnpatname stroke diode}}
-\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
-\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
-\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
-\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
-\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
-\compattikzset{leD-/.style = {\comnpatname stroke led}}
-\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
-\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
-\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
-\compattikzset{biD-/.style = {\comnpatname empty bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
-
-% % % % % %
-% % End of Diodes
-% % % % % %
-
-
-\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
-\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
-\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
-\compattikzset{ncs/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
-\compattikzset{nos/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
-\compattikzset{normal closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
-\compattikzset{normal open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
-\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
-\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{nopb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{normally open push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{ncpb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
-\compattikzset{normally closed push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
-\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
-
-\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
-\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
-\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
-\tikzset{oscope/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@oscope@path, l=#1}}
-
-% cute switches
-%% closed cute switch
-\def\pgf@circ@cuteclosedswitch@path#1{\pgf@circ@bipole@path{cuteclosedswitch}{#1}}
-\compattikzset{cute closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosedswitch@path, l=#1}}
-\compattikzset{ccsw/.style= {\comnpatname cute closed switch= #1}}
-
-%% open cute switch
-\def\pgf@circ@cuteopenswitch@path#1{\pgf@circ@bipole@path{cuteopenswitch}{#1}}
-\compattikzset{cute open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopenswitch@path, l=#1}}
-\compattikzset{cosw/.style= {\comnpatname cute open switch= #1}}
-
-%% closing cute switch
-\def\pgf@circ@cuteclosingswitch@path#1{\pgf@circ@bipole@path{cuteclosingswitch}{#1}}
-\compattikzset{cute closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosingswitch@path, l=#1}}
-\compattikzset{ccgsw/.style= {\comnpatname cute closing switch= #1}}
-
-%% opening cute switch
-\def\pgf@circ@cuteopeningswitch@path#1{\pgf@circ@bipole@path{cuteopeningswitch}{#1}}
-\compattikzset{cute opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopeningswitch@path, l=#1}}
-\compattikzset{cogsw/.style= {\comnpatname cute opening switch= #1}}
-
-
-% short forms
-\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, l=#1}}
-
-\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path, i=#1}}
-\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosource@path, v=#1}}
-
-\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
-\compattikzset{isource/.style = {\comnpatname current source = #1}}
-\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{ecsource/.style = {\comnpatname empty controlled source = #1}}
-\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
-\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-
-\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-
-\compattikzset{R/.style= {\comnpatname resistor = #1}}
-\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
-\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
-\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
-\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
-\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
-\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
-\compattikzset{C/.style = {\comnpatname capacitor = #1}}
-\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
-%% pC is deprecated, use cC instead
-\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
-\compattikzset{cC/.style = {\comnpatname curved capacitor = #1}}
-\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
-\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
-\compattikzset{L/.style = {\comnpatname inductor = #1}}
-\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
-\compattikzset{V/.style = {\comnpatname voltage source = #1}}
-\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
-\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\def\pgf@temp#1{
- \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
- \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
- \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
- \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-
-%current sources
-\compattikzset{I/.style = {\comnpatname current source = #1}}
-\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\def\pgf@temp#1{
- \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
- \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
- \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
- \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-
-% cute sources
-\def\pgf@circ@vsourceC@path#1{\pgf@circ@bipole@path{vsourceC}{#1}}
-\compattikzset{cute european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{vsourceC/.style= {\comnpatname cute european voltage source= #1}}
-\compattikzset{ceV/.style= {\comnpatname cute european voltage source= #1}}
-
-\def\pgf@circ@isourceC@path#1{\pgf@circ@bipole@path{isourceC}{#1}}
-\compattikzset{cute european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{isourceC/.style= {\comnpatname cute european current source= #1}}
-\compattikzset{ceI/.style= {\comnpatname cute european current source= #1}}
-
-\def\pgf@circ@cvsourceC@path#1{\pgf@circ@bipole@path{cvsourceC}{#1}}
-\compattikzset{cute european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{cvsourceC/.style= {\comnpatname cute european controlled voltage source= #1}}
-\compattikzset{cceV/.style= {\comnpatname cute european controlled voltage source= #1}}
-
-\def\pgf@circ@cisourceC@path#1{\pgf@circ@bipole@path{cisourceC}{#1}}
-\compattikzset{cute european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{cisourceC/.style= {\comnpatname cute european controlled current source= #1}}
-\compattikzset{cceI/.style= {\comnpatname cute european controlled current source= #1}}
-
-% noise sources
-\def\pgf@circ@vsourceN@path#1{\pgf@circ@bipole@path{vsourceN}{#1}}
-\compattikzset{noise voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceN@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{vsourceN/.style= {\comnpatname noise voltage source= #1}}
-\compattikzset{nV/.style= {\comnpatname noise voltage source= #1}}
-
-\def\pgf@circ@isourceN@path#1{\pgf@circ@bipole@path{isourceN}{#1}}
-\compattikzset{noise current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceN@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{isourceN/.style= {\comnpatname noise current source= #1}}
-\compattikzset{nI/.style= {\comnpatname noise current source= #1}}
-
-% resistive sensor american style
-\def\pgf@circ@resistivesens@path#1{\pgf@circ@bipole@path{resistivesens}{#1}}
-\compattikzset{american resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistivesens@path, l=#1}}
-\compattikzset{european resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
-\compattikzset{resistive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@sresistor@path, l=#1}}
-\compattikzset{sR/.style= {\comnpatname resistive sensor= #1}}
-
-\compattikzset{capacitive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitivesens@path, l=#1}}
-\compattikzset{sC/.style= {\comnpatname capacitive sensor= #1}}
-
-\compattikzset{cute inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductivesens@path, l=#1}}
-\compattikzset{european inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductivesens@path, l=#1}}
-\compattikzset{american inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductivesens@path, l=#1}}
-\compattikzset{inductive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductivesens@path, l=#1}}
-\compattikzset{sL/.style= {\comnpatname inductive sensor= #1}}
-
-\compattikzset{Mr/.style = {\comnpatname memristor}}
-
-\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
-\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
-\compattikzset{spst/.style = {\comnpatname switch = #1}}
-
-\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
-
-\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
-\compattikzset{vss/.style = {\comnpatname vee = #1}}
-
-% activate the to-style crossing
-\def\pgf@circ@crossing@path#1{\pgf@circ@bipole@path{crossing}{#1}}
-\compattikzset{crossing/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@crossing@path, l=#1}}
-\compattikzset{xing/.style= {\comnpatname crossing= #1}}
-
-%% loudspeaker and microphone
-
-\def\pgf@circ@loudspeaker@path#1{\pgf@circ@bipole@path{loudspeaker}{#1}}
-\compattikzset{loudspeaker/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@loudspeaker@path, l=#1}}
-
-\def\pgf@circ@mic@path#1{\pgf@circ@bipole@path{mic}{#1}}
-\compattikzset{mic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mic@path, l=#1}}
-
-% more instrument
-\def\pgf@circ@rmeter@path#1{\pgf@circ@bipole@path{rmeter}{#1}}
-\compattikzset{rmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeter@path, l=#1}}
-\def\pgf@circ@rmeterwa@path#1{\pgf@circ@bipole@path{rmeterwa}{#1}}
-\compattikzset{rmeterwa/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeterwa@path, l=#1}}
-\def\pgf@circ@smeter@path#1{\pgf@circ@bipole@path{smeter}{#1}}
-\compattikzset{smeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@smeter@path, l=#1}}
-% current loop probes
-\def\pgf@circ@iloop@path#1{\pgf@circ@bipole@path{iloop}{#1}}
-\compattikzset{iloop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop@path, l=#1}}
-\def\pgf@circ@iloop2@path#1{\pgf@circ@bipole@path{iloop2}{#1}}
-\compattikzset{iloop2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop2@path, l=#1}}
-% qucs-style probes
-\def\pgf@circ@qiprobe@path#1{\pgf@circ@bipole@path{qiprobe}{#1}}
-\compattikzset{qiprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qiprobe@path, l=#1}}
-\def\pgf@circ@qvprobe@path#1{\pgf@circ@bipole@path{qvprobe}{#1}}
-\compattikzset{qvprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qvprobe@path, l=#1}}
-\def\pgf@circ@qpprobe@path#1{\pgf@circ@bipole@path{qpprobe}{#1}}
-\compattikzset{qpprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qpprobe@path, l=#1}}
-% multiwire(s)
-\def\pgf@circ@bmultiwire@path#1{\pgf@circ@bipole@path{bmultiwire}{#1}}
-\compattikzset{bmultiwire/.style = {\circuitikzbasekey,
-/tikz/to path=\pgf@circ@bmultiwire@path, l=#1}}
-\def\pgf@circ@multiwire@path#1{\pgf@circ@bipole@path{multiwire}{#1}}
-\compattikzset{multiwire/.style = {\circuitikzbasekey,
-/tikz/to path=\pgf@circ@multiwire@path, l=#1}}
-
-% reed switches
-\def\pgf@circ@reed@path#1{\pgf@circ@bipole@path{reed}{#1}}
-\compattikzset{reed/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@reed@path, l=#1}}
-
-% Transistor like bipoles
-
-\def\pgf@circ@trans@path#1#2{
- \pgfextra{
- \edef\pgf@temp{\ctikzvalof{bipole/name}}
- \def\pgf@circ@temp{#2}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
- \fi
- }
- \ifpgf@circuit@bipole@inverted
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- \else
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- \fi
- \pgfextra{
- \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \pgfmathadd{\pgfmathresult}{-90}
- \pgfmathround{\pgfmathresult}
- \edef\pgf@circ@direction{\pgfmathresult}
- }
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)
- node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
- (\ctikzvalof{bipole/name}) {}
- node {\ctikzvalof{bipole/label/name}}
- \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
- (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
- \else
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
- (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
- \fi
- \drawpoles
- \pgfextra{
- \pgfcircresetpath
- }
- (\tikztotarget) \tikztonodes % e si continua
-}
-
-
-\def\pgf@circ@definetranspath#1{
- \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
-}
-
-\pgf@circ@definetranspath{elmech}
-\pgf@circ@definetranspath{nmos}
-\pgf@circ@definetranspath{pmos}
-\pgf@circ@definetranspath{hemt}
-\pgf@circ@definetranspath{npn}
-\pgf@circ@definetranspath{pnp}
-\pgf@circ@definetranspath{nfet}
-\pgf@circ@definetranspath{nigfete}
-\pgf@circ@definetranspath{nigfetd}
-\pgf@circ@definetranspath{nigfetebulk}
-\pgf@circ@definetranspath{pfet}
-\pgf@circ@definetranspath{pigfete}
-\pgf@circ@definetranspath{pigfetd}
-\pgf@circ@definetranspath{pigfetebulk}
-\pgf@circ@definetranspath{njfet}
-\pgf@circ@definetranspath{pjfet}
-\pgf@circ@definetranspath{pigbt}
-\pgf@circ@definetranspath{nigbt}
-\pgf@circ@definetranspath{Lpigbt}
-\pgf@circ@definetranspath{Lnigbt}
-%%%---------- close: tex/pgfcircpath
-
-\ifpgf@circ@siunitx
- \RequirePackage{xstring}[2009/03/13]
- %\expandafter\let\csname angstrom\endcsname\relax
- \RequirePackage{siunitx}
-\fi
-
-\ifpgf@circ@explicitvdir\else
- \PackageWarningNoLine{circuitikz}{%
- You did not specify one of the voltage directions:\MessageBreak
- \space\space oldvoltagedirection, nooldvoltagedirection, \MessageBreak
- \space\space RPvoltages or EFvoltages \MessageBreak
- Default directions may have changed, \MessageBreak
- please check the manual%
- }
-\fi
-
-\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
-%override (unused) circuitikz environment for compability to externalization)
-\let\circuitikz\tikzpicture
-\let\endcircuitikz\endtikzpicture
+\input{circuitikz-1.0-body.tex}
-\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.1.2-body.tex b/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.1.2-body.tex
new file mode 100644
index 0000000000..5369be5643
--- /dev/null
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.1.2-body.tex
@@ -0,0 +1,22430 @@
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+\NeedsTeXFormat{LaTeX2e}
+
+\def\pgfcircversion{1.1.2}
+\def\pgfcircversiondate{2020/05/17}
+
+%% Version 3.0 of pgf/TikZ is required
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+%
+% "arrows" library is deprecated, and behave badly with
+% arrows on short paths. Change to the new arrows.meta
+% In pfgcirc.define, we will add the old definition of
+% latex' which we have lost in the transition
+%
+\usetikzlibrary{arrows.meta, bending}
+\usetikzlibrary{fpu} % may be needed for use fpu reciprocal (v1.0.1)
+
+% The options are listed in the manual in this order
+
+\DeclareOption{europeanvoltage}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{straightvoltages}{
+ \pgf@circuit@bipole@voltage@straighttrue
+}
+
+\DeclareOption{americanvoltage}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrent}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrent}{
+ \ctikzset{current = american}
+}
+
+
+
+\DeclareOption{americanresistor}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistor}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductor}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductor}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductor}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanport}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanport}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{european}{
+ \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
+ \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester choice = european}
+}
+
+\DeclareOption{american}{
+ \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester choice = american}
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{fulldiodes}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiodes}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{europeanvoltages}{
+ \ctikzset{voltage=european}
+}
+
+\DeclareOption{americanvoltages}{
+ \ctikzset{voltage=american}
+}
+
+\DeclareOption{europeancurrents}{
+ \ctikzset{current = european}
+}
+
+\DeclareOption{americancurrents}{
+ \ctikzset{current = american}
+}
+
+\DeclareOption{americanresistors}{
+ \ctikzset{resistor = american}
+}
+
+\DeclareOption{europeanresistors}{
+ \ctikzset{resistor = european}
+}
+
+\DeclareOption{americaninductors}{
+ \ctikzset{inductor = american}
+}
+
+\DeclareOption{europeaninductors}{
+ \ctikzset{inductor = european}
+}
+
+\DeclareOption{cuteinductors}{
+ \ctikzset{inductor = cute}
+}
+
+\DeclareOption{americanports}{
+ \ctikzset{logic ports = american}
+}
+
+\DeclareOption{europeanports}{
+ \ctikzset{logic ports = european}
+}
+
+\DeclareOption{americangfsurgearrester}{
+ \ctikzset{gas filled surge arrester choice = american}
+}
+
+\DeclareOption{europeangfsurgearrester}{
+ \ctikzset{gas filled surge arrester choice = european}
+}
+
+\DeclareOption{siunitx}{
+ \pgf@circ@siunitxtrue
+}
+
+\DeclareOption{nosiunitx}{
+ \pgf@circ@siunitxfalse
+}
+
+\DeclareOption{fulldiode}{
+ \ctikzset{diode = full}
+}
+
+\DeclareOption{emptydiode}{
+ \ctikzset{diode = empty}
+}
+
+\DeclareOption{strokediode}{
+ \ctikzset{diode = stroke}
+}
+
+\DeclareOption{arrowmos}{
+ \pgf@circuit@mos@arrowstrue
+}
+
+\DeclareOption{noarrowmos}{
+ \pgf@circuit@mos@arrowsfalse
+}
+
+\DeclareOption{fetbodydiode}{
+ \pgf@circuit@fet@bodydiodetrue
+}
+
+\DeclareOption{nofetbodydiode}{
+ \pgf@circuit@fet@bodydiodefalse
+}
+
+\DeclareOption{fetsolderdot}{
+ \pgf@circuit@fet@solderdottrue
+}
+
+\DeclareOption{nofetsolderdot}{
+ \pgf@circuit@fet@solderdotfalse
+}
+
+\DeclareOption{emptypmoscircle}{
+ \pgf@circuit@pmos@emptycircletrue
+}
+
+
+\DeclareOption{lazymos}{
+ \ctikzset{tripoles/nmos/width=.5}
+ \ctikzset{tripoles/nmos/gate height=.35}
+ \ctikzset{tripoles/nmos/base height=.35}
+ \ctikzset{tripoles/nmos/height/.initial=1.2}
+ \ctikzset{tripoles/nmos/base width=.5}
+ \ctikzset{tripoles/nmos/gate width=.65}
+
+ \ctikzset{tripoles/pmos/width=.5}
+ \ctikzset{tripoles/pmos/gate height=.35}
+ \ctikzset{tripoles/pmos/base height=.35}
+ \ctikzset{tripoles/pmos/height/.initial=1.2}
+ \ctikzset{tripoles/pmos/base width=.5}
+ \ctikzset{tripoles/pmos/gate width=.65}
+
+ \pgf@circuit@pmos@emptycircletrue
+}
+
+\DeclareOption{straightlabels}{
+ \ctikzset{label/align = straight}
+}
+
+\DeclareOption{rotatelabels}{
+ \ctikzset{label/align = rotate}
+}
+
+\DeclareOption{smartlabels}{
+ \ctikzset{label/align = smart}
+}
+
+\DeclareOption{compatibility}{
+ \pgf@circuit@compattrue
+}
+
+\DeclareOption{oldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectiontrue
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriesfalse
+}
+\DeclareOption{nooldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectionfalse
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriesfalse
+}
+
+\DeclareOption{RPvoltages}{
+ \pgf@circ@oldvoltagedirectiontrue
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriestrue
+}
+\DeclareOption{EFvoltages}{
+ \pgf@circ@oldvoltagedirectionfalse
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriestrue
+}
+
+\DeclareOption{legacytransistorstext}{
+ \pgf@circuit@transisors@fixlabelsfalse
+}
+
+\DeclareOption{nolegacytransistorstext}{
+ \pgf@circuit@transisors@fixlabelstrue
+}
+
+\DeclareOption{centertransistorstext}{
+ \pgf@circuit@transisors@fixlabelstrue
+}
+
+\DeclareOption{betterproportions}{
+ \ctikzset{monopoles/ground/width/.initial=.15}
+
+ \ctikzset{bipoles/resistor/height/.initial=.23}
+ \ctikzset{bipoles/resistor/width/.initial=.6}
+ \ctikzset{bipoles/capacitor/height/.initial=.4}
+ \ctikzset{bipoles/capacitor/width/.initial=.1}
+ \ctikzset{bipoles/potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
+ \ctikzset{bipoles/photoresistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistor/main/.initial=.7}
+ \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
+ \ctikzset{bipoles/thermistorptc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorptc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/main/.initial=.7}
+ \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/width/.initial=.6}
+ \ctikzset{bipoles/vresistor/height/.initial=.45}
+ \ctikzset{bipoles/vresistor/width/.initial=.6}
+ \ctikzset{bipoles/generic/height/.initial=.23}
+ \ctikzset{bipoles/generic/width/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/ageneric/height/.initial=.23}
+ \ctikzset{bipoles/ageneric/width/.initial=.6}
+ \ctikzset{bipoles/memristor/height/.initial=.23}
+ \ctikzset{bipoles/memristor/wave height/.initial=.375}
+ \ctikzset{bipoles/memristor/width/.initial=.60}
+ \ctikzset{bipoles/tgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tgeneric/width/.initial=.6}
+ \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
+ \ctikzset{bipoles/fullgeneric/height/.initial=.23}
+ \ctikzset{bipoles/fullgeneric/width/.initial=.6}
+ \ctikzset{bipoles/diode/height/.initial=.3}
+ \ctikzset{bipoles/diode/width/.initial=.25}
+ \ctikzset{bipoles/bidirectionaldiode/height/.initial=.66}
+ \ctikzset{bipoles/bidirectionaldiode/width/.initial=.6}
+ \ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
+ \ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
+
+ \ctikzset{tripoles/thyristor/height/.initial=.66}
+ \ctikzset{tripoles/thyristor/height 2/.initial=.3}
+ \ctikzset{tripoles/thyristor/width/.initial=.6}
+ \ctikzset{tripoles/thyristor/diode height/.initial=.3}
+ \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+ \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+ \ctikzset{tripoles/triac/height/.initial=.66}
+ \ctikzset{tripoles/triac/width/.initial=.6}
+ \ctikzset{tripoles/triac/diode width left/.initial=.3}
+ \ctikzset{tripoles/triac/diode width right/.initial=.3}
+}
+
+% This is a nice hack that prints all the shapes declared
+% by the package. Very useful for coverage testing and debugging.
+%
+% \let\origpgfdeclareshape=\pgfdeclareshape
+% \def\pgfdeclareshape#1{%
+% \typeout{SHAPE:\space"#1"}%
+% \origpgfdeclareshape{#1}
+% }
+
+
+%%%%%%%%%
+%%%%%%%%%%% Springe nach tex/pgfcirc.defines
+%%%---------- open: tex/pgfcirc.defines.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%
+%% Key managements
+
+\long\def\pgf@circ@comment#1{}
+
+\def\circuitikzbasekey{/tikz/circuitikz}
+
+\pgfkeys{\circuitikzbasekey/.is family}
+
+\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
+\let\ctikzset\circuitikzset
+\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
+\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
+
+%% Temporary Counters
+
+\newcount\pgf@circ@count@a
+\newcount\pgf@circ@count@b
+\newcount\pgf@circ@count@c
+%%%%%%%%%%%%
+%% Dimensions
+
+% coordinates
+\newdimen\pgf@circ@res@up
+\newdimen\pgf@circ@res@down
+\newdimen\pgf@circ@res@zero
+\newdimen\pgf@circ@res@left
+\newdimen\pgf@circ@res@right
+\newdimen\pgf@circ@res@other
+\newdimen\pgf@circ@res@step
+\newdimen\pgf@circ@res@temp
+% inital thickness
+\newdimen \pgfstartlinewidth
+
+% arrow tips, ported over old arrows library (deprecated)
+% see https://tex.stackexchange.com/questions/234084/latex-arrow-tip-with-arrows-meta-library
+% this was the original definition of latex' tips, renamed to avoid clashes
+%
+\pgfarrowsdeclare{latexslim}{latexslim}
+{
+ \pgfutil@tempdima=0.28pt%
+ \advance\pgfutil@tempdima by.3\pgflinewidth%
+ \pgfarrowsleftextend{+-4\pgfutil@tempdima}
+ \pgfarrowsrightextend{+6\pgfutil@tempdima}
+}
+{
+ \pgfutil@tempdima=0.28pt%
+ \advance\pgfutil@tempdima by.3\pgflinewidth%
+ \pgfpathmoveto{\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
+ \pgfpathcurveto
+ {\pgfqpoint{3.5\pgfutil@tempdima}{.5\pgfutil@tempdima}}
+ {\pgfqpoint{-1\pgfutil@tempdima}{1.5\pgfutil@tempdima}}
+ {\pgfqpoint{-4\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
+ \pgfpathcurveto
+ {\pgfqpoint{-1.5\pgfutil@tempdima}{1\pgfutil@tempdima}}
+ {\pgfqpoint{-1.5\pgfutil@tempdima}{-1\pgfutil@tempdima}}
+ {\pgfqpoint{-4\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
+ \pgfpathcurveto
+ {\pgfqpoint{-1\pgfutil@tempdima}{-1.5\pgfutil@tempdima}}
+ {\pgfqpoint{3.5\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
+ {\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
+ \pgfpathclose
+ \pgfusepathqfill
+}
+
+\pgfarrowsdeclarereversed{latexslim reversed}{latexslim reversed}{latexslim}{latexslim}
+
+\def\pgf@circ@setifdefinedfill#1#2{%
+ % if \ctikzclass is defined and \ctikzclass/fill is defined and is not none:
+ % set the fill color and execute \pgfusepath{#1}, else execute \pgfusepath{#2}
+ \ifdefined\ctikzclass
+ \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/fill}%
+ {% yes, it's defined
+ \edef\@@tmp{\ctikzvalof{\ctikzclass/fill}}\edef\@@none{none}%
+ \ifx\@@tmp\@@none % but it's none
+ \pgfusepath{#2}%
+ \else
+ \pgfsetfillcolor{\@@tmp}%
+ \pgfusepath{#1}%
+ \fi
+ }{% the class is defined but the fill key not; use #2
+ \pgfusepath{#2}%
+ }
+ \else
+ \pgfusepath{#2}%
+ \fi
+}
+
+%% Macro to fill or draw
+
+\def\pgf@circ@draworfill{%
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgf@circ@setifdefinedfill{draw,fill}{draw}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{draw, fill}
+ \fi
+}
+
+\def\pgf@circ@draworfillandclip{%
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgf@circ@setifdefinedfill{draw, clip, fill}{draw, clip}
+ \pgfusepath{draw, clip}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{draw, clip, fill}
+ \fi
+}
+
+\def\pgf@circ@maybefill{%
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgf@circ@setifdefinedfill{fill}{discard}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{fill}
+ \fi
+}
+
+%% Macros for setting linewidth
+% #1 is the legacy class (bipoles, tripoles) etc
+% #2 is the reference linewidth
+\def\pgf@circ@setlinewidth#1#2{%
+ \ifdefined\ctikzclass
+ \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/thickness}%
+ {% yes, it's defined
+ \edef\@@tmp{\ctikzvalof{\ctikzclass/thickness}}\edef\@@none{none}%
+ \ifx\@@tmp\@@none % but it's none
+ \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}% passthrough legacy class
+ \else
+ \pgfsetlinewidth{\@@tmp #2}%
+ \fi
+ }{ % key not defined, do the legacy thing
+ \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
+ }% Ok, do nothing
+ \else % no class
+ \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
+ \fi
+}
+% use \pgf@circ@setlinewidth{none}{\pgflinewidth} if there is no legacy case
+\ctikzset{none/thickness/.initial=1.0} % do not touch
+
+%% font changes compatible with plain/LaTeX/ConTeXt
+%% thanks to Henri Menke https://github.com/circuitikz/circuitikz/issues/285#issuecomment-537224605
+
+\ifpgfutil@format@is@latex
+ \long\def\pgf@circ@font@tiny{\tiny}
+ \long\def\pgf@circ@font@small{\small}
+ \long\def\pgf@circ@font@bold{\textbf}
+ \long\def\pgf@circ@font@boldmath{\boldmath}
+ \long\def\pgf@circ@font@sixbm{\fontsize{6}{7}\selectfont\boldmath}
+ \long\def\pgf@circ@font@tenbm{\fontsize{10}{12}\selectfont\boldmath}
+ \long\def\pgf@circ@font@twelve{\fontsize{12}{14}\selectfont}
+\else\ifpgfutil@format@is@plain
+ \long\def\pgf@circ@font@tiny{\fiverm}
+ \long\def\pgf@circ@font@small{\sevenrm}
+ \long\def\pgf@circ@font@bold#1{{\bf#1}}
+ \long\def\pgf@circ@font@boldmath{\bf} % to be tested
+ \long\def\pgf@circ@font@sixbm{\sevenrm\bf} %
+ \long\def\pgf@circ@font@tenbm{\tenrm\bf} %
+ \long\def\pgf@circ@font@twelve{\twelverm} %
+\else\ifpgfutil@format@is@context
+ \long\def\pgf@circ@font@tiny{\tfxx}
+ \long\def\pgf@circ@font@small{\tfx}
+ \long\def\pgf@circ@font@bold{\bold}
+ \long\def\pgf@circ@font@boldmath{\bold} % to be tested
+ \long\def\pgf@circ@font@sixbm{\tfx\bold} %
+ \long\def\pgf@circ@font@tenbm{\normal\bold}%
+ \long\def\pgf@circ@font@twelve{\tfa} %
+\fi\fi\fi
+
+
+%
+% Thanks to Phelype Oleinik https://tex.stackexchange.com/a/520806/38080
+%
+% this is needed to avoid problems with \ConTeXt
+\ifcsname normalunexpanded\endcsname
+ \let\pgfcircutil@unexpanded\normalunexpanded
+\else
+ \let\pgfcircutil@unexpanded\unexpanded
+\fi
+% minimally expand a pgfkey to check if it's {}/undefined or filled.
+\def\unexpandedvalueof#1{%
+ \pgfcircutil@unexpanded\expandafter\expandafter
+ \expandafter\pgf@circ@valueof@chk\pgfkeysvalueof{#1}}
+\def\pgf@circ@valueof@chk#1{%
+ \ifx\relax#1%
+ \expandafter\pgfutil@firstoftwo
+ \else
+ \expandafter\pgfutil@secondoftwo
+ \fi
+ {{}}% #1 is \relax, so consider empty
+ {\expandafter{#1}}% otherwise, leave the key after one more expansion
+}%
+%
+% text position (added with ieeestd logic ports. Maybe to be extended to other components,
+% like amplifiers)
+%
+\newif\ifpgf@circ@center@text\pgf@circ@center@texttrue
+\tikzset{component text/.is choice}%
+\tikzset{component text/center/.code={\pgf@circ@center@texttrue}}%
+\tikzset{component text/left/.code={\pgf@circ@center@textfalse}}%
+\ctikzset{component text/.is choice}%
+\ctikzset{component text/center/.code={\pgf@circ@center@texttrue}}%
+\ctikzset{component text/left/.code={\pgf@circ@center@textfalse}}%
+\ctikzset{left text distance/.initial=0.3em}%
+
+% voltage options
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circuit@compat
+\newif\ifpgf@circ@oldvoltagedirection % default false
+\newif\ifpgf@circ@explicitvdir
+\newif\ifpgf@circ@fixbatteries
+
+\ctikzset{voltage dir/.is choice}
+\ctikzset{voltage dir/old/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriesfalse}}
+\ctikzset{voltage dir/noold/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriesfalse}}
+\ctikzset{voltage dir/RP/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriestrue}}
+\ctikzset{voltage dir/EF/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriestrue}}
+\tikzset{voltage dir/.style={circuitikz/voltage dir=#1}}
+
+% Option ">" for twoports
+\newif\ifpgf@circuit@inputarrow
+\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/.is choice}
+\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
+
+% Option "boxed" for nodes and twoports
+\newif\ifpgf@circuit@boxed
+\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
+
+% Option "dashed" for nodes and twoports
+\newif\ifpgf@circuit@dashed
+\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
+\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}
+
+% Option "t=*" for nodes
+\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
+
+\ctikzset{current arrow scale/.initial=16}
+
+\ctikzset{bipoles/.is family}
+\ctikzset{bipoles/border margin/.initial=1.1}
+\ctikzset{bipoles/thickness/.initial=2}
+\ctikzset{tripoles/thickness/.initial=2}
+\ctikzset{quadpoles/thickness/.initial=2}
+\ctikzset{nodes width/.initial=.04}
+
+% Base len for all circuitikz
+\newdimen\pgf@circ@Rlen
+% scaled length for internal use in scalable shapes
+\newdimen\pgf@circ@scaled@Rlen
+\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}}
+\pgf@circ@Rlen = 1.4cm
+% by default scale is 1.0
+\pgf@circ@scaled@Rlen=\pgf@circ@Rlen
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% main style definitions
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+% load a style file: search ctikzstyle-NAME.tex in path
+\def\ctikzloadstyle#1{%
+ \pgfutil@InputIfFileExists{ctikzstyle-#1}{}{%
+ \tikzerror{I did not find the circuitikz style #1}}%
+}
+
+% load and enact a style
+\def\ctikzsetstyle#1{%
+ \ctikzloadstyle{#1}%
+ \tikzset{#1 circuit style}%
+}
+
+% global style parameters
+\ctikzset{default/scale/.initial=1.0} % do not touch
+\ctikzset{default/fill/.initial=none} % do not touch
+\ctikzset{default/thickness/.initial=none} % do not touch
+% default is use as the generic default style for bipoles
+
+% mostly bipoles:
+
+\ctikzset{resistors/scale/.initial=1.0}
+\ctikzset{resistors/fill/.initial=none}
+\ctikzset{resistors/thickness/.initial=none}
+
+\ctikzset{capacitors/scale/.initial=1.0}
+\ctikzset{capacitors/fill/.initial=none}
+\ctikzset{capacitors/thickness/.initial=none}
+
+\ctikzset{inductors/scale/.initial=1.0}
+\ctikzset{inductors/fill/.initial=none}
+\ctikzset{inductors/thickness/.initial=none}
+
+\ctikzset{diodes/scale/.initial=1.0}
+\ctikzset{diodes/fill/.initial=none}
+\ctikzset{diodes/thickness/.initial=none}
+
+\ctikzset{batteries/scale/.initial=1.0}
+\ctikzset{batteries/fill/.initial=none}
+\ctikzset{batteries/thickness/.initial=none}
+
+\ctikzset{sources/scale/.initial=1.0}
+\ctikzset{sources/fill/.initial=none}
+\ctikzset{sources/thickness/.initial=none}
+
+\ctikzset{csources/scale/.initial=1.0}
+\ctikzset{csources/fill/.initial=none}
+\ctikzset{csources/thickness/.initial=none}
+
+\ctikzset{instruments/scale/.initial=1.0}
+\ctikzset{instruments/fill/.initial=none}
+\ctikzset{instruments/thickness/.initial=none}
+
+\ctikzset{mechanicals/scale/.initial=1.0}
+\ctikzset{mechanicals/fill/.initial=none}
+\ctikzset{mechanicals/thickness/.initial=none}
+
+\ctikzset{misc/scale/.initial=1.0}
+\ctikzset{misc/fill/.initial=none}
+\ctikzset{misc/thickness/.initial=none}
+
+\ctikzset{blocks/scale/.initial=1.0}
+\ctikzset{blocks/fill/.initial=none}
+\ctikzset{blocks/thickness/.initial=none}
+
+% mostly nodes
+
+\ctikzset{grounds/scale/.initial=1.0}
+\ctikzset{grounds/fill/.initial=none}
+\ctikzset{grounds/thickness/.initial=none}
+
+\ctikzset{power supplies/scale/.initial=1.0}
+\ctikzset{power supplies/fill/.initial=none}
+\ctikzset{power supplies/thickness/.initial=none}
+
+\ctikzset{transistors/scale/.initial=1.0}
+\ctikzset{transistors/fill/.initial=none}
+\ctikzset{transistors/thickness/.initial=none}
+
+\ctikzset{tubes/scale/.initial=1.0}
+\ctikzset{tubes/fill/.initial=none}
+\ctikzset{tubes/thickness/.initial=none}
+
+\ctikzset{RF/scale/.initial=1.0}
+\ctikzset{RF/fill/.initial=none}
+\ctikzset{RF/thickness/.initial=none}
+
+\ctikzset{electromechanicals/scale/.initial=1.0}
+\ctikzset{electromechanicals/fill/.initial=none}
+\ctikzset{electromechanicals/thickness/.initial=none}
+
+% transformers go with inductors
+\ctikzset{amplifiers/scale/.initial=1.0}
+\ctikzset{amplifiers/fill/.initial=none}
+\ctikzset{amplifiers/thickness/.initial=none}
+
+\ctikzset{switches/scale/.initial=1.0}
+\ctikzset{switches/fill/.initial=none}
+\ctikzset{switches/thickness/.initial=none}
+
+\ctikzset{logic ports/scale/.initial=1.0}
+\ctikzset{logic ports/fill/.initial=none}
+\ctikzset{logic ports/thickness/.initial=none}
+
+\ctikzset{flipflops/scale/.initial=1.0}
+\ctikzset{flipflops/fill/.initial=none}
+\ctikzset{flipflops/thickness/.initial=none}
+
+\ctikzset{muxdemuxes/scale/.initial=1.0}
+\ctikzset{muxdemuxes/fill/.initial=none}
+\ctikzset{muxdemuxes/thickness/.initial=none}
+
+\ctikzset{chips/scale/.initial=1.0}
+\ctikzset{chips/fill/.initial=none}
+\ctikzset{chips/thickness/.initial=none}
+
+\ctikzset{displays/scale/.initial=1.0}
+\ctikzset{displays/fill/.initial=none}
+\ctikzset{displays/thickness/.initial=none}
+
+% grounds and power supplies
+
+\ctikzset{monopoles/.is family}
+\ctikzset{monopoles/ground/width/.initial=.25}
+\ctikzset{monopoles/ground/connectionthickness/.initial=1}
+\ctikzset{monopoles/ground/thickness/.initial=2}
+\ctikzset{monopoles/rground/thickness/.initial=2}
+\ctikzset{monopoles/tground/thickness/.initial=3}
+\ctikzset{monopoles/vcc/width/.initial=.2}
+\ctikzset{monopoles/vcc/arrow/.initial=legacy}
+\ctikzset{monopoles/vee/arrow/.initial=legacy}
+\ctikzset{monopoles/match/width/.initial=.4}
+\ctikzset{monopoles/chassis/width/.initial=.25}
+\ctikzset{monopoles/alternative chassis/width/.initial=.25}
+\ctikzset{monopoles/equipotentiality/width/.initial=.25}
+\ctikzset{monopoles/antenna/width/.initial=.25}
+\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/width/.initial=.25}
+\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/rxantenna/width/.initial=.25}
+\ctikzset{monopoles/bareantenna/width/.initial=.25}
+\ctikzset{monopoles/bareantenna/label/xanchor/.initial=1}
+\ctikzset{monopoles/bareantenna/label/yanchor/.initial=0.5}
+\ctikzset{monopoles/waves/width/.initial=0.5}
+
+% microstrips
+\ctikzset{bipoles/mstline/height/.initial=0.3}
+\ctikzset{bipoles/mstline/width/.initial=1.2}
+\pgfkeys{/tikz/mstlinelen/.add code={}{\ctikzset{bipoles/mstline/width=#1}}}
+\ctikzset{monopoles/msport/width/.initial=.5}
+\ctikzset{monopoles/msrstub/height/.initial=1.0}
+\ctikzset{monopoles/msrstub/width/.initial=0.6}
+
+% microphone and loudspeaker
+\ctikzset{bipoles/loudspeaker/height/.initial=.8}
+\ctikzset{bipoles/loudspeaker/depth/.initial=.3}
+\ctikzset{bipoles/loudspeaker/width/.initial=.8}
+\ctikzset{bipoles/mic/height/.initial=1.2}
+\ctikzset{bipoles/mic/depth/.initial=.0}
+\ctikzset{bipoles/mic/width/.initial=.8}
+
+% Zig Zag resistors
+\ctikzset{resistors/zigs/.initial=3}
+\ctikzset{resistors/width/.code={%
+ \ctikzset{bipoles/resistor/width=#1}%
+ \ctikzset{bipoles/vresistor/width=#1}%
+ \ctikzset{bipoles/potentiometer/width=#1}%
+ \ctikzset{bipoles/resistivesens/width=#1}%
+ \ctikzset{bipoles/photoresistor/width=#1}%
+ \ctikzset{bipoles/thermistor/width=#1}%
+ \ctikzset{bipoles/thermistorntc/width=#1}%
+ \ctikzset{bipoles/thermistorptc/width=#1}%
+ \ctikzset{bipoles/varistor/width=#1}%
+ \ctikzset{bipoles/generic/width=#1}%
+ \ctikzset{bipoles/generic potentiometer/width=#1}%
+ \ctikzset{bipoles/ageneric/width=#1}%
+ \ctikzset{bipoles/tgeneric/width=#1}%
+}}
+\ctikzset{wiper pos/.code={%
+ \ctikzset{bipoles/potentiometer/wiper pos=#1}%
+ \ctikzset{bipoles/generic potentiometer/wiper pos=#1}%
+}}
+% zigzag resistor
+\ctikzset{bipoles/resistor/height/.initial=.3}
+\ctikzset{bipoles/resistor/width/.initial=.8}
+\ctikzset{bipoles/potentiometer/height/.initial=.8}
+\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
+\ctikzset{bipoles/potentiometer/width/.initial=.8}
+\ctikzset{bipoles/potentiometer/wiper pos/.initial=.5}
+\ctikzset{bipoles/vresistor/height/.initial=.6}
+\ctikzset{bipoles/vresistor/width/.initial=.8}
+\ctikzset{bipoles/resistivesens/height/.initial=.6}
+\ctikzset{bipoles/resistivesens/width/.initial=.8}
+% square resistors
+\ctikzset{bipoles/photoresistor/height/.initial=.6}
+\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
+\ctikzset{bipoles/photoresistor/width/.initial=.8}
+\ctikzset{bipoles/thermistor/main/.initial=.7}
+\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/width/.initial=.8}
+\ctikzset{bipoles/thermistorntc/main/.initial=.7}
+\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistorptc/width/.initial=.8}
+\ctikzset{bipoles/thermistorptc/main/.initial=.7}
+\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistor/width/.initial=.8}
+\ctikzset{bipoles/varistor/main/.initial=.7}
+\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/varistor/width/.initial=.8}
+\ctikzset{bipoles/generic/height/.initial=.30}
+\ctikzset{bipoles/generic/width/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
+\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/wiper pos/.initial=.5}
+\ctikzset{bipoles/ageneric/height/.initial=.30}
+\ctikzset{bipoles/tgeneric/height/.initial=.70}
+\ctikzset{bipoles/tgeneric/width/.initial=.80}
+\ctikzset{bipoles/ageneric/width/.initial=.80}
+
+%% Capacitors
+\ctikzset{bipoles/capacitor/height/.initial=.6}
+\ctikzset{bipoles/capacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/height/.initial=.5}
+\ctikzset{bipoles/ecapacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/font/.initial=\pgf@circ@font@sixbm}
+%%% pcapacitor is deprecated
+\ctikzset{bipoles/pcapacitor/height/.initial=.6}
+\ctikzset{bipoles/pcapacitor/width/.initial=.2}
+\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
+\ctikzset{bipoles/ccapacitor/height/.initial=.6}
+\ctikzset{bipoles/ccapacitor/width/.initial=.12}
+\ctikzset{bipoles/ccapacitor/bend width/.initial=1.1}
+\ctikzset{bipoles/vcapacitor/height/.initial=.6}
+\ctikzset{bipoles/vcapacitor/width/.initial=.5}
+\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
+\ctikzset{bipoles/piezoelectric/height/.initial=.7}
+\ctikzset{bipoles/piezoelectric/width/.initial=.5}
+
+% Inductors
+\ctikzset{inductors/coils/.code={%
+ \ctikzset{bipoles/cuteinductor/coils=#1}%
+ \ctikzset{bipoles/cutechoke/coils=#1}%
+ \ctikzset{bipoles/americaninductor/coils=#1}%
+ \ctikzset{bipoles/vcuteinductor/coils=#1}%
+ \ctikzset{bipoles/vamericaninductor/coils=#1}%
+}}
+\ctikzset{inductors/width/.code={%
+ \ctikzset{bipoles/cuteinductor/width=#1}%
+ \ctikzset{bipoles/cutechoke/width=#1}%
+ \ctikzset{bipoles/americaninductor/width=#1}%
+ \ctikzset{bipoles/vcuteinductor/width=#1}%
+ \ctikzset{bipoles/vamericaninductor/width=#1}%
+ \ctikzset{bipoles/fullgeneric/width=#1}%
+ \ctikzset{bipoles/tfullgeneric/width=#1}%
+}}
+\ctikzset{bipoles/cuteinductor/height/.initial=.3}
+\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
+\ctikzset{bipoles/cuteinductor/width/.initial=.6}
+\ctikzset{bipoles/cuteinductor/coils/.initial=5}
+\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+%% Cute choke settings
+\ctikzset{bipoles/cutechoke/height/.initial=.3}
+\ctikzset{bipoles/cutechoke/lower coil height/.initial=.15}
+\ctikzset{bipoles/cutechoke/width/.initial=.6}
+\ctikzset{bipoles/cutechoke/coils/.initial=5}
+\ctikzset{bipoles/cutechoke/coil aspect/.initial=.5}%percentage of choke width, which is covered by lower coil
+\ctikzset{bipoles/cutechoke/cstep/.initial=.3}
+\ctikzset{bipoles/cutechoke/cdist/.initial=1.3}
+\ctikzset{bipoles/cutechoke/cthick/.initial=1}
+\newif\ifpgf@circuit@bipole@twolineschoke
+\pgf@circuit@bipole@twolineschokefalse
+\pgfkeys{/tikz/onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
+\ctikzset{onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
+\pgfkeys{/tikz/twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
+\ctikzset{twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
+%
+\ctikzset{bipoles/americaninductor/height/.initial=.3}
+\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
+\ctikzset{bipoles/americaninductor/width/.initial=.8}
+\ctikzset{bipoles/americaninductor/coils/.initial=4}
+\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
+\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
+\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
+\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
+\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
+\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
+\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
+\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
+\ctikzset{bipoles/fullgeneric/height/.initial=.30}
+\ctikzset{bipoles/fullgeneric/width/.initial=.80}
+
+% Sources
+
+\ctikzset{bipoles/esource/height/.initial=.60}
+\ctikzset{bipoles/esource/width/.initial=.60}
+\ctikzset{bipoles/pvsource/height/.initial=.60}
+\ctikzset{bipoles/pvsource/width/.initial=.60}
+\ctikzset{bipoles/isource/height/.initial=.60}
+\ctikzset{bipoles/isource/width/.initial=.60}
+\ctikzset{bipoles/oosource/height/.initial=.60}
+\ctikzset{bipoles/oosource/width/.initial=.60}
+\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/dcisource/angle/.initial=80}
+\ctikzset{bipoles/dcisource/height/.initial=.60}
+\ctikzset{bipoles/dcisource/width/.initial=.60}
+\ctikzset{bipoles/dcvsource/height/.initial=.60}
+\ctikzset{bipoles/dcvsource/width/.initial=.60}
+\ctikzset{bipoles/vsourcetri/height/.initial=.60}
+\ctikzset{bipoles/vsourcetri/width/.initial=.60}
+\ctikzset{bipoles/isourceam/height/.initial=.60}
+\ctikzset{bipoles/isourceam/width/.initial=.60}
+\ctikzset{bipoles/vsource/height/.initial=.60}
+\ctikzset{bipoles/vsource/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/height/.initial=.60}
+\ctikzset{bipoles/vsourceam/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/margin/.initial=.7}
+\ctikzset{bipoles/isourcesin/height/.initial=.60}
+\ctikzset{bipoles/isourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesin/height/.initial=.60}
+\ctikzset{bipoles/vsourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
+\ctikzset{bipoles/cisource/height/.initial=.7}
+\ctikzset{bipoles/cisource/width/.initial=.7}
+\ctikzset{bipoles/cisourceam/height/.initial=.7}
+\ctikzset{bipoles/cisourceam/width/.initial=.7}
+\ctikzset{bipoles/ecsource/height/.initial=.7}
+\ctikzset{bipoles/ecsource/width/.initial=.7}
+\ctikzset{bipoles/cvsource/height/.initial=.7}
+\ctikzset{bipoles/cvsource/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/height/.initial=.7}
+\ctikzset{bipoles/cvsourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
+\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
+\ctikzset{bipoles/cisourcesin/width/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
+\ctikzset{bipoles/battery/height/.initial=.6}
+\ctikzset{bipoles/battery/width/.initial=.3}
+\ctikzset{bipoles/battery1/height/.initial=.6}
+\ctikzset{bipoles/battery1/width/.initial=.3}
+\ctikzset{bipoles/battery2/height/.initial=.6}
+\ctikzset{bipoles/battery2/width/.initial=.3}
+
+% % % ootransformer
+\ctikzset{bipoles/oosourcetrans/height/.initial=.6}
+\ctikzset{bipoles/oosourcetrans/width/.initial=.6}
+\ctikzset{bipoles/oosourcetrans/circlesize/.initial=.6}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/oosourcetrans/circleoffset/.initial=.4}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/oosourcetrans/vectorgroupscale/.initial=1}
+
+% % % oootransformer
+\ctikzset{bipoles/ooosource/height/.initial=.6}
+\ctikzset{bipoles/ooosource/circlesize/.initial=.55}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/ooosource/circleoffset/.initial=.45}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/ooosource/vectorgroupscale/.initial=1}
+
+% % % primary windings
+\newif\ifpgf@circ@prim@delta
+\newif\ifpgf@circ@prim@wye
+\newif\ifpgf@circ@prim@zig
+\pgfkeys{tikz/prim/.is choice}
+\pgfkeys{tikz/prim/delta/.add code={}{\pgf@circ@prim@deltatrue}}
+\pgfkeys{tikz/prim/wye/.add code={}{\pgf@circ@prim@wyetrue}}
+\pgfkeys{tikz/prim/zig/.add code={}{\pgf@circ@prim@zigtrue}}
+
+% % % secondary windings
+\newif\ifpgf@circ@sec@delta
+\newif\ifpgf@circ@sec@wye
+\newif\ifpgf@circ@sec@zig
+\pgfkeys{tikz/sec/.is choice}
+\pgfkeys{tikz/sec/delta/.add code={}{\pgf@circ@sec@deltatrue}}
+\pgfkeys{tikz/sec/wye/.add code={}{\pgf@circ@sec@wyetrue}}
+\pgfkeys{tikz/sec/zig/.add code={}{\pgf@circ@sec@zigtrue}}
+
+% % % tertiary windings (ooosource)
+\newif\ifpgf@circ@tert@delta
+\newif\ifpgf@circ@tert@wye
+\newif\ifpgf@circ@tert@zig
+\pgfkeys{tikz/tert/.is choice}
+\pgfkeys{tikz/tert/delta/.add code={}{\pgf@circ@tert@deltatrue}}
+\pgfkeys{tikz/tert/wye/.add code={}{\pgf@circ@tert@wyetrue}}
+\pgfkeys{tikz/tert/zig/.add code={}{\pgf@circ@tert@zigtrue}}
+
+% diodes
+
+\ctikzset{bipoles/diode/height/.initial=.50}
+\ctikzset{bipoles/diode/width/.initial=.40}
+\ctikzset{bipoles/bidirectionaldiode/height/.initial=1.1}
+\ctikzset{bipoles/bidirectionaldiode/width/.initial=1}
+\ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
+\ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
+\ctikzset{bipoles/varcap/height/.initial=.50}
+\ctikzset{bipoles/varcap/width/.initial=.45}
+
+% switches
+
+\ctikzset{bipoles/spst/height/.initial=.35}
+\ctikzset{bipoles/spst/width/.initial=.35}
+\ctikzset{bipoles/spst/depth/.initial=.2}
+\ctikzset{bipoles/nos/height/.initial=.3}
+\ctikzset{bipoles/nos/width/.initial=.35}
+\ctikzset{bipoles/nos/depth/.initial=.2}
+\ctikzset{bipoles/ncs/height/.initial=.35}
+\ctikzset{bipoles/ncs/width/.initial=.35}
+\ctikzset{bipoles/ncs/depth/.initial=.2}
+%%% reed switch
+\ctikzset{bipoles/reed/height/.initial=.4}
+\ctikzset{bipoles/reed/width/.initial=.8}% 0.35 in nos
+\ctikzset{bipoles/reed/depth/.initial=.4}
+
+% misc
+
+\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
+\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
+\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
+\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
+\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
+\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
+\ctikzset{bipoles/fuse/height/.initial=.20}
+\ctikzset{bipoles/fuse/width/.initial=.50}
+\ctikzset{bipoles/afuse/height/.initial=.20}
+\ctikzset{bipoles/afuse/width/.initial=.50}
+\ctikzset{bipoles/memristor/height/.initial=.30}
+\ctikzset{bipoles/memristor/wave height/.initial=.5}
+\ctikzset{bipoles/memristor/width/.initial=.80}
+\ctikzset{bipoles/open/height/.initial=.3} %necessary for curly voltages
+\ctikzset{bipoles/open/width/.initial=.3} %necessary for curly voltages
+\ctikzset{bipoles/open/voltage/straight label distance/.initial=0}
+\ctikzset{bipoles/open/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/short/height/.initial=0} %dummy height for voltage positioning
+\ctikzset{bipoles/short/width/.initial=0} %dummy width for voltage positioning
+%\ctikzset{bipoles/short/voltage/straight label distance/.initial=.2}
+%\ctikzset{bipoles/short/voltage/distance from node/.initial=.5}
+% multiwire
+\ctikzset{bipoles/multiwire/height/.initial=0.4}
+\ctikzset{bipoles/multiwire/width/.initial=0.2}
+\ctikzset{bipoles/multiwire/spacing/.initial=0.05}
+
+\ctikzset{bipoles/ammeter/height/.initial=.60}
+\ctikzset{bipoles/ammeter/width/.initial=.60}
+\ctikzset{bipoles/ohmmeter/height/.initial=.60}
+\ctikzset{bipoles/ohmmeter/width/.initial=.60}
+\ctikzset{bipoles/voltmeter/height/.initial=.60}
+\ctikzset{bipoles/voltmeter/width/.initial=.60}
+\ctikzset{bipoles/smeter/height/.initial=.60}
+\ctikzset{bipoles/smeter/width/.initial=.60}
+\ctikzset{bipoles/smeter/voltage/additional label shift/.initial=1}
+\ctikzset{bipoles/qmeter/depth/.initial=.40}
+\ctikzset{bipoles/qmeter/height/.initial=.80}
+\ctikzset{bipoles/qmeter/width/.initial=.60}
+% this must be specified for each one
+\ctikzset{bipoles/qvprobe/voltage/additional label shift/.initial=.5}
+\ctikzset{bipoles/qiprobe/voltage/additional label shift/.initial=.5}
+\ctikzset{bipoles/qpprobe/voltage/additional label shift/.initial=.5}
+\ctikzset{bipoles/iloop/width/.initial=.40}
+\ctikzset{bipoles/iloop/height/.initial=.60}
+
+\ctikzset{bipoles/oscope/height/.initial=.60}
+\ctikzset{bipoles/oscope/width/.initial=.60}
+\ctikzset{bipoles/oscope/voltage/additional label shift/.initial=1}
+
+
+% option to not rotate the new (Romano's) instruments
+\newif\ifpgf@circuit@straightinstruments\pgf@circuit@straightinstrumentstrue
+\pgfkeys{/tikz/straight instruments/.add code={}{\pgf@circuit@straightinstrumentstrue}}
+\ctikzset{straight instruments/.add code={}{\pgf@circuit@straightinstrumentstrue}}
+\pgfkeys{/tikz/rotated instruments/.add code={}{\pgf@circuit@straightinstrumentsfalse}}
+\ctikzset{rotated instruments/.add code={}{\pgf@circuit@straightinstrumentsfalse}}
+
+
+\ctikzset{bipoles/buffer/height/.initial=1}
+\ctikzset{bipoles/buffer/width/.initial=1}
+\ctikzset{bipoles/not port/width/.initial=1}
+\ctikzset{bipoles/not port/height/.initial=.8}
+\ctikzset{bipoles/not port/circle width/.initial=.15}
+\ctikzset{bipoles/lamp/height/.initial=.60}
+\ctikzset{bipoles/lamp/width/.initial=.60}
+\ctikzset{bipoles/bulb/height/.initial=.8}
+\ctikzset{bipoles/bulb/width/.initial=.8}
+\ctikzset{bipoles/tline/height/.initial=.3}
+\ctikzset{bipoles/tline/width/.initial=.8}
+\ctikzset{bipoles/squid/height/.initial=.60}
+\ctikzset{bipoles/squid/width/.initial=.60}
+\ctikzset{bipoles/barrier/height/.initial=.60}
+\ctikzset{bipoles/barrier/width/.initial=.60}
+\ctikzset{bipoles/openbarrier/gap/.initial=0.5}
+\ctikzset{bipoles/thermocouple/height/.initial=.250}
+\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
+\ctikzset{bipoles/thermocouple/width/.initial=.140}
+\ctikzset{bipoles/pushbutton/height/.initial=.5}
+\ctikzset{bipoles/pushbutton/height 2/.initial=.2}
+\ctikzset{bipoles/pushbutton/width/.initial=.50}
+
+\ctikzset{bipoles/twoport/width/.initial=.7}
+\ctikzset{bipoles/twoport/height/.initial=.7}
+\ctikzset{bipoles/twoport/text/.initial=}
+\ctikzset{bipoles/vco/width/.initial=.7}
+\ctikzset{bipoles/bandpass/width/.initial=.7}
+\ctikzset{bipoles/bandstop/width/.initial=.7}
+\ctikzset{bipoles/highpass/width/.initial=.7}
+\ctikzset{bipoles/lowpass/width/.initial=.7}
+\ctikzset{bipoles/adc/width/.initial=.7}
+\ctikzset{bipoles/dac/width/.initial=.7}
+\ctikzset{bipoles/dsp/width/.initial=.7}
+\ctikzset{bipoles/fft/width/.initial=.7}
+\ctikzset{bipoles/amp/width/.initial=.7}
+\ctikzset{bipoles/vamp/width/.initial=.7}
+\ctikzset{bipoles/piattenuator/width/.initial=.7}
+\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
+\ctikzset{bipoles/tattenuator/width/.initial=.7}
+\ctikzset{bipoles/vtattenuator/width/.initial=.7}
+\ctikzset{bipoles/phaseshifter/width/.initial=.7}
+\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
+\ctikzset{bipoles/detector/width/.initial=.7}
+
+% crossing wires
+\ctikzset{bipoles/crossing/size/.initial=.2}
+
+% Transistors starts here
+
+\newif\ifpgf@circuit@trans@depletiontype
+\pgf@circuit@trans@depletiontypefalse
+
+\newif\ifpgf@circuit@mos@arrows
+\ctikzset{tripoles/mos style/.is choice}
+\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
+\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
+\pgfkeys{/tikz/arrowmos/.add code={}{\pgf@circuit@mos@arrowstrue}}
+\pgfkeys{/tikz/noarrowmos/.add code={}{\pgf@circuit@mos@arrowsfalse}}
+
+% Fixed label positions
+\newif\ifpgf@circuit@transisors@fixlabels
+\pgf@circuit@transisors@fixlabelstrue
+\pgfkeys{/tikz/center transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
+\ctikzset{fix transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
+\pgfkeys{/tikz/legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
+\ctikzset{legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
+
+% Option solderdot for fet
+\newif\ifpgf@circuit@fet@solderdot
+\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+
+% Option bodydiode for fet
+\newif\ifpgf@circuit@fet@bodydiode
+\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+
+% Option draw fet without gate connection
+\newif\ifpgf@circuit@bpt@drawgate
+\pgf@circuit@bpt@drawgatetrue
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+
+% Option draw bpt with schottky base
+\newif\ifpgf@circuit@bpt@schottky
+\pgf@circuit@bpt@schottkyfalse
+\pgfkeys{/tikz/schottky base/.add code={}{\pgf@circuit@bpt@schottkytrue}}
+\ctikzset{schottky base/.add code={}{\pgf@circuit@bpt@schottkytrue}}
+\pgfkeys{/tikz/no schottky base/.add code={}{\pgf@circuit@bpt@schottkyfalse}}
+\ctikzset{no schottky base/.add code={}{\pgf@circuit@bpt@schottkyfalse}}
+\ctikzset{tripoles/schottky base size/.initial=0.07}
+
+% Option draw bpt without base connection
+\newif\ifpgf@circuit@bpt@drawbase
+\pgf@circuit@bpt@drawbasetrue
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+
+% Option draw bpt with optical input
+\newif\ifpgf@circuit@bpt@drawphoto
+\pgf@circuit@bpt@drawphotofalse
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+
+% Option draw fet without bulk connection -- Added by Burak Kelleci
+\newif\ifpgf@circuit@bpt@drawbulk
+\pgfkeys{/tikz/bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
+\ctikzset{bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
+\pgfkeys{/tikz/nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
+\ctikzset{nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
+
+% Option draw pmos with empty circle
+\newif\ifpgf@circuit@pmos@emptycircle
+\pgf@circuit@pmos@emptycirclefalse
+\ctikzset{tripoles/pmos style/.is choice}
+\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+% Option draw pmos with no circle
+\newif\ifpgf@circuit@pmos@nocircle
+\pgf@circuit@pmos@nocirclefalse
+\pgfkeys{/tikz/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
+\ctikzset{tripoles/pmos style/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
+% back to normal
+\pgfkeys{/tikz/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
+\ctikzset{tripoles/pmos style/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
+% arrows at the end, the correct way
+\newif\ifpgf@circuit@trans@arrowatend
+\pgf@circuit@trans@arrowatendfalse
+\ctikzset{transistors/arrow pos/.is choice}
+\ctikzset{transistors/arrow pos/legacy/.code={\pgf@circuit@trans@arrowatendfalse}}
+\ctikzset{transistors/arrow pos/end/.code={\pgf@circuit@trans@arrowatendtrue}}
+
+\newif\ifpgf@circuit@trans@ntype
+\pgf@circuit@trans@ntypetrue %default true
+%\newif\ifpgf@circuit@trans@ptype
+%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
+\ctikzset{tripoles/nmos/width/.initial=.7}
+\ctikzset{tripoles/nmos/gate height/.initial=.35}
+\ctikzset{tripoles/nmos/base height/.initial=.5}
+\ctikzset{tripoles/nmos/conn height/.initial=0}
+\ctikzset{tripoles/nmos/height/.initial=1.1}
+\ctikzset{tripoles/nmos/base width/.initial=.5}
+\ctikzset{tripoles/nmos/gate width/.initial=.62}
+\ctikzset{tripoles/nmos/arrow pos/.initial=.6}
+\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nmos/curr direction/.initial=1}
+
+\ctikzset{tripoles/pmos/width/.initial=.7}
+\ctikzset{tripoles/pmos/gate height/.initial=.35}
+\ctikzset{tripoles/pmos/base height/.initial=.5}
+\ctikzset{tripoles/pmos/conn height/.initial=0}
+\ctikzset{tripoles/pmos/height/.initial=1.1}
+\ctikzset{tripoles/pmos/base width/.initial=.5}
+\ctikzset{tripoles/pmos/gate width/.initial=.62}
+\ctikzset{tripoles/pmos/arrow pos/.initial=.4}
+\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pmos/curr direction/.initial=-1}
+
+\ctikzset{tripoles/hemt/width/.initial=.7}
+\ctikzset{tripoles/hemt/gate height/.initial=.35}
+\ctikzset{tripoles/hemt/base height/.initial=.5}
+\ctikzset{tripoles/hemt/conn height/.initial=0}
+\ctikzset{tripoles/hemt/height/.initial=1.1}
+\ctikzset{tripoles/hemt/base width/.initial=.5}
+\ctikzset{tripoles/hemt/gate width/.initial=.62}
+\ctikzset{tripoles/hemt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/hemt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/hemt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/hemt/curr direction/.initial=1}
+
+\ctikzset{tripoles/nfet/width/.initial=.7}
+\ctikzset{tripoles/nfet/gate height/.initial=.35}
+\ctikzset{tripoles/nfet/base height/.initial=.5}
+\ctikzset{tripoles/nfet/conn height/.initial=0}
+\ctikzset{tripoles/nfet/height/.initial=1.1}
+\ctikzset{tripoles/nfet/base width/.initial=.5}
+\ctikzset{tripoles/nfet/gate width/.initial=.62}
+\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pfet/width/.initial=.7}
+\ctikzset{tripoles/pfet/gate height/.initial=.35}
+\ctikzset{tripoles/pfet/base height/.initial=.5}
+\ctikzset{tripoles/pfet/conn height/.initial=0}
+\ctikzset{tripoles/pfet/height/.initial=1.1}
+\ctikzset{tripoles/pfet/base width/.initial=.5}
+\ctikzset{tripoles/pfet/gate width/.initial=.62}
+\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigfete/width/.initial=.7}
+\ctikzset{tripoles/nigfete/gate height/.initial=.35}
+\ctikzset{tripoles/nigfete/base height/.initial=.5}
+\ctikzset{tripoles/nigfete/conn height/.initial=.35}
+\ctikzset{tripoles/nigfete/height/.initial=1.1}
+\ctikzset{tripoles/nigfete/base width/.initial=.5}
+\ctikzset{tripoles/nigfete/gate width/.initial=.62}
+\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfete/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetd/width/.initial=.7}
+\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetd/base height/.initial=.5}
+\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetd/height/.initial=1.1}
+\ctikzset{tripoles/nigfetd/base width/.initial=.5}
+\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
+
+\ctikzset{tripoles/pigfete/width/.initial=.7}
+\ctikzset{tripoles/pigfete/gate height/.initial=.35}
+\ctikzset{tripoles/pigfete/base height/.initial=.5}
+\ctikzset{tripoles/pigfete/conn height/.initial=.35}
+\ctikzset{tripoles/pigfete/height/.initial=1.1}
+\ctikzset{tripoles/pigfete/base width/.initial=.5}
+\ctikzset{tripoles/pigfete/gate width/.initial=.62}
+\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetd/width/.initial=.7}
+\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetd/base height/.initial=.5}
+\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetd/height/.initial=1.1}
+\ctikzset{tripoles/pigfetd/base width/.initial=.5}
+\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
+
+\ctikzset{tripoles/npn/width/.initial=.6}
+\ctikzset{tripoles/npn/base height/.initial=.45}
+\ctikzset{tripoles/npn/base height 2/.initial=.15}
+\ctikzset{tripoles/npn/base height/.initial=.4}
+\ctikzset{tripoles/npn/conn height/.initial=0}
+\ctikzset{tripoles/npn/height/.initial=1.1}
+\ctikzset{tripoles/npn/base width/.initial=.5}
+\ctikzset{tripoles/npn/arrow pos/.initial=.5}
+\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/npn/curr direction/.initial=1}
+
+\ctikzset{tripoles/pnp/width/.initial=.6}
+\ctikzset{tripoles/pnp/base height/.initial=.45}
+\ctikzset{tripoles/pnp/base height 2/.initial=.15}
+\ctikzset{tripoles/pnp/base height/.initial=.4}
+\ctikzset{tripoles/pnp/conn height/.initial=0}
+\ctikzset{tripoles/pnp/height/.initial=1.1}
+\ctikzset{tripoles/pnp/base width/.initial=.5}
+\ctikzset{tripoles/pnp/arrow pos/.initial=.5}
+\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pnp/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigbt/width/.initial=.6}
+\ctikzset{tripoles/pigbt/gate height/.initial=.45}
+\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/pigbt/base height/.initial=.4}
+\ctikzset{tripoles/pigbt/outer base height/.initial=.4}
+\ctikzset{tripoles/pigbt/outer base thickness/.initial=1}
+\ctikzset{tripoles/pigbt/conn height/.initial=0}
+\ctikzset{tripoles/pigbt/height/.initial=1.1}
+\ctikzset{tripoles/pigbt/gate width/.initial=.62}
+\ctikzset{tripoles/pigbt/base width/.initial=.5}
+\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigbt/width/.initial=.6}
+\ctikzset{tripoles/nigbt/gate height/.initial=.45}
+\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/nigbt/base height/.initial=.4}
+\ctikzset{tripoles/nigbt/outer base height/.initial=.4}
+\ctikzset{tripoles/nigbt/outer base thickness/.initial=1}
+\ctikzset{tripoles/nigbt/conn height/.initial=0}
+\ctikzset{tripoles/nigbt/height/.initial=1.1}
+\ctikzset{tripoles/nigbt/gate width/.initial=.62}
+\ctikzset{tripoles/nigbt/base width/.initial=.5}
+\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/Lpigbt/width/.initial=.6}
+\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/outer base height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/outer base thickness/.initial=1}
+\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/Lnigbt/width/.initial=.6}
+\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/outer base height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/outer base thickness/.initial=1}
+\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/igbt/outer base height/.code={
+ \ctikzset{tripoles/nigbt/outer base height/.initial=#1}
+ \ctikzset{tripoles/pigbt/outer base height/.initial=#1}
+ \ctikzset{tripoles/Lnigbt/outer base height/.initial=#1}
+ \ctikzset{tripoles/Lpigbt/outer base height/.initial=#1}
+ \ctikzset{tripoles/Lnigbt/conn height/.initial=#1}
+ \ctikzset{tripoles/Lpigbt/conn height/.initial=#1}
+}}
+\ctikzset{tripoles/igbt/outer base thickness/.code={
+ \ctikzset{tripoles/nigbt/outer base thickness=#1}
+ \ctikzset{tripoles/pigbt/outer base thickness=#1}
+ \ctikzset{tripoles/Lnigbt/outer base thickness=#1}
+ \ctikzset{tripoles/Lpigbt/outer base thickness=#1}
+}}
+
+\ctikzset{tripoles/njfet/width/.initial=.7}
+\ctikzset{tripoles/njfet/gate height/.initial=.5}
+\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/njfet/gate width/.initial=.5}
+\ctikzset{tripoles/njfet/conn height/.initial=.35}
+\ctikzset{tripoles/njfet/height/.initial=1.1}
+\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/njfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pjfet/width/.initial=.7}
+\ctikzset{tripoles/pjfet/gate height/.initial=.5}
+\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/pjfet/gate width/.initial=.5}
+\ctikzset{tripoles/pjfet/conn height/.initial=.35}
+\ctikzset{tripoles/pjfet/height/.initial=1.1}
+\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/isfet/width/.initial=1}
+\ctikzset{tripoles/isfet/gate height/.initial=.35}
+\ctikzset{tripoles/isfet/base height/.initial=.5}
+\ctikzset{tripoles/isfet/height/.initial=1.1}
+\ctikzset{tripoles/isfet/base width/.initial=.3}
+\ctikzset{tripoles/isfet/gate width/.initial=.5}
+\ctikzset{tripoles/isfet/conn height/.initial=0}
+\ctikzset{tripoles/isfet/wave width/.initial=.16}
+\ctikzset{tripoles/isfet/wave amp/.initial=.06}
+\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
+\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
+\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/isfet/curr direction/.initial=1}
+%
+% multi-emitter and multi-collector BJTs by Romano Giannetti
+%
+\ctikzset{tripoles/bjt/emitters/.initial=1}
+\ctikzset{tripoles/bjt/collectors/.initial=1}
+\pgfkeys{/tikz/emitters/.add code={}{\ctikzset{tripoles/bjt/emitters=#1}}}
+\pgfkeys{/tikz/collectors/.add code={}{\ctikzset{tripoles/bjt/collectors=#1}}}
+\ctikzset{tripoles/bjt/pins width/.initial=0.3}
+\pgfkeys{/tikz/bjt pins width/.add code={}{\ctikzset{tripoles/bjt/pins width=#1}}}
+\ctikzset{tripoles/bjt/multi height/.initial=.5}
+\pgfkeys{/tikz/bjt multi height/.add code={}{\ctikzset{tripoles/bjt/multi height/.initial=#1}}}
+%
+\ctikzset{tripoles/bjt/width/.initial=.3}
+\ctikzset{tripoles/bjt/base height 2/.initial=.4}
+\ctikzset{tripoles/bjt/base height/.initial=1.1}
+\ctikzset{tripoles/bjt/height/.initial=.4}
+\ctikzset{tripoles/bjt/base width/.initial=1}
+\ctikzset{tripoles/bjt/arrow pos/.initial=.5}
+% do NOT touch these two!
+\ctikzset{tripoles/bjt/npn/curr direction/.initial=1}
+\ctikzset{tripoles/bjt/pnp/curr direction/.initial=-1}
+
+%% transistors stop here
+
+%% Logic ports
+
+\newif\ifpgf@circuit@europeanlogicport
+\ctikzset{logic ports/.is choice}
+\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue
+ \tikzset{and port/.style={shape=european and port}}%
+ \tikzset{or port/.style={shape=european or port}}%
+ \tikzset{xor port/.style={shape=european xor port}}%
+ \tikzset{buffer port/.style={shape=european buffer port}}%
+ \tikzset{not port/.style={shape=european not port}}%
+ \tikzset{nand port/.style={shape=european nand port}}%
+ \tikzset{nor port/.style={shape=european nor port}}%
+ \tikzset{xnor port/.style={shape=european xnor port}}%
+}}
+\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse
+ \tikzset{and port/.style={shape=american and port}}%
+ \tikzset{or port/.style={shape=american or port}}%
+ \tikzset{xor port/.style={shape=american xor port}}%
+ \tikzset{buffer port/.style={shape=american buffer port}}%
+ \tikzset{not port/.style={shape=american not port}}%
+ \tikzset{nand port/.style={shape=american nand port}}%
+ \tikzset{nor port/.style={shape=american nor port}}%
+ \tikzset{xnor port/.style={shape=american xnor port}}%
+}}
+
+\ctikzset{logic ports origin/.is choice}
+\ctikzset{logic ports origin/legacy/.code={
+ \ctikzset{tripoles/american and port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american nand port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american nor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american or port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american xor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american xnor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european and port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european nand port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european or port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european nor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european xor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european xnor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european buffer port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european not port/origin/.initial=0.8}%
+ }%
+}
+\ctikzset{logic ports origin/center/.code={%
+ \ctikzset{tripoles/american and port/origin/.initial=0}%
+ \ctikzset{tripoles/american nand port/origin/.initial=0}%
+ \ctikzset{tripoles/american nor port/origin/.initial=0}%
+ \ctikzset{tripoles/american or port/origin/.initial=0}%
+ \ctikzset{tripoles/american xor port/origin/.initial=0}%
+ \ctikzset{tripoles/american xnor port/origin/.initial=0}%
+ \ctikzset{tripoles/european and port/origin/.initial=0}%
+ \ctikzset{tripoles/european nand port/origin/.initial=0}%
+ \ctikzset{tripoles/european or port/origin/.initial=0}%
+ \ctikzset{tripoles/european nor port/origin/.initial=0}%
+ \ctikzset{tripoles/european xor port/origin/.initial=0}%
+ \ctikzset{tripoles/european xnor port/origin/.initial=0}%
+ \ctikzset{tripoles/european buffer port/origin/.initial=0}%
+ \ctikzset{tripoles/european not port/origin/.initial=0}%
+ }%
+}
+
+\newif\ifpgfcirc@roundy@or@shapes\pgfcirc@roundy@or@shapesfalse
+\ctikzset{american or shape/.is choice}
+\ctikzset{american or shape/roundy/.code={\pgfcirc@roundy@or@shapestrue}}
+\ctikzset{american or shape/pointy/.code={\pgfcirc@roundy@or@shapesfalse}}
+
+\newif\ifpgfcirc@draw@leads\pgfcirc@draw@leadstrue
+\ctikzset{logic ports draw input leads/.is choice}
+\ctikzset{logic ports draw input leads/true/.code={\pgfcirc@draw@leadstrue}}
+\ctikzset{logic ports draw input leads/false/.code={\pgfcirc@draw@leadsfalse}}
+\tikzset{input leads/.code={\pgfcirc@draw@leadstrue}}
+\tikzset{no input leads/.code={\pgfcirc@draw@leadsfalse}}
+
+\ctikzset{tripoles/american and port/width/.initial=1.1}
+\ctikzset{tripoles/american and port/height/.initial=.8}
+\ctikzset{tripoles/american and port/port width/.initial=.7}
+\ctikzset{tripoles/american and port/input height/.initial=.5}
+\ctikzset{tripoles/american nand port/width/.initial=1.1}
+\ctikzset{tripoles/american nand port/height/.initial=.8}
+\ctikzset{tripoles/american nand port/port width/.initial=.7}
+\ctikzset{tripoles/american nand port/circle width/.initial=.15}
+\ctikzset{tripoles/american nand port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/width/.initial=1.1}
+\ctikzset{tripoles/american or port/height/.initial=.8}
+\ctikzset{tripoles/american or port/port width/.initial=.7}
+\ctikzset{tripoles/american or port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/input skip/.initial=.25}
+\ctikzset{tripoles/american or port/aaa/.initial=.6}
+\ctikzset{tripoles/american or port/bbb/.initial=.4}
+\ctikzset{tripoles/american or port/ccc/.initial=.5}
+\ctikzset{tripoles/american or port/ddd/.initial=.0}
+\ctikzset{tripoles/american nor port/width/.initial=1.1}
+\ctikzset{tripoles/american nor port/height/.initial=.8}
+\ctikzset{tripoles/american nor port/port width/.initial=.7}
+\ctikzset{tripoles/american nor port/input height/.initial=.5}
+\ctikzset{tripoles/american nor port/input skip/.initial=.25}
+\ctikzset{tripoles/american nor port/circle width/.initial=.15}
+\ctikzset{tripoles/american nor port/aaa/.initial=.6}
+\ctikzset{tripoles/american nor port/bbb/.initial=.4}
+\ctikzset{tripoles/american nor port/ccc/.initial=.5}
+\ctikzset{tripoles/american nor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xor port/width/.initial=1.1}
+\ctikzset{tripoles/american xor port/height/.initial=.8}
+\ctikzset{tripoles/american xor port/port width/.initial=.7}
+\ctikzset{tripoles/american xor port/input height/.initial=.5}
+\ctikzset{tripoles/american xor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xor port/distance/.initial=.1}
+\ctikzset{tripoles/american xnor port/width/.initial=1.1}
+\ctikzset{tripoles/american xnor port/height/.initial=.8}
+\ctikzset{tripoles/american xnor port/port width/.initial=.7}
+\ctikzset{tripoles/american xnor port/input height/.initial=.5}
+\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xnor port/distance/.initial=.1}
+\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
+\ctikzset{tripoles/american and port/origin/.initial=0.8}
+\ctikzset{tripoles/american and port/inputs/.initial=2}
+% variable number of inputs
+\ctikzset{tripoles/american nand port/origin/.initial=0.8}
+\ctikzset{tripoles/american nand port/inputs/.initial=2}
+\ctikzset{tripoles/american nor port/origin/.initial=0.8}
+\ctikzset{tripoles/american nor port/inputs/.initial=2}
+\ctikzset{tripoles/american nor port/angle/.initial=70}
+\ctikzset{tripoles/american nor port/inner/.initial=0.3}
+\ctikzset{tripoles/american or port/origin/.initial=0.8}
+\ctikzset{tripoles/american or port/inputs/.initial=2}
+\ctikzset{tripoles/american or port/angle/.initial=70}
+\ctikzset{tripoles/american or port/inner/.initial=0.3}
+\ctikzset{tripoles/american xor port/origin/.initial=0.8}
+\ctikzset{tripoles/american xor port/inputs/.initial=2}
+\ctikzset{tripoles/american xor port/angle/.initial=70}
+\ctikzset{tripoles/american xor port/inner/.initial=0.3}
+\ctikzset{tripoles/american xnor port/origin/.initial=0.8}
+\ctikzset{tripoles/american xnor port/inputs/.initial=2}
+\ctikzset{tripoles/american xnor port/angle/.initial=70}
+\ctikzset{tripoles/american xnor port/inner/.initial=0.3}
+
+\ctikzset{tripoles/european and port/width/.initial=1.4}
+\ctikzset{tripoles/european and port/height/.initial=.65}
+\ctikzset{tripoles/european and port/reserved/.initial=.6}
+\ctikzset{tripoles/european and port/input height/.initial=.6}
+\ctikzset{tripoles/european or port/width/.initial=1.4}
+\ctikzset{tripoles/european or port/height/.initial=.65}
+\ctikzset{tripoles/european or port/reserved/.initial=.6}
+\ctikzset{tripoles/european or port/input height/.initial=.6}
+\ctikzset{tripoles/european xor port/width/.initial=1.4}
+\ctikzset{tripoles/european xor port/height/.initial=.65}
+\ctikzset{tripoles/european xor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xor port/input height/.initial=.6}
+\ctikzset{tripoles/european nand port/width/.initial=1.4}
+\ctikzset{tripoles/european nand port/not height/.initial=.3}
+\ctikzset{tripoles/european nand port/not width/.initial=.8}
+\ctikzset{tripoles/european nand port/height/.initial=.65}
+\ctikzset{tripoles/european nand port/reserved/.initial=.6}
+\ctikzset{tripoles/european nand port/input height/.initial=.6}
+\ctikzset{tripoles/european buffer port/width/.initial=1.4}
+\ctikzset{tripoles/european buffer port/not height/.initial=.3}
+\ctikzset{tripoles/european buffer port/not width/.initial=.8}
+\ctikzset{tripoles/european buffer port/height/.initial=.65}
+\ctikzset{tripoles/european buffer port/reserved/.initial=.6}
+\ctikzset{tripoles/european buffer port/input height/.initial=0}
+\ctikzset{tripoles/european not port/width/.initial=1.4}
+\ctikzset{tripoles/european not port/not height/.initial=.3}
+\ctikzset{tripoles/european not port/not width/.initial=.8}
+\ctikzset{tripoles/european not port/height/.initial=.65}
+\ctikzset{tripoles/european not port/reserved/.initial=.6}
+\ctikzset{tripoles/european not port/input height/.initial=0}
+\ctikzset{tripoles/european xnor port/width/.initial=1.4}
+\ctikzset{tripoles/european xnor port/not height/.initial=.3}
+\ctikzset{tripoles/european xnor port/not width/.initial=.8}
+\ctikzset{tripoles/european xnor port/height/.initial=.65}
+\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xnor port/input height/.initial=.6}
+\ctikzset{tripoles/european nor port/width/.initial=1.4}
+\ctikzset{tripoles/european nor port/not height/.initial=.3}
+\ctikzset{tripoles/european nor port/not width/.initial=.8}
+\ctikzset{tripoles/european nor port/height/.initial=.65}
+\ctikzset{tripoles/european nor port/reserved/.initial=.6}
+\ctikzset{tripoles/european nor port/input height/.initial=.6}
+% variable number of inputs
+\ctikzset{tripoles/european and port/origin/.initial=0.8}
+\ctikzset{tripoles/european and port/inputs/.initial=2}
+\ctikzset{tripoles/european nand port/origin/.initial=0.8}
+\ctikzset{tripoles/european nand port/inputs/.initial=2}
+\ctikzset{tripoles/european or port/origin/.initial=0.8}
+\ctikzset{tripoles/european or port/inputs/.initial=2}
+\ctikzset{tripoles/european nor port/origin/.initial=0.8}
+\ctikzset{tripoles/european nor port/inputs/.initial=2}
+\ctikzset{tripoles/european xor port/origin/.initial=0.8}
+\ctikzset{tripoles/european xor port/inputs/.initial=2}
+\ctikzset{tripoles/european xnor port/origin/.initial=0.8}
+\ctikzset{tripoles/european xnor port/inputs/.initial=2}
+\ctikzset{tripoles/european buffer port/origin/.initial=0.8}
+\ctikzset{tripoles/european buffer port/inputs/.initial=1}%
+\ctikzset{tripoles/european not port/origin/.initial=0.8}
+\ctikzset{tripoles/european not port/inputs/.initial=1}%
+%%% parameters that are not used anymore after multi-input
+%%% gates --- left for compatibility of source code.
+\ctikzset{tripoles/american xor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
+% switches for logic gates
+%
+\pgfkeys{/tikz/number inputs/.initial=0}
+\pgfkeys{/tikz/number inputs/.default=0}
+
+%% flip-flop specific keys (most others are the same as chips)
+
+\ctikzset{multipoles/flipflop/font/.initial=\pgf@circ@font@small}
+\ctikzset{multipoles/flipflop/fontud/.initial=\pgf@circ@font@tiny}
+\ctikzset{multipoles/flipflop/width/.initial=1.2}
+\ctikzset{multipoles/flipflop/pin spacing/.initial=0.6}
+\ctikzset{multipoles/flipflop/clock wedge size/.initial=0.2}
+
+%% muxdemuxes keys
+
+\ctikzset{multipoles/muxdemux/base len/.initial=0.4}
+\ctikzset{multipoles/muxdemux/Lh/.initial=8.0}
+\ctikzset{multipoles/muxdemux/Rh/.initial=6.0}
+\ctikzset{multipoles/muxdemux/w/.initial=3.0}
+\ctikzset{multipoles/muxdemux/inset w/.initial=0.0}
+\ctikzset{multipoles/muxdemux/inset Lh/.initial=0.0}
+\ctikzset{multipoles/muxdemux/inset Rh/.initial=0.0}
+\ctikzset{multipoles/muxdemux/NL/.initial=8}
+\ctikzset{multipoles/muxdemux/NR/.initial=1}
+\ctikzset{multipoles/muxdemux/NB/.initial=3}
+\ctikzset{multipoles/muxdemux/NT/.initial=0}
+\ctikzset{multipoles/muxdemux/square pins/.initial=0}
+%
+% switches for op amps
+% changing input polarity
+%
+\newif\ifpgf@circuit@oa@iplusup\pgf@circuit@oa@iplusupfalse
+\pgfkeys{/tikz/noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
+\ctikzset{noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
+\pgfkeys{/tikz/noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
+\ctikzset{noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
+%
+% changing output polarity (for fully diff objects)
+%
+\newif\ifpgf@circuit@oa@oplusup\pgf@circuit@oa@oplusuptrue
+\pgfkeys{/tikz/noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
+\ctikzset{noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
+\pgfkeys{/tikz/noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
+\ctikzset{noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
+
+% Operational amplifier
+\ctikzset{tripoles/op amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/op amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/op amp/height/.initial=1.4} % Total height
+\ctikzset{tripoles/op amp/input height/.initial=.5} % Input port vertical separation
+\ctikzset{tripoles/op amp/up pos/.initial=.45} % Top and bottom anchor position
+\ctikzset{tripoles/op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Fully differential operational amplifier
+\ctikzset{tripoles/fd op amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/fd op amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/fd op amp/height/.initial=1.4} % Total height
+\ctikzset{tripoles/fd op amp/input height/.initial=.5} % Input port vertical separation
+\ctikzset{tripoles/fd op amp/output height/.initial=.5} % Output port vertical separation
+\ctikzset{tripoles/fd op amp/up pos/.initial=.45} % Top and bottom anchor position
+\ctikzset{tripoles/fd op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+\ctikzset{tripoles/en amp/width/.initial=1.7}
+\ctikzset{tripoles/en amp/port width/.initial=.7}
+\ctikzset{tripoles/en amp/height/.initial=1.6}
+\ctikzset{tripoles/en amp/input height/.initial=.3}
+\ctikzset{tripoles/en amp/up pos/.initial=.45}
+\ctikzset{tripoles/en amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+\ctikzset{tripoles/en amp/font2/.initial=\pgf@circ@font@twelve} % Absolute font size needed!
+\ctikzset{tripoles/en amp/text/.initial={$\mathstrut{\triangleright}\,{\infty}$}}
+\tikzset{
+ en amp text/.code = {%
+ \ctikzsetvalof{tripoles/en amp/text}{#1}%
+ },
+ en amp text A/.code = {%
+ \ctikzsetvalof{tripoles/en amp/text}{$\mathstrut{\triangleright}\,\mathrm{A}$}%
+ },
+}
+
+% Transconductance amplifier
+\ctikzset{tripoles/gm amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/gm amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/gm amp/height/.initial=1.4} % Left side of the trapezoid
+\ctikzset{tripoles/gm amp/height 2/.initial=0.5} % Right side of the trapezoid
+\ctikzset{tripoles/gm amp/input height/.initial=.5} % Input port vertical separation
+\ctikzset{tripoles/gm amp/up pos/.initial=.45} % Top and bottom anchor position
+\ctikzset{tripoles/gm amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Instrumentation amplifier
+\ctikzset{tripoles/inst amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/inst amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/inst amp/height/.initial=1.4} % Left side of the trapezoid
+\ctikzset{tripoles/inst amp/height 2/.initial=0.6} % Right side of the trapezoid
+\ctikzset{tripoles/inst amp/input height/.initial=.5} % Input ports vertical separation
+\ctikzset{tripoles/inst amp/up pos/.initial=.4} % Top and bottom anchor position
+\ctikzset{tripoles/inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
+\ctikzset{tripoles/inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Instrumentation amplifier with differential output
+\ctikzset{tripoles/fd inst amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/fd inst amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/fd inst amp/height/.initial=1.4} % Left side of the trapezoid
+\ctikzset{tripoles/fd inst amp/height 2/.initial=0.6} % Right side of the trapezoid
+\ctikzset{tripoles/fd inst amp/input height/.initial=.5} % Input ports vertical separation
+\ctikzset{tripoles/fd inst amp/output height/.initial=.5} % Output ports vertical separation
+\ctikzset{tripoles/fd inst amp/up pos/.initial=.4} % Top and bottom anchor position
+\ctikzset{tripoles/fd inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
+\ctikzset{tripoles/fd inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Instrumentation amplifier with gain resistor terminals
+\ctikzset{tripoles/inst amp ra/width/.initial=2.4} % Total width
+\ctikzset{tripoles/inst amp ra/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/inst amp ra/height/.initial=2.9} % Left side of the trapezoid
+\ctikzset{tripoles/inst amp ra/height 2/.initial=0.4} % Right side of the trapezoid
+\ctikzset{tripoles/inst amp ra/input height/.initial=.7} % Input ports vertical separation
+\ctikzset{tripoles/inst amp ra/up pos/.initial=.4} % Top and bottom anchor position
+\ctikzset{tripoles/inst amp ra/refv pos/.initial=.7} % Top and bottom voltage reference position
+\ctikzset{tripoles/inst amp ra/ra pos/.initial=.6} % Gain resistor terminals vertical separation
+\ctikzset{tripoles/inst amp ra/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Plain amplifier
+\ctikzset{tripoles/plain amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/plain amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/plain amp/height/.initial=1.4} % Total height
+\ctikzset{tripoles/plain amp/input height/.initial=.5} % Input ports vertical separation
+\ctikzset{tripoles/plain amp/up pos/.initial=.45} % Top and bottom anchor position
+
+% changing fonts and symbols of amplifiers
+\ctikzset{amplifiers/symbol font/.code={%
+ \ctikzset{tripoles/inst amp ra/font=#1}%
+ \ctikzset{tripoles/fd inst amp/font=#1}%
+ \ctikzset{tripoles/inst amp/font=#1}%
+ \ctikzset{tripoles/gm amp/font=#1}%
+ \ctikzset{tripoles/en amp/font=#1}%
+ \ctikzset{tripoles/fd op amp/font=#1}%
+ \ctikzset{tripoles/op amp/font=#1}%
+}}
+\ctikzset{amplifiers/plus/.initial={$+$}}
+\ctikzset{amplifiers/minus/.initial={$-$}}
+\tikzset{amp symbol font/.code={%
+ \ctikzset{amplifiers/symbol font={#1}}%
+ }
+}
+\tikzset{amp plus/.code={\ctikzsetvalof{amplifiers/plus}{#1}}}
+\tikzset{amp minus/.code={\ctikzsetvalof{amplifiers/minus}{#1}}}
+\def\pgf@circ@ampli@plus{\ctikzvalof{amplifiers/plus}}
+\def\pgf@circ@ampli@minus{\ctikzvalof{amplifiers/minus}}
+
+\ctikzset{tripoles/thyristor/height/.initial=1.10}
+\ctikzset{tripoles/thyristor/height 2/.initial=.5}
+\ctikzset{tripoles/thyristor/width/.initial=1.0}
+\ctikzset{tripoles/thyristor/diode height/.initial=.5}
+\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+\ctikzset{tripoles/triac/height/.initial=1.1}
+\ctikzset{tripoles/triac/width/.initial=1}
+\ctikzset{tripoles/triac/diode width left/.initial=.3}
+\ctikzset{tripoles/triac/diode width right/.initial=.3}
+
+%% Cute switches
+\ctikzset{bipoles/cuteswitch/shape/.initial={ocirc}}
+\ctikzset{bipoles/cuteswitch/height/.initial=.6}
+\ctikzset{bipoles/cuteswitch/height 2/.initial=.2}
+\ctikzset{bipoles/cuteswitch/width/.initial=.50}
+\ctikzset{bipoles/cuteswitch/thickness/.initial=1}
+
+\ctikzset{tripoles/spdt/width/.initial=.85}
+\ctikzset{tripoles/spdt/height/.initial=.45}
+\ctikzset{tripoles/spdt/margin/.initial=.45}
+
+\ctikzset{tripoles/toggleswitch/height/.initial=.8}
+\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
+\ctikzset{tripoles/toggleswitch/width/.initial=.80}
+
+\ctikzset{tripoles/mixer/width/.initial=0.7}
+\ctikzset{tripoles/adder/width/.initial=0.7}
+\ctikzset{tripoles/circulator/width/.initial=.7}
+\ctikzset{tripoles/oscillator/width/.initial=.7}
+
+
+\ctikzset{tripoles/wilkinson/height/.initial=1.3}
+\ctikzset{tripoles/wilkinson/width/.initial=1.3}
+
+\ctikzset{quadpoles/transformer/inner/.initial=0.4}
+\ctikzset{quadpoles/transformer/width/.initial=1.5}
+\ctikzset{quadpoles/transformer/width1/.initial=.4}
+\ctikzset{quadpoles/transformer/height/.initial=1.5}
+\ctikzset{quadpoles/transformer/height1/.initial=.8}
+\ctikzset{quadpoles/transformer core/inner/.initial=0.4}
+\ctikzset{quadpoles/transformer core/width/.initial=1.5}
+\ctikzset{quadpoles/transformer core/height/.initial=1.5}
+\ctikzset{quadpoles/transformer core/core height/.initial=.5}
+\ctikzset{quadpoles/transformer core/core width/.initial=.05}
+\ctikzset{quadpoles/gyrator/inner/.initial=0.4}
+\ctikzset{quadpoles/gyrator/width/.initial=1.5}
+\ctikzset{quadpoles/gyrator/height/.initial=1.5}
+\ctikzset{quadpoles/fourport/width/.initial=1.3}
+\ctikzset{quadpoles/fourport/height/.initial=1.3}
+\ctikzset{quadpoles/coupler/width/.initial=1.3}
+\ctikzset{quadpoles/coupler/height/.initial=1.3}
+\ctikzset{quadpoles/coupler2/width/.initial=1.3}
+\ctikzset{quadpoles/coupler2/height/.initial=1.3}
+
+\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
+
+\ctikzset{quadpoles style/.is choice}
+\ctikzset{quadpoles style/inward/.code={% default value
+ \ctikzset{quadpoles/transformer/inner=0.4}%
+ \ctikzset{quadpoles/transformer/width=1.5}%
+ \ctikzset{quadpoles/transformer core/inner=0.4}%
+ \ctikzset{quadpoles/transformer core/width=1.5}%
+ \ctikzset{quadpoles/gyrator/inner=0.4}%
+ \ctikzset{quadpoles/gyrator/width=1.5}%
+ }%
+}
+\ctikzset{quadpoles style/inline/.code={% now horizontal baffle
+ \ctikzset{quadpoles/transformer/inner=1}%
+ \ctikzset{quadpoles/transformer/width=0.6}%
+ \ctikzset{quadpoles/transformer core/inner=1}%
+ \ctikzset{quadpoles/transformer core/width=0.6}%
+ \ctikzset{quadpoles/gyrator/inner=1} % FIXME
+ \ctikzset{quadpoles/gyrator/width=0.6}%
+ }%
+}
+
+%
+% multipoles
+%
+\ctikzset{multipoles/thickness/.initial=2}
+\ctikzset{multipoles/font/.initial=\pgf@circ@font@tiny}
+% DIP (dual in line package) chips
+\ctikzset{multipoles/dipchip/width/.initial=1.2}
+\ctikzset{multipoles/dipchip/num pins/.initial=8}
+\ctikzset{multipoles/dipchip/pin spacing/.initial=0.4}
+\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/dipchip/num pins=#1}}}
+% QFP (quad flat package) chips
+\ctikzset{multipoles/qfpchip/num pins/.initial=8}
+\ctikzset{multipoles/qfpchip/pin spacing/.initial=0.4}
+\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/qfpchip/num pins=#1}}}
+% chip numbers
+\newif\ifpgf@circuit@chip@shownumbers\pgf@circuit@chip@shownumberstrue
+\pgfkeys{/tikz/show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
+\ctikzset{show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
+\pgfkeys{/tikz/hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
+\ctikzset{hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
+\newif\ifpgf@circuit@chip@straightnumbers\pgf@circuit@chip@straightnumberstrue
+\pgfkeys{/tikz/straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
+\ctikzset{straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
+\pgfkeys{/tikz/rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
+\ctikzset{rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
+% external chip pins
+\ctikzset{multipoles/external pins thickness/.initial=1}
+\ctikzset{multipoles/external pins width/.initial=0.2}
+\ctikzset{multipoles/external pad fraction/.initial=0}
+\pgfkeys{/tikz/external pins width/.add code={}{\ctikzset{multipoles/external pins width=#1}}}
+\pgfkeys{/tikz/external pad fraction/.add code={}{\ctikzset{multipoles/external pad fraction=#1}}}
+% topmarks
+\newif\ifpgf@circuit@chip@topmark\pgf@circuit@chip@topmarktrue
+\pgfkeys{/tikz/topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
+\ctikzset{topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
+\pgfkeys{/tikz/no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
+\ctikzset{no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
+
+% rotary switch by Romano
+\ctikzset{multipoles/rotary/thickness/.initial=1}
+\ctikzset{multipoles/rotary/shape/.initial=ocirc}
+\ctikzset{multipoles/rotary/channels/.initial=5}
+\ctikzset{multipoles/rotary/angle/.initial=60}
+\ctikzset{multipoles/rotary/wiper/.initial=20}
+\ctikzset{multipoles/rotary/arrow/.is choice}
+\newif\ifpgf@circ@rotaryarrow\pgf@circ@rotaryarrowfalse
+\newif\ifpgf@circ@rotaryarrow@cw\pgf@circ@rotaryarrow@cwfalse
+\newif\ifpgf@circ@rotaryarrow@ccw\pgf@circ@rotaryarrow@ccwfalse
+\ctikzset{multipoles/rotary/arrow/none/.code={\pgf@circ@rotaryarrowfalse\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwfalse}}
+\ctikzset{multipoles/rotary/arrow/both/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwtrue}}
+\ctikzset{multipoles/rotary/arrow/cw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwfalse}}
+\ctikzset{multipoles/rotary/arrow/ccw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwtrue}}
+
+\tikzset{%
+ rotary switch/.style args={#1in#2wiper#3}{%
+ shape=rotaryswitch,
+ /tikz/circuitikz/multipoles/rotary/channels=#1,
+ /tikz/circuitikz/multipoles/rotary/angle=#2,
+ /tikz/circuitikz/multipoles/rotary/wiper=#3,
+ },
+ rotary switch -/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=none,
+ },
+ rotary switch <-/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=ccw,
+ },
+ rotary switch ->/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=cw,
+ },
+ rotary switch <->/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=both,
+ },
+ % Notice that these should be the same as the initial values of the keys
+ rotary switch/.default={5 in 60 wiper 20},
+ rotary switch -/.default={5 in 60 wiper 20},
+ rotary switch <-/.default={5 in 60 wiper 20},
+ rotary switch ->/.default={5 in 60 wiper 20},
+ rotary switch <->/.default={5 in 60 wiper 20},
+}
+
+% %Mechanical section
+\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
+\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
+\ctikzset{bipoles/spring/height/.initial=.5}
+\ctikzset{bipoles/spring/width/.initial=.5}
+\ctikzset{bipoles/inerter/height/.initial=.7}
+\ctikzset{bipoles/inerter/width/.initial=.175}
+\ctikzset{bipoles/mass/height/.initial=.55}
+\ctikzset{bipoles/mass/box height/.initial=.4}
+\ctikzset{bipoles/mass/width/.initial=.5}
+
+\ctikzset{bipoles/damper/height/.initial=.35}
+\ctikzset{bipoles/damper/length/.initial=.3}
+\ctikzset{bipoles/damper/width/.initial=.4}
+
+
+\ctikzset{bipole/.is family}
+\ctikzset{bipole/kind/.initial=}
+\ctikzset{bipole/name/.initial=}
+\newif\ifpgf@circuit@bipole@isvoltage
+\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
+\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
+\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
+\newif\ifpgf@circuit@bipole@strokedsymbol
+\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
+\newif\ifpgf@circuit@bipole@iscurrent
+\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
+
+\ctikzset{bipole/voltage/.is family}
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+\newif\ifpgf@circuit@bipole@voltage@below
+\ctikzset{bipole/voltage/position/.is choice}
+\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
+\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
+
+\ctikzset{bipole/voltage/label/unit/.initial=}
+\ctikzset{bipole/voltage/label/name/.initial=}
+
+\ctikzset{bipole/current/.is family}
+\newif\ifpgf@circuit@bipole@current@backward
+\ctikzset{bipole/current/direction/.is choice}
+\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
+\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
+\newif\ifpgf@circuit@bipole@current@before
+\ctikzset{bipole/current/x position/.is choice}
+\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
+\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
+\newif\ifpgf@circuit@bipole@current@below
+\ctikzset{bipole/current/y position/.is choice}
+\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
+\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
+\ctikzset{bipole/current/label/unit/.initial=}
+\ctikzset{bipole/current/label/name/.initial=}
+
+\ctikzset{bipole/flow/.is family}
+\newif\ifpgf@circuit@bipole@flow@backward
+\ctikzset{bipole/flow/direction/.is choice}
+\ctikzset{bipole/flow/direction/forward/.code={\pgf@circuit@bipole@flow@backwardfalse}}
+\ctikzset{bipole/flow/direction/backward/.code={\pgf@circuit@bipole@flow@backwardtrue}}
+\newif\ifpgf@circuit@bipole@flow@before
+\ctikzset{bipole/flow/x position/.is choice}
+\ctikzset{bipole/flow/x position/after/.code={\pgf@circuit@bipole@flow@beforefalse}}
+\ctikzset{bipole/flow/x position/before/.code={\pgf@circuit@bipole@flow@beforetrue}}
+\newif\ifpgf@circuit@bipole@flow@below
+\ctikzset{bipole/flow/y position/.is choice}
+\ctikzset{bipole/flow/y position/above/.code={\pgf@circuit@bipole@flow@belowfalse}}
+\ctikzset{bipole/flow/y position/below/.code={\pgf@circuit@bipole@flow@belowtrue}}
+\ctikzset{bipole/flow/label/unit/.initial=}
+\ctikzset{bipole/flow/label/name/.initial=}
+\ctikzset{flow/distance/.initial = .5}
+\ctikzset{flow/offset/.initial = .2}%distance between flow-arrow and conductor
+
+\ctikzset{bipole/label/.is family}
+\ctikzset{bipole/label/position/.initial=90}
+\ctikzset{bipole/label/unit/.initial=}
+\ctikzset{bipole/label/name/.initial=}
+\ctikzset{bipole/annotation/.is family}
+\ctikzset{bipole/annotation/position/.initial=-90}
+\ctikzset{bipole/annotation/unit/.initial=}
+\ctikzset{bipole/annotation/name/.initial=}
+
+\newif\ifpgf@circuit@europeanresistor
+\ctikzset{resistor/.is choice}
+\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
+\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
+
+\ctikzset{inductor/.is choice}
+\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
+\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
+\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
+
+%
+% Flipping arrows in LED and photodiodes
+%
+\newif\ifpgf@led@fliparrows
+\newif\ifpgf@pd@fliparrows
+\pgf@led@fliparrowsfalse
+\pgf@pd@fliparrowsfalse
+%
+% by default the arrows start (LED) and go (PD) to the anode.
+%
+\ctikzset{led arrows from anode/.code=\pgf@led@fliparrowsfalse}
+\ctikzset{pd arrows to anode/.code=\pgf@pd@fliparrowsfalse}
+%
+% but they can start form the cathode (LED) or go to it (PD)
+%
+\ctikzset{led arrows from cathode/.code=\pgf@led@fliparrowstrue}
+\ctikzset{pd arrows to cathode/.code=\pgf@pd@fliparrowstrue}
+
+\newif\ifpgf@circuit@strokediode
+\newif\ifpgf@circuit@fulldiode
+\pgf@circuit@strokediodefalse
+\pgf@circuit@fulldiodefalse
+
+\ctikzset{diode/.is choice}
+\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
+\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
+\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
+
+\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full}}
+\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty}}
+\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke}}
+
+\ctikzset{thickness/.initial=2}
+\ctikzset{color/.initial=black}
+\pgfkeys{/tikz/color/.add code={}{\ctikzset{color={#1}}}}
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circ@siunitx@res
+
+%
+% voltage and current options
+%
+
+\newif\ifpgf@circuit@europeancurrent
+\newif\ifpgf@circuit@europeanvoltage
+\newif\ifpgf@circuit@bipole@voltage@straight
+
+\ctikzset{voltage/.is choice}
+%
+% straight is expected to be a subset of european, so disable it in american style
+%
+\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse\pgf@circuit@bipole@voltage@straightfalse}}
+\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue\pgf@circuit@bipole@voltage@straightfalse}}
+\ctikzset{voltage/straight/.code = {\pgf@circuit@europeanvoltagetrue\pgf@circuit@bipole@voltage@straighttrue}}
+\ctikzset{voltage/curved/.code = {\pgf@circuit@europeanvoltagetrue\pgf@circuit@bipole@voltage@straighttrue}}
+
+\ctikzset{current/.is choice}
+\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse}
+\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue}
+
+% this is left for backward compatibility...
+\ctikzset{straight/.is choice}
+\ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}}
+\ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}}
+\ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight}
+% never used, removed (RG 2020-05-17)
+% \ctikzset{straightvoltage value/.initial=true}
+% \ctikzset{straightvoltage/.style = {/tikz/circuitikz/straight=true}}
+
+%
+% voltage is used also to set parameters, apart for the /.is choice
+% above. I hope it is ok --- would be a mess otherwise
+%
+
+\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
+\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
+\ctikzset{voltage/bump a/.initial=1.2}
+\ctikzset{voltage/bump b/.initial=1.5}
+\ctikzset{voltage/shift/.initial=0.0} % shift form the cable of voltage symbols
+\ctikzset{voltage shift/.style={voltage/shift=#1}}
+\tikzset{voltage shift/.style={\circuitikzbasekey/voltage/shift=#1}}
+\ctikzset{voltage/european label distance/.initial=1.4}
+\ctikzset{voltage/american label distance/.initial=1.1}
+% shaping the +/- sign, see pgfcircvoltage.tex
+\ctikzset{voltage/american font/.initial={}}
+\ctikzset{voltage/american plus/.initial={$+$}}
+\ctikzset{voltage/american minus/.initial={$-$}}
+
+% special cases for voltage positions
+\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
+\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
+\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
+\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
+\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
+\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
+\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
+%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
+\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
+%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
+%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
+%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
+%
+% american open voltage adjusting
+%
+\newif\ifpgf@adjust@open@voltage\pgf@adjust@open@voltagetrue
+\ctikzset{american open voltage/.is choice}
+\ctikzset{american open voltage/center/.code={\pgf@adjust@open@voltagetrue}}
+\ctikzset{american open voltage/legacy/.code={\pgf@adjust@open@voltagefalse}}
+
+%
+% currents
+%
+\ctikzset{current/distance/.initial = .5}
+
+%
+% voltage and current styles
+%
+
+\tikzset{american currents/.style = {\circuitikzbasekey/current = american}}
+\tikzset{european currents/.style = {\circuitikzbasekey/current = european}}
+\tikzset{american voltages/.style = {\circuitikzbasekey/voltage = american}}
+\tikzset{european voltages/.style = {\circuitikzbasekey/voltage = european}}
+\tikzset{straight voltages/.style = {\circuitikzbasekey/voltage = straight}}
+\tikzset{american resistors/.style = {\circuitikzbasekey/resistor = american}}
+\tikzset{european resistors/.style = {\circuitikzbasekey/resistor = european}}
+
+\newif\ifpgf@circuit@europeangfsurgearrester
+\ctikzset{gas filled surge arrester choice/.is choice}
+\ctikzset{gas filled surge arrester choice/european/.code= {\pgf@circuit@europeangfsurgearrestertrue}}
+\ctikzset{gas filled surge arrester choice/american/.code= {\pgf@circuit@europeangfsurgearresterfalse}}
+
+\tikzset{american gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=american}}
+\tikzset{european gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=european}}
+\tikzset{american inductors/.style = {\circuitikzbasekey/inductor = american}}
+\tikzset{european inductors/.style = {\circuitikzbasekey/inductor = european}}
+\tikzset{cute inductors/.style = {\circuitikzbasekey/inductor = cute}}
+\tikzset{american ports/.style = {\circuitikzbasekey/logic ports = american}}
+\tikzset{european ports/.style = {\circuitikzbasekey/logic ports = european}}
+
+%
+% general styles
+%
+
+\tikzset{european/.style = {european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester set}}
+\tikzset{american/.style = {american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester set}}
+\tikzset{cute/.style = {european currents, european voltages, american resistors, cute inductors, american ports}}
+
+
+% noise sources
+\ctikzset{bipoles/noise sources/fillcolor/.initial=gray!50}
+
+\ctikzset{label/align/.is choice}
+\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
+\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
+\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
+
+% seven segment displays by RGtti
+
+\newif\ifpgf@circ@sevenseg@dot
+\newif\ifpgf@circ@sevenseg@box
+\def\pgf@circ@sevenseg@dotstate{empty}
+\ctikzset{seven seg/.is family}
+\ctikzset{seven seg/dot/.is choice}
+% none means no dot, not space for it. Empty means no dot, but space
+\ctikzset{seven seg/dot/none/.code={\pgf@circ@sevenseg@dotfalse}}
+\ctikzset{seven seg/dot/empty/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{empty}}}
+\ctikzset{seven seg/dot/off/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{off}}}
+\ctikzset{seven seg/dot/on/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{on}}}
+%
+\ctikzset{seven seg/width/.initial=0.4}% relative to \pgf@circ@Rlen
+\ctikzset{seven seg/thickness/.initial=4pt}% segment thickness
+\ctikzset{seven seg/segment sep/.initial=0.2pt}% gap between segments
+\ctikzset{seven seg/box sep/.initial=1pt}% external box gap
+\ctikzset{seven seg/color on/.initial=red}% color for segment "on"
+\ctikzset{seven seg/color off/.initial=gray!20!white} % ...and "off"
+\ctikzset{seven seg/box/.is choice}
+\ctikzset{seven seg/box/off/.code={\pgf@circ@sevenseg@boxfalse}}
+\ctikzset{seven seg/box/on/.code={\pgf@circ@sevenseg@boxtrue}}
+
+\ctikzset{seven seg/bits/.initial=0000000}
+
+\ctikzset{seven seg/value/.code={%
+ \edef\@@tmp{#1}%
+ \edef\@@n{0} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111110}\fi
+ \edef\@@n{1} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110000}\fi
+ \edef\@@n{2} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1101101}\fi
+ \edef\@@n{3} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111001}\fi
+ \edef\@@n{4} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110011}\fi
+ \edef\@@n{5} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011011}\fi
+ \edef\@@n{6} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011111}\fi
+ \edef\@@n{7} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110000}\fi
+ \edef\@@n{8} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111111}\fi
+ \edef\@@n{9} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111011}\fi
+ \edef\@@n{10}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
+ \edef\@@n{11}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
+ \edef\@@n{12}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
+ \edef\@@n{13}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
+ \edef\@@n{14}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
+ \edef\@@n{15}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
+ \edef\@@n{A} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
+ \edef\@@n{B} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
+ \edef\@@n{C} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
+ \edef\@@n{D} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
+ \edef\@@n{E} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
+ \edef\@@n{F} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
+ \edef\@@n{a} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
+ \edef\@@n{b} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
+ \edef\@@n{c} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
+ \edef\@@n{d} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
+ \edef\@@n{e} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
+ \edef\@@n{f} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
+ \edef\@@n{-} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0000001}\fi
+}}
+
+\tikzset{%
+ seven segment val/.style args={#1dot#2box#3}{%
+ shape=bare7seg,
+ /tikz/circuitikz/seven seg/value=#1,
+ /tikz/circuitikz/seven seg/dot=#2,
+ /tikz/circuitikz/seven seg/box=#3,
+ },
+ seven segment bits/.style args={#1dot#2box#3}{%
+ shape=bare7seg,
+ /tikz/circuitikz/seven seg/bits=#1,
+ /tikz/circuitikz/seven seg/dot=#2,
+ /tikz/circuitikz/seven seg/box=#3,
+ },
+}
+
+
+%%%%%%%%%% new
+\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
+
+% Electronic tubes: diodetube, triode, tetrode and pentode
+\ctikzset{tubes/width/.initial=1} % relative width
+\ctikzset{tubes/height/.initial=1.4} % relative height
+\ctikzset{tubes/tube radius/.initial=0.40} % radius of tube circle
+\ctikzset{tubes/anode distance/.initial=0.40} % distance from center
+\ctikzset{tubes/anode width/.initial=0.40} % width of an anode/plate
+\ctikzset{tubes/grid protrusion/.initial=0.25} % distance from center
+\ctikzset{tubes/grid dashes/.initial=5} % number of grid dashes
+\ctikzset{tubes/grid separation/.initial=0.2} % separation between grids
+\ctikzset{tubes/grid shift/.initial=0.0} % y shift grids from center
+\ctikzset{tubes/cathode distance/.initial=0.40} % distance from grid
+\ctikzset{tubes/cathode width/.initial=0.40} % width of an cathode
+\ctikzset{tubes/cathode corners/.initial=0.06} % corners of the cathode wire
+\ctikzset{tubes/cathode right extend/.initial=0.075} % extension at the right side
+\ctikzset{tubes/filament distance/.initial=0.1} % distance from cathode
+\ctikzset{tubes/filament angle/.initial=15} % Angle from centerpoint
+
+\newif\ifpgf@circuit@tubes@filament\pgf@circuit@tubes@filamentfalse
+\pgfkeys{/tikz/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
+\ctikzset{tubes/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
+\newif\ifpgf@circuit@tubes@nocathode\pgf@circuit@tubes@nocathodefalse
+\pgfkeys{/tikz/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
+\ctikzset{tubes/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
+\newif\ifpgf@circuit@tubes@fullcathode\pgf@circuit@tubes@fullcathodefalse
+\pgfkeys{/tikz/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
+\ctikzset{tubes/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
+
+% powerelectronic blocks
+\ctikzset{bipoles/sacdc/width/.initial=.7}
+\ctikzset{bipoles/sdcac/width/.initial=.7}
+\ctikzset{bipoles/tacdc/width/.initial=.7}
+\ctikzset{bipoles/tdcac/width/.initial=.7}
+\ctikzset{quadpoles/gridnode/width/.initial=.7} %not sure if quadpole?
+
+%%%---------- close: tex/pgfcirc.defines
+%%%%%%%%%%% Springe nach tex/pgfcircutils
+%%%---------- open: tex/pgfcircutils.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+\def\pgf@circ@handleSI#1{
+ \noexpandarg
+ \def\pgf@temp{}
+ \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
+ \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
+
+ \ifnum\pgf@circ@handleSI@unit@len=0
+ \pgf@circ@siunitx@resfalse
+ \else
+ \IfEndWith{#1}{>}{
+ \pgf@circ@siunitx@restrue
+ \noexpandarg
+ \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
+ %\typeout{si |#1|}
+ }{
+ \pgf@circ@siunitx@resfalse
+ %\typeout{no si |#1|}
+ }
+\fi
+}
+
+\def\pgf@circ@ifkeyempty#1{
+ \pgfextra{
+ \ctikzset{#1/.get=\pgf@circ@temp}
+ \edef\pgf@temp{}
+ }
+ \ifx\pgf@circ@temp\pgf@temp
+ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Math routines
+
+\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% useful commands
+
+\ifpgfutil@format@is@latex
+ %% flipping text
+ \def\ctikzflipx#1{\scalebox{-1}[1]{#1}}
+ \def\ctikzflipy#1{\scalebox{1}[-1]{#1}}
+ \def\ctikzflipxy#1{\scalebox{-1}[-1]{#1}}
+ % text mode overbar
+ % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
+ \def\ctikztextnot#1{$\overline{\hbox{#1}}\m@th$}
+\else\ifpgfutil@format@is@plain
+ % text mode overbar
+ % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
+ \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
+\else\ifpgfutil@format@is@context
+ % text mode overbar
+ % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
+ \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
+\fi\fi\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% switch to use fpu in reciprocal scale transformations
+%%
+%% this code has been contributed by Schrรถdinger's cat
+%% https://tex.stackexchange.com/a/529159/38080
+%%
+\tikzset{use fpu reciprocal/.code={%
+\def\pgfmathreciprocal@##1{%
+ \begingroup
+ \pgfkeys{/pgf/fpu=true,/pgf/fpu/output format=fixed}%
+ \pgfmathparse{1/##1}%
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
+}}}%
+
+%%%---------- close: tex/pgfcircutils
+
+%%%%%%%%%%% Springe nach tex/pgfcircshapes
+%%%---------- open: tex/pgfcircshapes.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Other shapes
+
+%% Nothing
+
+\pgfdeclareshape{emptyshape}{
+ \savedanchor{\northeast}{%
+ \pgf@x=.5\wd\pgfnodeparttextbox%
+ \pgf@y=.5\ht\pgfnodeparttextbox%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+}
+%
+% Provision for changing opacity. Only expert use, see the manual.
+%
+\ctikzset{poles/open fill opacity/.initial=1.0}% better not touch it
+\tikzset{open poles opacity/.code={%
+ \ctikzset{poles/open fill opacity=#1}%
+}}
+\ctikzset{poles/full fill opacity/.initial=1.0}% better not touch it
+\tikzset{full poles opacity/.code={%
+ \ctikzset{poles/full fill opacity=#1}%
+}}
+
+%% Full terminal
+
+\pgfdeclareshape{circ}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Empty round terminal
+
+\pgfdeclareshape{ocirc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
+ }
+
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{white}
+ % ...but override it if the class is defined!
+ % note that this element has no class, but will inherit it when used
+ % into another component
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Diamond terminal
+
+\pgfdeclareshape{diamondpole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
+ \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
+ \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
+ \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
+ % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
+ \pgfpointintersectionoflines
+ {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
+ % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgf@x=\@@switchx\pgf@x
+ \pgf@y=\@@switchy\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgftransformrotate{45}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% Diamond terminal, unfilled
+
+\pgfdeclareshape{odiamondpole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
+ \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
+ \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
+ \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
+ % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
+ \pgfpointintersectionoflines
+ {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
+ % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgf@x=\@@switchx\pgf@x
+ \pgf@y=\@@switchy\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgftransformrotate{45}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{white}
+ % ...but override it if the class is defined!
+ % note that this element has no class, but will inherit it when used
+ % into another component
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% square terminal, filled
+
+\pgfdeclareshape{squarepole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpointborderrectangle
+ {\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+%% square terminal, unfilled
+
+\pgfdeclareshape{osquarepole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpointborderrectangle
+ {\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{white}
+ % ...but override it if the class is defined!
+ % note that this element has no class, but will inherit it when used
+ % into another component
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+% BNC connector
+
+\pgfdeclareshape{bnc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ % BNC size is 2.5 times the size of the internal "ocirc"
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgf@y=2.5\pgf@y
+ \pgf@x=-\pgf@y
+ }
+ % center is on the opening
+ \anchor{center}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{zero}{ \pgfpointorigin }
+ \anchor{hot}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{shield}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ % geo-anchors
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{right}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{left}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
+ }
+ \behindforegroundpath{
+ \pgfextracty{\pgf@circ@res@other}{\northwest}
+ \pgf@circ@res@step=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgfsetcolor{\ctikzvalof{color}}
+ % external circle
+ \pgfscope
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{-2\pgf@circ@res@other}{-2\pgf@circ@res@other}}
+ {\pgfpoint{2\pgf@circ@res@other}{2\pgf@circ@res@other}}
+ % next the opening to the right
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ {\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@step}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@other}
+ \pgfusepath{draw}
+ \endpgfscope
+ % internal circle
+ \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@step}
+ \pgf@circ@draworfill
+ % and the contact line to the right
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+%% Fill for correct rectangular joins
+
+\pgfdeclareshape{rectjoinfill}{
+ \savedanchor{\northeast}{%
+ \pgf@x=.5\pgflinewidth%
+ \pgf@y=.5\pgflinewidth%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfpathrectanglecorners
+ {\pgfpoint{0}{.5\pgflinewidth}}
+ {\pgfpoint{0}{-.5\pgflinewidth}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% transistor arrow
+
+\def\pgf@circ@find@linescale{
+ % find the scale inverse of the scale factor: line width do not scale
+ % with scale=..., transform shape so we have to counteract it.
+ \iftikz@fullytransformed % this is true if `transform shape` is active
+ % from @Circumscribe https://tex.stackexchange.com/a/474035/38080
+ % Note that this trick is not working inside a `spy` environment...
+ \pgfgettransformentries{\scaleA}{\scaleB}{\scaleC}{\scaleD}{\whatevs}{\whatevs}%
+ \pgfmathsetmacro{\@@factor}{1.0/sqrt(abs(\scaleA*\scaleD-\scaleB*\scaleC))}%
+ \else
+ \pgfmathsetmacro{\@@factor}{1.0}
+ \fi
+}
+
+\pgfdeclareshape{trarrow}{%
+ % this arrow is only filled but grows with the linewidth, more or less
+ % like currarrow do
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \pgf@circ@find@linescale
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgfpoint{0.7*\pgf@circ@res@step +0.5*\@@factor*\pgflinewidth}
+ {0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
+ }
+ % The arrow size should be more or less the same of a currarrow, which is
+ % both filled and stroke, for backward output compatibility (more or less)
+ %
+ % angle \beta W is \pgf@circ@Rlen/\ctikzvalof{current arrow scale}
+ % |-\__ currarrow as the tip at (W,0)
+ % | | and the upper tail at (-0.7*W, 0.8*W)
+ % | \__ it then "overshoot" do to the linew width L
+ % | \__ xangle \alpha
+ % ---0------->
+ %
+ % \beta = atan(0.7/0.8) \alpha=atan(0.8/1.7)
+ % tip overshoot is (L/2)/sin(\alpha) = 1.743*L only in x direction
+ % tail overshoot is -(L/2) in x, and (L/2)/sin(\beta) = 0.7539*L in y
+ %
+ \savedanchor{\northwest}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@circ@find@linescale
+ \pgfpoint{-0.7*\pgf@circ@res@step -0.5*\@@factor*\pgflinewidth}
+ {0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
+ }
+ \savedanchor{\tip}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@circ@find@linescale
+ \pgfpoint{\pgf@circ@res@step + 1.743*\@@factor*\pgflinewidth}{0pt}
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \tip
+ }
+ \anchor{btip}{% this anchor is behind the tip of half a linewidth
+ \tip
+ \pgf@circ@find@linescale
+ \pgf@circ@res@temp=\@@factor\pgflinewidth
+ \advance\pgf@x by -.5\pgf@circ@res@temp
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \northwest
+ \pgf@circ@res@up=\pgf@y
+ \pgf@circ@res@left=\pgf@x
+ \tip
+ \pgf@circ@res@step = \pgf@x
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{fill} % just fill
+ \endpgfscope
+ }
+}
+
+%% Current arrow
+
+\pgfdeclareshape{currarrow}{
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@x=.5\pgf@circ@res@step
+ \pgf@y=\pgf@x%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \pgfpointorigin
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@x =\pgf@circ@res@step
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+
+ \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{draw,fill}
+
+ \endpgfscope
+ }
+}
+
+%% Flow arrow
+
+\pgfdeclareshape{flowarrow}{
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@y=.5\pgf@circ@res@step
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 4
+ \pgf@x=\pgf@circ@res@step%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{text}{% text centered above
+ \pgfpointorigin
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox}
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \pgfpointorigin
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@x =\pgf@circ@res@step
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 4
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{draw}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfnode{currarrow}{tip}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+ }
+}
+
+%% Input arrow
+
+\pgfdeclareshape{inputarrow}{
+ \savedanchor{\northeast}{% this is really not northeast, really -northwest
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@y=.5\pgf@circ@res@step
+ \pgf@x=1.7\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax\pgf@x=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast\pgf@x=0cm\relax}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@x=0cm\relax}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \savedanchor{\tip}{
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \tip
+ }
+ \anchor{tip}{
+ \tip
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 16
+
+ \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{fill}
+
+ \endpgfscope
+ }
+}
+
+
+%% box
+
+\pgfdeclareshape{box}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@circ@res@step = 0.5\pgf@circ@res@step
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+%% box scaled with blocks
+
+\pgfdeclareshape{blockbox}{
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{blocks/scale}\pgf@circ@Rlen}}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{blocks/scale}\pgf@circ@Rlen}
+ \pgfscope
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@step = 0.5\pgf@circ@res@step
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+% full nodes for wire crossing
+
+\pgfdeclareshape{jump crossing}
+{
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \behindbackgroundpath{
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ % horizontal jumper
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
+ \pgfsetbeveljoin
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % vertical, broken path
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+\pgfdeclareshape{plain crossing}
+{
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \behindbackgroundpath{
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ % horizontal jumper
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % vertical, broken path
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.1\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.1\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+
+%%%---------- close: tex/pgfcircshapes
+%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
+%%%---------- open: tex/pgfcircmonopoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Monopoles
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%
+%% Grounds
+%%%%%%%%%%%%%
+
+
+%% Ground symbol
+% #1 -> name
+% #2 -> width
+% #3 -> depth
+% #4 -> code
+\long\def\pgf@circ@declareground#1#2#3#4{
+ \pgfdeclareshape{#1}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{grounds}} % class of these components
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\southeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
+ \pgf@x=#2\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
+ \pgf@y=-#3\pgf@y
+ }
+ \anchor{north}{\pgfpointorigin}
+ \anchor{north east}{\southeast\pgf@y=0pt\relax}
+ \anchor{east}{\southeast\pgf@y=.5\pgf@y}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\southeast\pgf@y=.5\pgf@y\pgf@x=-\pgf@x}
+ \anchor{north west}{\southeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ \anchor{center}{\pgfpointorigin}
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ #4
+ \endpgfscope
+ }
+ }
+}
+
+
+\pgf@circ@declareground{ground}{0.6}{1.6}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+\pgf@circ@declareground{tlground}{0.6}{0.4}{
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+
+\pgf@circ@declareground{rground}{0.6}{1}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{monopoles/rground}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+\pgf@circ@declareground{tground}{0.6}{0}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+}
+
+\pgf@circ@declareground{sground}{0.6}{1.8}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+}
+
+% noiseless ground
+\pgf@circ@declareground{nground}{0.9}{1.6}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.9\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpatharc{0}{180}{0.9\pgf@circ@res@step}
+ \pgfusepath{draw}
+}
+
+% protective ground
+\pgf@circ@declareground{pground}{0.9}{1.8}{
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0pt}{-0.9\pgf@circ@res@step}}{0.9\pgf@circ@res@step}
+ \pgf@circ@draworfill
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+% chassis ground
+\pgf@circ@declareground{cground}{1}{2}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-1.00\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{ 0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{ 0.50\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.25\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+% Contributed by @fotesan https://github.com/fotesan
+% european ground
+\pgf@circ@declareground{eground}{1.1}{1.7}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.1\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+\pgf@circ@declareground{eground2}{1.1}{1.7}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.45\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%%%%%%
+%% Power supplies
+%%%%%%%%%%%%%%%%%%
+
+% Vcc
+\pgfdeclareshape{vcc}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{power supplies}} % class of these components
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \saveddimen{\scaledwidth}{% thanks to @Schrรถdinger's cat on https://tex.stackexchange.com/a/506249/38080
+ \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\gscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
+ \pgfmathsetlength{\pgf@x}{(\ctikzvalof{\ctikzclass/scale}*\gscale*\ctikzvalof{monopoles/vcc/width})*\pgf@circ@Rlen}%
+ }
+ \savedanchor{\northeast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@circ@res@step
+ \pgf@y=3\pgf@x%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{center}{\pgfpointorigin}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ \anchor{text}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=2\pgf@circ@res@step
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \edef\pgf@circ@temp{\ctikzvalof{monopoles/vcc/arrow}}\edef\pgf@temp{legacy}
+ \ifx\pgf@temp\pgf@circ@temp
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \else
+ \pgfsetarrowsend{\pgf@circ@temp}
+ \fi
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% Vee
+\pgfdeclareshape{vee}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{power supplies}} % class of these components
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \saveddimen{\scaledwidth}{% thanks to @Schrรถdinger's cat on https://tex.stackexchange.com/a/506249/38080
+ \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\gscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
+ \pgfmathsetlength{\pgf@x}{(\ctikzvalof{\ctikzclass/scale}*\gscale*\ctikzvalof{monopoles/vcc/width})*\pgf@circ@Rlen}%
+ }
+ \savedanchor{\northeast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@circ@res@step
+ \pgf@y=-3\pgf@x%
+ }
+ \anchor{south}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
+ \anchor{north}{\pgfpointorigin}
+ \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast}
+ \anchor{south west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast\pgf@y=0pt\relax}
+ \anchor{north west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{center}{\pgfpointorigin}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ \anchor{text}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=-2\pgf@circ@res@step
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \edef\pgf@circ@temp{\ctikzvalof{monopoles/vee/arrow}}\edef\pgf@temp{legacy}
+ \ifx\pgf@temp\pgf@circ@temp
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \else
+ \pgfsetarrowsend{\pgf@circ@temp}
+ \fi
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+%%%%%%%%%%%%%%%%
+%% RF elements
+%%%%%%%%%%%%%%%%
+
+% Legacy tlinestub
+% Contributed by Leonardo Azzinnari
+\pgfdeclareshape{tlinestub}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\northeast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
+ \pgf@x=1.2\pgf@circ@res@step
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
+ \pgf@y=.2\pgf@circ@res@step%
+ }
+ % the center is on the left side of the shape for facility of usage
+ \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0.5\pgf@x\relax}
+ \anchor{west}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=0cm\relax}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@x=0cm\pgf@y=-\pgf@y}
+ \anchor{center}{\pgfpointorigin}
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
+ \pgf@circ@res@step=0.6\pgf@circ@scaled@Rlen
+
+ \pgfscope\begin{pgftransparencygroup}
+ \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgf@circ@maybefill
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \end{pgftransparencygroup} \endpgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ }
+}
+
+%% New antennas without tails
+
+% main body of antennas
+\def\pgf@circ@antennabody{%
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{2\pgf@circ@res@step}}
+ \pgfsetbeveljoin
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+% Waves for the antennas.
+\def\pgf@circ@antennawaves{%
+ \pgfscope
+ % define a triangle for clipping the waves
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfusepath{clip}
+ % ...and build the waves as clipped circles
+ \pgf@circ@count@a=8\pgf@circ@res@other=0.5\pgf@circ@res@step
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>2
+ \pgfpathcircle{\pgfpoint{0pt}{\pgf@circ@res@step}}{\the\pgf@circ@count@a*\pgf@circ@res@other}
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% additional shape with the waves
+\pgfdeclareshape{waves}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0pt}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
+ \anchor{bottom}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{north east}{\northeast}
+ \anchor{east}{\northeast\pgf@y=0pt}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@step=0.5\pgf@circ@res@step
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfscope
+ % define a triangle for clipping the waves
+ \pgfpathmoveto{\pgfpoint{-2\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfusepath{clip}
+ % ...and build the waves as clipped circles
+ \c@pgf@counta=8\pgf@circ@res@other=0.5\pgf@circ@res@step
+ \pgfmathloop%
+ \ifnum\c@pgf@counta>1
+ \pgfpathcircle{\pgfpoint{-2\pgf@circ@res@step}{0pt}}{\the\c@pgf@counta*\pgf@circ@res@other}
+ \advance\c@pgf@counta-1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% the three types of antennas: simple, TX, RX. Notice that you can flip them...
+
+\pgfdeclareshape{bareantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=2\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{bottom}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@antennabody
+ }
+}
+
+\pgfdeclareshape{bareTXantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=2\pgf@circ@res@step
+ }
+ \savedanchor{\savedwaves}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=4.2\pgf@circ@res@step
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
+ \pgf@x=\dimexpr-\pgf@x-\wd\pgfnodeparttextbox\relax
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{waves}{\savedwaves}
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{bottom}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@antennabody
+ \pgf@circ@antennawaves
+ }
+}
+
+\pgfdeclareshape{bareRXantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=2\pgf@circ@res@step
+ }
+ \savedanchor{\savedwaves}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-4.2\pgf@circ@res@step
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{waves}{\savedwaves}
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{bottom}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@antennabody
+ \pgftransformxshift{-5.2\pgf@circ@res@step}
+ \pgf@circ@antennawaves
+ }
+}
+
+% Microstrip monopoles
+
+\pgfdeclareshape{mslstub}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\southeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
+ \pgf@y=-.5\pgf@y
+ }
+ \savedanchor{\northwest}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{east}{\southeast\pgf@y=0pt\relax}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+ \anchor{north west}{\northwest}
+ %
+ \anchor{center}{\northwest\pgf@y=0pt\relax}
+ \anchor{left}{\northwest\pgf@y=0pt\relax}
+ \anchor{right}{\southeast\pgf@y=0pt\relax}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ \behindbackgroundpath{
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@right}{\southeast}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@down}{\southeast}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{msrstub}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\southeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt\relax
+ }
+ \savedanchor{\northwest}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/msrstub/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{east}{\southeast\pgf@y=0pt\relax}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+ \anchor{north west}{\northwest}
+ %
+ \anchor{center}{\pgfpointorigin}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ \behindbackgroundpath{
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@right}{\southeast}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@down}{\southeast}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointpolar{135}{\pgf@circ@res@step}}
+ \pgfpatharc{135}{45}{\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpointpolar{45}{\pgf@circ@res@up}}
+ \pgfpatharc{45}{135}{\pgf@circ@res@up}
+ \pgfclosepath
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{msport}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\southeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
+ \pgf@y=-.5\pgf@y
+ }
+ \savedanchor{\northwest}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{east}{\southeast\pgf@y=0pt\relax}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+ \anchor{north west}{\northwest}
+ %
+ \anchor{center}{\northwest\pgf@y=0pt\relax}
+ \anchor{left}{\northwest\pgf@y=0pt\relax}
+ \anchor{right}{\southeast\pgf@y=0pt\relax}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr-.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ }
+ \behindbackgroundpath{
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@right}{\southeast}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@down}{\southeast}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.5*\pgf@circ@res@up}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+% Legacy antennas (with tails)
+\def\pgf@circ@shift@antenna@xy#1#2{%
+ \pgf@y=\dimexpr\pgf@y+#2\pgf@circ@res@step
+ \pgf@x=\dimexpr\pgf@x+#1\pgf@circ@res@step
+\relax}
+
+% Legacy antenna
+\pgfdeclareshape{antenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=4\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{2}}
+ \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{0}{3}\relax}
+ \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{4}\relax}
+ \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{3}}
+ \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
+ \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
+ \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{0}{4}}
+ \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{4}}
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
+
+ \pgftransformxshift{ -4\pgf@circ@res@step }
+
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+% Legacy TX antenna
+\pgfdeclareshape{txantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=4\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
+ \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
+ \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
+ \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
+ \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{4}{2}}
+ \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
+ \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
+ \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
+ % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+% Legacy RX antenna
+\pgfdeclareshape{rxantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=4\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
+ \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
+ \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
+ \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
+ \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{4}{2}}
+ \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
+ \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
+ \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
+ % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ }
+}
+
+% Legacy match
+\pgfdeclareshape{match}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\northeast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@scaled@Rlen
+ \pgf@x=2\pgf@circ@res@step
+ \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@circ@res@step%
+ }
+ % the center is on the left side of the shape for facility of usage
+ \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=0pt\pgf@x=0.5\pgf@x\relax}
+ \anchor{west}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=0cm\relax}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\pgfpointorigin}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@scaled@Rlen
+ \pgf@x=1.5\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \pgf@y=-1.5\ht\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@scaled@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
+ \pgfusepath{fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \endpgfscope
+ }
+}
+
+%%%---------- close: tex/pgfcircmonopoles
+%%%%%%%%%%% Springe nach tex/pgfcircbipoles
+%%%---------- open: tex/pgfcircbipoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%% Generic macro for defining a bipole shape
+% #1 - additional anchors
+% #2 - lower y-size of the bipole (from the center).
+% #3 - #shape is the name of the shape
+% #4 - upper y-size of the bipole (from the center)
+% #5 - width of the bipole
+% #6 - macros drawing the bipole
+%
+\long\def\pgfcircdeclarebipole{%
+ \pgfcircdeclarebipolescaled{default}}
+
+%% Generic macro for defining a bipole shape
+% #1 - scale factor
+% #2 - additional anchors
+% #3 - lower y-size of the bipole (from the center).
+% #4 - #shape is the name of the shape
+% #5 - upper y-size of the bipole (from the center)
+% #6 - width of the bipole
+% #7 - macros drawing the bipole
+%
+\long\def\pgfcircdeclarebipolescaled#1#2#3#4#5#6#7{
+ \pgfdeclareshape{#4shape}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{#1}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\northeast}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@y=#5\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=#6\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\northeastborder}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@y=#5\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=#6\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwestborder}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@y=-#3\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=-#6\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwest}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@y=-#3\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-#6\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\centerpoint}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@circ@res@down=-#3\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up=#5\pgf@circ@scaled@Rlen
+ \pgfpointorigin
+ \pgf@y=\pgf@circ@res@up
+ \advance\pgf@y by\pgf@circ@res@down
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{n}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{north east}{
+ \northeast
+ }
+ \anchor{north west}{
+ \northeast
+ \pgf@x=-\pgf@x
+ }
+ \anchor{ne}{
+ \northeast
+ }
+ \anchor{nw}{
+ \northeast
+ \pgf@x=-\pgf@x
+ }
+ \anchor{e}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{s}{
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{south east}{
+ \southwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \southwest
+ }
+ \anchor{se}{
+ \southwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{sw}{
+ \southwest
+ }
+ \anchor{w}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{east}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{south}{
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{west}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{right}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{above}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{left}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{below}{
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{a}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{b}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \savedanchor{\textanchor}{%
+ \pgf@y=\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \anchor{text}{
+ \textanchor
+ }
+ \anchorborder{%
+ \ifpgf@circuit@bipole@inverted
+ \pgf@circ@res@left=-\pgf@x
+ \pgf@circ@res@right=-\pgf@y
+ \else
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@right=\pgf@y
+ \fi
+ \ifdim\pgf@circ@res@right>0cm
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
+ \else
+ \southwestborder
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
+ \fi
+ }
+
+ #2
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@zero = 0cm
+ \pgf@circ@res@left = -\pgf@x
+ \pgf@circ@res@right = \pgf@x
+ \southwest
+ \pgf@circ@res@down = \pgf@y
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ #7
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ }
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Standard bipole shapes declarations
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+% Resistive components
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Short circuit
+
+%%% NOTICE that the short is really NOT drawn; we trust the fact that its
+%%% natural length is zero.
+\pgfcircdeclarebipole
+{}
+{0}
+{short}
+{0}
+{0}
+{ }
+
+%% Open circuit
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/open/height}}
+{open}
+{\ctikzvalof{bipoles/open/height}}
+{\ctikzvalof{bipoles/open/width}}
+{ }
+
+% multiwire(s)
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/multiwire/height}}
+{multiwire}
+{\ctikzvalof{bipoles/multiwire/height}}
+{\ctikzvalof{bipoles/multiwire/width}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/multiwire/height}}
+{bmultiwire}
+{\ctikzvalof{bipoles/multiwire/height}}
+{\ctikzvalof{bipoles/multiwire/width}}
+{
+ \pgf@circ@res@other=\ctikzvalof{bipoles/multiwire/spacing}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/multiwire/height}}
+{tmultiwire}
+{\ctikzvalof{bipoles/multiwire/height}}
+{\ctikzvalof{bipoles/multiwire/width}}
+{
+ \pgf@circ@res@other=\ctikzvalof{bipoles/multiwire/spacing}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+2\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+}
+
+%
+%
+%% Generic bipole - used as resistor by some (bleah)
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/generic/height}}
+{generic}
+{\ctikzvalof{bipoles/generic/height}}
+{\ctikzvalof{bipoles/generic/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+%
+% generic crossed, suggested by Radvรกnyi Patrik Tamรกs <patrikradvanyi@gmail.com>
+% inherit "generic" properties
+%
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/generic/height}}
+{xgeneric}
+{\ctikzvalof{bipoles/generic/height}}
+{\ctikzvalof{bipoles/generic/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ % cross it
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+%% Generic empty tunable
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/tgeneric/height}}
+{tgeneric}
+{\ctikzvalof{bipoles/tgeneric/height}}
+{\ctikzvalof{bipoles/tgeneric/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Generic asymmetric bipole
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/ageneric/height}}
+{ageneric}
+{\ctikzvalof{bipoles/ageneric/height}}
+{\ctikzvalof{bipoles/ageneric/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+%% Memristor
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/memristor/height}}
+{memristor}
+{\ctikzvalof{bipoles/memristor/height}}
+{\ctikzvalof{bipoles/memristor/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+%% Photoresistor
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/photoresistor/height 2}}
+{photoresistor}
+{\ctikzvalof{bipoles/photoresistor/height}}
+{\ctikzvalof{bipoles/photoresistor/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Thermistor
+\pgfcircdeclarebipolescaled{resistors}
+{{% anchor for labelling the type of dependency
+ \anchor{label}{%
+ \southwest
+ \pgf@x=0.4\pgf@x
+ \pgf@y=1.2\pgf@y
+ }%
+}}
+{\ctikzvalof{bipoles/thermistor/height}}
+{thermistor}
+{\ctikzvalof{bipoles/thermistor/height}}
+{\ctikzvalof{bipoles/thermistor/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ %\pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ %\endpgfscope
+}
+
+%% Thermistor PTC
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/thermistorptc/height 2}}
+{thermistorptc}
+{\ctikzvalof{bipoles/thermistorptc/height}}
+{\ctikzvalof{bipoles/thermistorptc/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Thermistor NTC
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/thermistorntc/height 2}}
+{thermistorntc}
+{\ctikzvalof{bipoles/thermistorntc/height}}
+{\ctikzvalof{bipoles/thermistorntc/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Generic tunable
+\pgfcircdeclarebipolescaled{resistors}
+{
+ \savedanchor{\wiper}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@ya=\ctikzvalof{bipoles/generic potentiometer/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@ya
+ \pgf@xa=\ctikzvalof{bipoles/generic potentiometer/width}\pgf@circ@scaled@Rlen
+ \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/generic potentiometer/wiper pos}-0.5)*\pgf@xa}
+ }
+ \anchor{wiper}{\wiper}
+ \anchor{W}{\wiper}
+}
+{\ctikzvalof{bipoles/generic potentiometer/height 2}}
+{genericpotentiometer}
+{\ctikzvalof{bipoles/generic potentiometer/height}}
+{\ctikzvalof{bipoles/generic potentiometer/width}}
+{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \pgfextractx{\pgf@circ@res@other}{\wiper}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Zig zag resistores
+\def\pgf@circ@zigzag#1{%
+ \divide \pgf@circ@res@step by \numexpr4*\zigs\relax
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \pgf@circ@count@a=\zigs\relax
+ % first half zig
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}}
+ \pgfmathloop%
+ \advance\pgf@circ@count@a by -1\relax% Loop zigs -1 times
+ \ifnum\pgf@circ@count@a>0
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}}
+ \repeatpgfmathloop%
+ % last zig and a half
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+}
+
+%% Resistor
+\pgfcircdeclarebipolescaled{resistors}
+{
+\savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
+}
+{\ctikzvalof{bipoles/resistor/height}}
+{resistor}
+{\ctikzvalof{bipoles/resistor/height}}
+{\ctikzvalof{bipoles/resistor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgf@circ@zigzag{1}
+}
+
+
+%% Variable resistor
+\pgfcircdeclarebipolescaled{resistors}
+{
+\savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
+}
+{\ctikzvalof{bipoles/vresistor/height}}
+{vresistor}
+{\ctikzvalof{bipoles/vresistor/height}}
+{\ctikzvalof{bipoles/vresistor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/vresistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgf@circ@zigzag{.5}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Potentiometer
+\pgfcircdeclarebipolescaled{resistors}
+{
+ \savedanchor{\wiper}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@ya=\ctikzvalof{bipoles/potentiometer/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@ya
+ \pgf@xa=\ctikzvalof{bipoles/potentiometer/width}\pgf@circ@scaled@Rlen
+ \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/potentiometer/wiper pos}-0.5)*\pgf@xa}
+ }
+ \anchor{wiper}{\wiper}
+ \anchor{W}{\wiper}
+ \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
+}
+{\ctikzvalof{bipoles/potentiometer/height 2}}
+{potentiometer}
+{\ctikzvalof{bipoles/potentiometer/height}}
+{\ctikzvalof{bipoles/potentiometer/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/potentiometer/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgf@circ@zigzag{1}
+
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \pgfextractx{\pgf@circ@res@other}{\wiper}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Resistive sensor
+\pgfcircdeclarebipolescaled{resistors}
+{% anchor for labelling the type of dependency
+ \anchor{label}{\southwest\pgf@x=0.4\pgf@x}%
+ \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
+}
+{\ctikzvalof{bipoles/resistivesens/height}}
+{resistivesens}
+{\ctikzvalof{bipoles/resistivesens/height}}
+{\ctikzvalof{bipoles/resistivesens/width}}
+{%
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistivesens/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgf@circ@zigzag{.5}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-.9\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%%%%%%%%%%%%%%
+%% Capacitors
+%%%%%%%%%%%%%
+
+%% Plain Capacitor
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/capacitor/height}}
+{capacitor}
+{\ctikzvalof{bipoles/capacitor/height}}
+{\ctikzvalof{bipoles/capacitor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+}
+
+%% Capacitive sensor
+\pgfcircdeclarebipolescaled{capacitors}
+{
+ \anchor{label}{\southwest\pgf@x=2.6\pgf@x\pgf@y=1.2\pgf@y}%
+}
+{\ctikzvalof{bipoles/capacitor/height}}
+{capacitivesens}
+{\ctikzvalof{bipoles/capacitor/height}}
+{\ctikzvalof{bipoles/capacitor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{2.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-2.6\pgf@circ@res@right}{1.2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-4.4\pgf@circ@res@right}{1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Polar Capacitor (DEPRECATED)
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/pcapacitor/height}}
+{polarcapacitor}
+{\ctikzvalof{bipoles/pcapacitor/height}}
+{\ctikzvalof{bipoles/pcapacitor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgftransformrotate{-90}
+ \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+%% Curved capacitor
+% see https://tex.stackexchange.com/questions/509594/polar-capacitor-orientation-in-circuitikz-seems-wrong
+% for a rationale
+%
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/ccapacitor/height}}
+{ccapacitor}
+{\ctikzvalof{bipoles/ccapacitor/height}}
+{\ctikzvalof{bipoles/ccapacitor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+ \ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgftransformrotate{-90}
+ \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}}
+ \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Electrolytic Capacitor
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/ecapacitor/height}}
+{ecapacitor}
+{\ctikzvalof{bipoles/ecapacitor/height}}
+{\ctikzvalof{bipoles/ecapacitor/width}}
+{
+ \pgfsetrectcap
+ % % % Draw plus pole
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ % % Draw minus pole
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{\ctikzvalof{color}}
+ \pgfusepath{draw,fill}
+ \pgfsetfillcolor{\ctikzvalof{color}}
+ % % plus pole annotation
+ \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
+ {\ctikzvalof{bipoles/ecapacitor/font} $+$}
+}
+
+%% Variable Capacitor
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/vcapacitor/height}}
+{vcapacitor}
+{\ctikzvalof{bipoles/vcapacitor/height}}
+{\ctikzvalof{bipoles/vcapacitor/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfusepath{draw}
+}
+
+
+%% Piezoelectric Element
+
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/piezoelectric/height}}
+{piezoelectric}
+{\ctikzvalof{bipoles/piezoelectric/height}}
+{\ctikzvalof{bipoles/piezoelectric/width}}
+{
+ % \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
+ % \divide \pgf@circ@res@step by 5
+
+ %% Outer markings
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %% Inner Box
+ \pgf@circ@res@step = \pgf@circ@res@right \divide \pgf@circ@res@step by 10
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\pgf@circ@res@left+4*\pgf@circ@res@step}{\pgf@circ@res@up-\pgf@circ@res@step}}
+ {\pgfpoint{\pgf@circ@res@right-4*\pgf@circ@res@step}{\pgf@circ@res@down+\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+ \endpgfscope
+}
+
+%%%%%%%%%%%%%%%
+%% Inductors
+%%%%%%%%%%%%%%%
+
+%% cute inductor
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
+ \ctikzvalof{bipoles/cuteinductor/height} :% even
+ -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
+{cuteinductor}
+{\ctikzvalof{bipoles/cuteinductor/height}}
+{\ctikzvalof{bipoles/cuteinductor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% cute inductive sensor
+\pgfcircdeclarebipolescaled{inductors}
+{% anchor for labelling the type of dependency
+ \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}%
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
+ \ctikzvalof{bipoles/cuteinductor/height} :% even
+ -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
+{scuteinductor}
+{\ctikzvalof{bipoles/cuteinductor/height}}
+{\ctikzvalof{bipoles/cuteinductor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% cute choke
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
+ \ctikzvalof{bipoles/cuteinductor/height} :% even
+ -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/cutechoke/lower coil height}}
+{cutechoke}
+{\ctikzvalof{bipoles/cutechoke/height}}
+{\ctikzvalof{bipoles/cutechoke/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cutechoke/coil aspect}*\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen/(\ctikzvalof{bipoles/cutechoke/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cutechoke/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cutechoke/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cutechoke/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
+ \pgfusepath{stroke}
+
+ \ifpgf@circuit@bipole@twolineschoke
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
+ \pgfusepath{stroke}
+ \fi
+}
+
+%% variable cute inductor
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
+ \ctikzvalof{bipoles/cuteinductor/height} :% even
+ -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}
+{vcuteinductor}
+{\ctikzvalof{bipoles/vcuteinductor/height}}
+{\ctikzvalof{bipoles/vcuteinductor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% american inductor
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?%
+ 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even
+ 0) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/americaninductor/height 2}}
+{americaninductor}
+{\ctikzvalof{bipoles/americaninductor/height}}
+{\ctikzvalof{bipoles/americaninductor/width}}
+{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+
+%% american inductive sensor
+\pgfcircdeclarebipolescaled{inductors}
+{% anchor for labelling the type of dependency
+ \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}%
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?%
+ 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even
+ 0) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/americaninductor/height 2}}
+{samericaninductor}
+{\ctikzvalof{bipoles/americaninductor/height}}
+{\ctikzvalof{bipoles/americaninductor/width}}
+{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% variable american inductor
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/vamericaninductor/coils},2) ?%
+ 2*\ctikzvalof{bipoles/vamericaninductor/coil height} :% even
+ 0) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/vamericaninductor/height 2}}
+{vamericaninductor}
+{\ctikzvalof{bipoles/vamericaninductor/height}}
+{\ctikzvalof{bipoles/vamericaninductor/width}}
+{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/vamericaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Generic bipole, filled - used as inductor by some
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \anchor{midtap}{\northeast\pgf@x=0pt\relax}
+}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{fullgeneric}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{\ctikzvalof{bipoles/fullgeneric/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfusepath{draw,fill}
+}
+
+%% Generic sensor, filled - used as inductive sensor by some
+\pgfcircdeclarebipolescaled{inductors}
+{% anchor for labelling the type of dependency
+ \anchor{label}{\southwest\pgf@x=0.4\pgf@x\pgf@y=2\pgf@y}%
+ \anchor{midtap}{\northeast\pgf@x=0pt\relax}
+}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{sfullgeneric}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{\ctikzvalof{bipoles/fullgeneric/width}}
+{
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw,fill}
+ %\pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ %\endpgfscope
+}
+
+%% Generic full tunable
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \anchor{midtap}{\northeast\pgf@x=0pt\relax}
+}
+{\ctikzvalof{bipoles/tfullgeneric/height}}
+{tfullgeneric}
+{\ctikzvalof{bipoles/tfullgeneric/height}}
+{\ctikzvalof{bipoles/tfullgeneric/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw,fill}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%%%%%%%%%%%
+%% Battery
+%%%%%%%%%%%
+
+%% Battery
+\pgfcircdeclarebipolescaled{batteries}
+{}
+{\ctikzvalof{bipoles/battery/height}}
+{battery}
+{\ctikzvalof{bipoles/battery/height}}
+{\ctikzvalof{bipoles/battery/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 6
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \ifpgf@circ@fixbatteries
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+}
+
+
+%% Battery 1 % poles with equl thickness
+
+\pgfcircdeclarebipolescaled{batteries}
+{}
+{\ctikzvalof{bipoles/battery1/height}}
+{battery1}
+{\ctikzvalof{bipoles/battery1/height}}
+{\ctikzvalof{bipoles/battery1/width}}
+{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \ifpgf@circ@fixbatteries
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+}
+
+%% Battery 2 % negative pole thicker
+
+\pgfcircdeclarebipolescaled{batteries}
+{}
+{\ctikzvalof{bipoles/battery2/height}}
+{battery2}
+{\ctikzvalof{bipoles/battery2/height}}
+{\ctikzvalof{bipoles/battery2/width}}
+{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \ifpgf@circ@fixbatteries
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{3\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{3\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%
+%% Round and diamond sources
+%%%%%%%%%%%
+
+%% Independent voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsource/height}}
+{vsource}
+{\ctikzvalof{bipoles/vsource/height}}
+{\ctikzvalof{bipoles/vsource/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+%% To change the internal symbols of the voltage source american style
+\ctikzset{bipoles/vsourceam/inner plus/.initial={$+$}}
+\ctikzset{bipoles/vsourceam/inner minus/.initial={$-$}}
+%% Independent voltage source - American style
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsourceam/height}}
+{vsourceAM}
+{\ctikzvalof{bipoles/vsourceam/height}}
+{\ctikzvalof{bipoles/vsourceam/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifpgf@circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner plus}}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner minus}}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner minus}}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner plus}}
+ \fi
+}
+
+%% Independent sinusoidal voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsourcesin/height}}
+{vsourcesin}
+{\ctikzvalof{bipoles/vsourcesin/height}}
+{\ctikzvalof{bipoles/vsourcesin/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Square Voltage source - contributed by Alistair Kwan
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsourcesquare/height}}
+{vsourcesquare}
+{\ctikzvalof{bipoles/vsourcesquare/height}}
+{\ctikzvalof{bipoles/vsourcesquare/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Triangle Voltage source - contributed by Ralf Farkas
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsourcetri/height}}
+{vsourcetri}
+{\ctikzvalof{bipoles/vsourcetri/height}}
+{\ctikzvalof{bipoles/vsourcetri/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% PV Source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/pvsource/height}}
+{pvsource}
+{\ctikzvalof{bipoles/pvsource/height}}
+{\ctikzvalof{bipoles/pvsource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %Arrow Part
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty Source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/esource/height}}
+{esource}
+{\ctikzvalof{bipoles/esource/height}}
+{\ctikzvalof{bipoles/esource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+}
+
+%% DC Current Source with open shape
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/dcisource/height}}
+{dcisource}
+{\ctikzvalof{bipoles/dcisource/height}}
+{\ctikzvalof{bipoles/dcisource/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@maybefill
+ \edef\@@angle{\ctikzvalof{bipoles/dcisource/angle}}
+ \pgfpathmoveto{\pgfpointpolar{\@@angle}{\pgf@circ@res@up}}
+ \pgfpatharc{\@@angle}{-\@@angle}{\pgf@circ@res@up}
+ \pgfpathmoveto{\pgfpointpolar{180-\@@angle}{\pgf@circ@res@up}}
+ \pgfpatharc{180-\@@angle}{180+\@@angle}{\pgf@circ@res@up}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% DC-Voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/dcvsource/height}}
+{dcvsource}
+{\ctikzvalof{bipoles/dcvsource/height}}
+{\ctikzvalof{bipoles/dcvsource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
+ \pgfusepath{draw}
+}
+
+%% Independent current source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isource}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+}
+
+%% Independent double oo source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/oosource/height}}
+{oosource}
+{\ctikzvalof{bipoles/oosource/height}}
+{\ctikzvalof{bipoles/oosource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
+ \pgf@circ@maybefill
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
+ \pgf@circ@draworfill
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
+ \pgfusepath{draw}
+}
+
+% % % winding symbols
+% triangle
+\def\pgf@circ@delta#1{
+ \pgfscope
+ \pgftransformscale{-.01\pgf@circ@res@left*#1}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \pgftransformrotate{-\pgfcircmathresult}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0}{.866\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgfusepath{stroke}
+ \endpgfscope
+}
+
+% star
+\def\pgf@circ@wye#1{
+ \pgfscope
+ \pgftransformscale{-.015\pgf@circ@res@left*#1}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \pgftransformrotate{-\pgfcircmathresult}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpointpolar{-30}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpointpolar{-150}{\pgf@circ@res@down}}
+ \pgfusepath{stroke}
+ \endpgfscope
+}
+
+% zigzag
+\def\pgf@circ@zig#1{
+ \pgfscope
+ \pgftransformscale{-.015\pgf@circ@res@left*#1}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \pgftransformrotate{-\pgfcircmathresult}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpointpolar{90}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{60}{\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpointpolar{210}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{0}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpointpolar{330}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{-60}{\pgf@circ@res@up}}
+ \pgfusepath{stroke}
+ \endpgfscope
+}
+
+% % % % round three-phase transformer
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/oosourcetrans/height}}
+{oosourcetrans}
+{\ctikzvalof{bipoles/oosourcetrans/height}}
+{\ctikzvalof{bipoles/oosourcetrans/width}}
+{
+
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
+ \pgf@circ@maybefill
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@right}{0}}
+ {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
+ \pgf@circ@draworfill
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
+ \pgfusepath{draw}
+
+
+% % % % draw inner symbols
+
+ %%primary winding
+ \ifpgf@circ@prim@delta
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
+ \pgf@circ@delta{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@prim@wye
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
+ \pgf@circ@wye{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@prim@zig
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
+ \pgf@circ@zig{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
+ \endpgfscope
+ \fi\fi\fi
+
+ %%secondary winding
+ \ifpgf@circ@sec@delta
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
+ \pgf@circ@delta{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@sec@wye
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
+ \pgf@circ@wye{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@sec@zig
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
+ \pgf@circ@zig{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
+ \endpgfscope
+ \fi\fi\fi
+}
+
+
+% % % % ooosource for three phase transformer
+\pgfcircdeclarebipolescaled{sources}
+{
+ \anchor{right}{
+ \northeast
+ \pgf@y=0pt
+ \pgfmathparse{
+ \ctikzvalof{bipoles/ooosource/circleoffset}* sin(30) +
+ %%the sqrt must be > 0, the circles have to intersect
+ sqrt(
+ pow(\ctikzvalof{bipoles/ooosource/circlesize},2) -
+ pow(\ctikzvalof{bipoles/ooosource/circleoffset}*cos(30),2)
+ )
+ }
+ \pgf@x=\pgfmathresult\pgf@x
+ }
+ \anchor{east}{
+ \northeast
+ \pgf@y=0pt
+ }
+ \savedanchor{\centerprim}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen
+ \pgf@y=0pt
+ \pgf@x=.5\pgf@circ@scaled@Rlen
+ }
+ \anchor{centerprim}{
+ \centerprim
+ }
+ \savedanchor{\centersec}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen
+ \pgfpointpolar{60}{.5\pgf@circ@scaled@Rlen}
+ \pgf@y=-\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{centersec}{
+ \centersec
+ }
+ \savedanchor{\centertert}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen
+ \pgfpointpolar{60}{.5\pgf@circ@scaled@Rlen}
+ \pgf@y=\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{centertert}{
+ \centertert
+ }
+
+ % add some anchors in case the are needed :)
+ \anchor{prim1}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centerprim}{\pgfpointpolar{135}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{prim2}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centerprim}{\pgfpointpolar{-135}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{sec1}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centersec}{\pgfpointpolar{0}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{sec2}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centersec}{\pgfpointpolar{45}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{sec3}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centersec}{\pgfpointpolar{90}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{tert1}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centertert}{\pgfpointpolar{0}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{tert2}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centertert}{\pgfpointpolar{-45}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{tert3}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centertert}{\pgfpointpolar{-90}{.5\pgf@circ@scaled@Rlen}}
+ }
+}
+{\ctikzvalof{bipoles/ooosource/height}}
+{ooosource}
+{\ctikzvalof{bipoles/ooosource/height}}
+{\ctikzvalof{bipoles/ooosource/height}}
+{
+% \pgf@circ@res@other = \ctikzvalof{bipoles/ooosource/vectorgroup} \pgf@circ@scaled@Rlen
+
+% % filling
+% left
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@left}{0}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left}
+ \pgf@circ@maybefill
+
+ % up
+ \pgfscope
+ \pgfpointorigin
+ \pgfpathcircle{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}
+ \pgf@circ@maybefill
+ \endpgfscope
+% down
+ \pgfscope
+ \pgfpointorigin
+ \pgfpathcircle{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+% drawing
+ % left
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@left}{0}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left}
+ \pgfusepath{draw}
+
+ % up
+ \pgfscope
+ \pgfpointorigin
+ \pgfpathcircle{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}
+ \pgfusepath{draw}
+ \endpgfscope
+
+% % % draw inner symbols
+
+% % primary winding
+ \ifpgf@circ@prim@delta
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left}
+ \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@prim@wye
+ \pgfscope
+ \pgftransformxshift{.6\pgf@circ@res@left}
+ \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@prim@zig
+ \pgfscope
+ \pgftransformxshift{.6\pgf@circ@res@left}
+ \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+ \fi\fi\fi
+
+% % secondary winding
+ \ifpgf@circ@sec@delta
+ \pgfscope
+ \pgfpointorigin
+ \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
+ \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@sec@wye
+ \pgfscope
+ \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
+ \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@sec@zig
+ \pgfscope
+ \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
+ \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+ \fi\fi\fi
+
+% % tertiary winding
+ \ifpgf@circ@tert@delta
+ \pgfscope
+ \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
+ \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@tert@wye
+ \pgfscope
+ \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
+ \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@tert@zig
+ \pgfscope
+ \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
+ \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+ \fi\fi\fi
+}
+
+%% Independent current source - American
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isourceam/height}}
+{isourceAM}
+{\ctikzvalof{bipoles/isourceam/height}}
+{\ctikzvalof{bipoles/isourceam/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% Independent sinusoidal current source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isourcesin}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty controlled source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/ecsource/height}}
+{ecsource}
+{\ctikzvalof{bipoles/ecsource/height}}
+{\ctikzvalof{bipoles/ecsource/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+}
+
+%% Controlled voltage source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsource/height}}
+{cvsource}
+{\ctikzvalof{bipoles/cvsource/height}}
+{\ctikzvalof{bipoles/cvsource/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+%% To change the internal symbols of the controlled voltage source american style
+\ctikzset{bipoles/cvsourceam/inner plus/.initial={$+$}}
+\ctikzset{bipoles/cvsourceam/inner minus/.initial={$-$}}
+%% Controlled voltage source - American
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsourceam/height}}
+{cvsourceAM}
+{\ctikzvalof{bipoles/cvsourceam/height}}
+{\ctikzvalof{bipoles/cvsourceam/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifpgf@circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{\ctikzvalof{bipoles/cvsourceam/inner plus}}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{\ctikzvalof{bipoles/cvsourceam/inner minus}}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{\ctikzvalof{bipoles/cvsourceam/inner minus}}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{\ctikzvalof{bipoles/cvsourceam/inner plus}}
+ \fi
+}
+
+%% Controlled sinusoidal voltage source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{cvsourcesin}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{\ctikzvalof{bipoles/cvsourcesin/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Controlled sinusoidal current source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{cisourcesin}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{\ctikzvalof{bipoles/cvsourcesin/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Controlled current source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cisource/height}}
+{cisource}
+{\ctikzvalof{bipoles/cisource/height}}
+{\ctikzvalof{bipoles/cisource/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Controlled current source - American
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cisourceam/height}}
+{cisourceAM}
+{\ctikzvalof{bipoles/cisourceam/height}}
+{\ctikzvalof{bipoles/cisourceam/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% Cute Independent voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsource/height}}
+{vsourceC}
+{\ctikzvalof{bipoles/vsource/height}}
+{\ctikzvalof{bipoles/vsource/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Cute Independent current source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isourceC}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Cute Controlled voltage source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsource/height}}
+{cvsourceC}
+{\ctikzvalof{bipoles/cvsource/height}}
+{\ctikzvalof{bipoles/cvsource/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Cute Controlled current source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cisource/height}}
+{cisourceC}
+{\ctikzvalof{bipoles/cisource/height}}
+{\ctikzvalof{bipoles/cisource/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@down}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Noise voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsource/height}}
+{vsourceN}
+{\ctikzvalof{bipoles/vsource/height}}
+{\ctikzvalof{bipoles/vsource/width}}
+{
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ %
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax
+ \edef\pgf@noise@temp{dashed}
+ \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}}
+ \ifx\pgf@noise@temp\pgf@noise@fill
+ % fillable in this case
+ \pgf@circ@draworfillandclip
+ \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thinner\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ %
+ \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \else
+ \pgfsetfillcolor{\pgf@noise@fill}
+ \pgfusepath{draw,fill}
+ \fi
+ \endpgfscope
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+%% Noise current source
+
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isourceN}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ %
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax
+ \edef\pgf@noise@temp{dashed}
+ \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}}
+ \ifx\pgf@noise@temp\pgf@noise@fill
+ % fillable in this case
+ \pgf@circ@draworfillandclip
+ \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thinner\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ %
+ \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \else
+ \pgfsetfillcolor{\pgf@noise@fill}
+ \pgfusepath{draw,fill}
+ \fi
+ \endpgfscope
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%%
+%% Diodes
+%%%%%%%%%%%%%%
+
+%% Black generic diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fulldiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black Zener diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black alternative zigzag Zener diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullzzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black Schottky diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullsdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Black tunnel diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fulltdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%
+% draw LED arrows
+%
+\def\pgf@circ@draw@ledarrows{%
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \ifpgf@led@fliparrows
+ \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-0.6\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@right}{0.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{1.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \else
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \fi
+}
+%
+% ---and photodiode arrows
+%
+\def\pgf@circ@draw@pdarrows{%
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latexslim}
+ \ifpgf@pd@fliparrows
+ \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-0.6\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@right}{0.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{1.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \else
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \fi
+}
+%% Black light emitting diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fulllediode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgf@circ@draw@ledarrows
+}
+
+%% Black photodiode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullpdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgf@circ@draw@pdarrows
+}
+
+%% Black varcap
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/varcap/height}}
+{fullvarcap}
+{\ctikzvalof{bipoles/varcap/height}}
+{\ctikzvalof{bipoles/varcap/width}}
+{
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfusepath{draw,fill}
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Code for the diode triangle
+\def\pgf@circ@basicdiodeshape{
+ % \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfscope
+ % to allow filling, we need to draw explicitly the stroke here.
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \ifpgf@circuit@bipole@strokedsymbol
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+ % \endpgfscope
+}
+
+%% Empty generic diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptydiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty Zener diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptyzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty alternative zigzag Zener diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptyzzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%% Empty Schottky diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptysdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty tunnel diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptytdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty light emitting diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptylediode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgf@circ@draw@ledarrows
+}
+
+%% Empty photodiode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptypdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgf@circ@draw@pdarrows
+}
+
+%% Empty varcap
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/varcap/height}}
+{emptyvarcap}
+{\ctikzvalof{bipoles/varcap/height}}
+{\ctikzvalof{bipoles/varcap/width}}
+{
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ % \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfscope
+ % to allow filling, we need to draw explicitily the stroke here.
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \ifpgf@circuit@bipole@strokedsymbol
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty bidirectionaldiode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{emptybidirectionaldiode}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{\ctikzvalof{bipoles/bidirectionaldiode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgf@circ@draworfill
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%% Full bidirectionaldiode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{fullbidirectionaldiode}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{\ctikzvalof{bipoles/bidirectionaldiode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw, fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%% Black thyristor
+\pgfcircdeclarebipolescaled{diodes}
+{
+ \anchor{gate}{\northeast}
+ \anchor{anode}{\southwest\pgf@y=0cm}
+ \anchor{G}{\northeast}
+ \anchor{cathode}{\northeast\pgf@y=0cm }
+}
+{\ctikzvalof{tripoles/thyristor/height 2}}
+{fullthyristor}
+{\ctikzvalof{tripoles/thyristor/height}}
+{\ctikzvalof{tripoles/thyristor/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty thyristor
+
+\pgfcircdeclarebipolescaled{diodes}
+{
+ \anchor{gate}{\northeast}
+ \anchor{anode}{\southwest\pgf@y=0cm}
+ \anchor{G}{\northeast}
+ \anchor{cathode}{\northeast\pgf@y=0cm }
+}
+{\ctikzvalof{tripoles/thyristor/height 2}}
+{emptythyristor}
+{\ctikzvalof{tripoles/thyristor/height}}
+{\ctikzvalof{tripoles/thyristor/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfscope
+ % to allow filling, we need to draw explicitily the stroke here.
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \ifpgf@circuit@bipole@strokedsymbol
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%% Empty triac
+\pgfcircdeclarebipolescaled{diodes}
+{
+ \anchor{gate}{\northeast}
+ \anchor{anode}{\southwest\pgf@y=0cm}
+ \anchor{G}{\northeast}
+ \anchor{cathode}{\northeast\pgf@y=0cm }
+}
+{\ctikzvalof{tripoles/triac/height}}
+{emptytriac}
+{\ctikzvalof{tripoles/triac/height}}
+{\ctikzvalof{tripoles/triac/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgf@circ@draworfill
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%% Full triac
+\pgfcircdeclarebipolescaled{diodes}
+{
+ \anchor{gate}{\northeast}
+ \anchor{anode}{\southwest\pgf@y=0cm}
+ \anchor{G}{\northeast}
+ \anchor{cathode}{\northeast\pgf@y=0cm }
+}
+{\ctikzvalof{tripoles/triac/height}}
+{fulltriac}
+{\ctikzvalof{tripoles/triac/height}}
+{\ctikzvalof{tripoles/triac/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%
+%% switches
+%%%%%%%%%%%%%
+
+%% (Closing) SPST
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/spst/depth}}
+{cspst}
+{\ctikzvalof{bipoles/spst/height}}
+{\ctikzvalof{bipoles/spst/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpointpolar{90}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{90}{-20}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Opening SPST
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/spst/depth}}
+{ospst}
+{\ctikzvalof{bipoles/spst/height}}
+{\ctikzvalof{bipoles/spst/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{-10}{90}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Normal open Switch
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/nos/depth}}
+{nos}
+{\ctikzvalof{bipoles/nos/height}}
+{\ctikzvalof{bipoles/nos/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+}
+
+%% Normal closed Switch
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/ncs/depth}}
+{ncs}
+{\ctikzvalof{bipoles/ncs/height}}
+{\ctikzvalof{bipoles/ncs/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Push Button
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/pushbutton/height 2}}
+{pushbutton}
+{\ctikzvalof{bipoles/pushbutton/height}}
+{\ctikzvalof{bipoles/pushbutton/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+
+%% Normally closed Push Button
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/pushbutton/height 2}}
+{ncpushbutton}
+{\ctikzvalof{bipoles/pushbutton/height}}
+{\ctikzvalof{bipoles/pushbutton/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ % Warning, if the nodes will have a class, we have to touch this.
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp}}
+ \pgfpathmoveto{\pgfpoint{0}{-\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ %
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+%%% reed switches
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/reed/depth}}
+{reed}
+{\ctikzvalof{bipoles/reed/height}}
+{\ctikzvalof{bipoles/reed/width}}
+{
+ % this is designed to be the same as a "nos".
+ \pgfmathsetmacro{\@@tmpx}{0.9*\ctikzvalof{bipoles/nos/width}/\ctikzvalof{bipoles/reed/width}}
+ \pgfmathsetmacro{\@@tmpy}{\ctikzvalof{bipoles/nos/height}/\ctikzvalof{bipoles/reed/height}}
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ % eclosure
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@up}{\pgf@circ@res@up}}
+ \pgfpatharc{90}{-90}{\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@up}{-\pgf@circ@res@up}}
+ \pgfpatharc{270}{90}{\pgf@circ@res@up}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ % switch
+ \pgfpathmoveto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{\@@tmpy\pgf@circ@res@up}}
+ % connection lines
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ % connection lines
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+}
+
+% cute switch "to" shapes help function
+% #1 -> name
+% #2 -> barposition
+% #3 -> arrowcode
+\long\def\pgfcircdeclarecutesw#1#2#3{
+ \pgfcircdeclarebipolescaled{switches}
+ {
+ \savedanchor\midlever{
+ % these values are calculated when we create the definition of the shape.
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgf@circ@res@down = -.5\pgf@y
+ \pgf@circ@res@up = .5\pgf@y
+ \pgfextracty{\pgf@circ@res@other}{#2}
+ \pgf@x=0pt
+ \pgf@y=.5\pgf@circ@res@other
+ }
+ % radius of the connector
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ % If cnnecting nodes are scaled, we have to modify this
+ \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % shape type
+ \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
+ % mid of the lever, to stack switches
+ \anchor{mid}{\midlever}
+ \anchor{cout}{\northeast \pgf@y=0cm}
+ \anchor{cin}{\southwest\pgf@y=0cm}
+ \anchor{out}{\northeast \pgf@y=0cm\advance\pgf@x by \radius}
+ \anchor{in}{\southwest\pgf@y=0cm\advance\pgf@x by -\radius}
+ }
+ {\ctikzvalof{bipoles/cuteswitch/height 2}}
+ {#1}
+ {\ctikzvalof{bipoles/cuteswitch/height}}
+ {\ctikzvalof{bipoles/cuteswitch/width}}{
+ \pgfscope
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ % If cnnecting nodes are scaled, we have to modify this
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgfsetlinewidth{2\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{#2}
+ \pgfsetroundcap\pgfusepath{draw}
+ \endpgfscope
+ \pgfscope % arrow
+ #3
+ \endpgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out}{\pgfusepath{draw}}
+ }
+}
+
+%% closed cute switch
+\pgfcircdeclarecutesw{cuteclosedswitch}
+ {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
+ {}
+
+%% open cute switch
+\pgfcircdeclarecutesw{cuteopenswitch}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ {}
+
+%% closing cute switch
+\pgfcircdeclarecutesw{cuteclosingswitch}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ {
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{70}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{70}{-10}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+ }
+
+%% opening cute switch
+\pgfcircdeclarecutesw{cuteopeningswitch}
+ {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
+ {
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{-10}{60}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+ }
+
+%%%%%%%%%%%%%%%%%
+%% Instruments
+%%%%%%%%%%%%%%%%%
+
+% % METERINGSHAPE
+\long\def\drawmeteringcircle{
+ \def\pgf@circ@temp{right}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \def\pgf@circ@temp{below}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \pgf@circ@res@step=1.2\pgf@circ@res@up
+ \fi
+ \fi
+ %draw connections to circle
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ %draw circle
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgf@circ@draworfill
+ \endpgfscope
+ %draw arrow
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%AMPEREMETER
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/ammeter/height}}
+{ammeter}
+{\ctikzvalof{bipoles/ammeter/height}}
+{\ctikzvalof{bipoles/ammeter/width}}
+{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\pgf@circ@font@bold{A}}{}{}
+}
+%OHMMETER
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/ohmmeter/height}}
+{ohmmeter}
+{\ctikzvalof{bipoles/ohmmeter/height}}
+{\ctikzvalof{bipoles/ohmmeter/width}}
+{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
+}
+%VOLTMETER
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/voltmeter/height}}
+{voltmeter}
+{\ctikzvalof{bipoles/voltmeter/height}}
+{\ctikzvalof{bipoles/voltmeter/width}}
+{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\pgf@circ@font@bold{V}}{}{}
+
+}
+
+% oscilloscope, suggested by @nobrl https://github.com/circuitikz/circuitikz/issues/176
+\pgfcircdeclarebipolescaled{instruments}
+{
+ \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
+ \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/oscope/height}}
+{oscope}
+{\ctikzvalof{bipoles/oscope/height}}
+{\ctikzvalof{bipoles/oscope/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\southwest}
+ \pgfextracty{\pgf@circ@res@down}{\southwest}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfscope
+ \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ % this would create a round (analog?) scope...
+ % \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ % get the rotation
+ \ifpgf@circuit@straightinstruments
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \else
+ \edef\rot{0}
+ \fi
+ % and unrotate the scope
+ \pgfscope
+ \pgftransformrotate{\rot}
+ % grid
+ \pgfscope
+ \pgfsetlinewidth{0.5\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfpathgrid[stepx=\pgf@circ@res@step, stepy=\pgf@circ@res@step]%
+ {\pgfpoint{0.75\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ {\pgfpoint{0.75\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfsetstrokeopacity{0.5}
+ \pgfusepath{draw}
+ \endpgfscope
+ % function displayed, thanks to
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% generic round meter with always horizontal text, no arrow
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/esource/height}}
+{rmeter}
+{\ctikzvalof{bipoles/esource/height}}
+{\ctikzvalof{bipoles/esource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ % draw the text label
+ % get the rotation
+ \ifpgf@circuit@straightinstruments
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \else
+ \edef\rot{0}
+ \fi
+ % and unrotate the scope
+ \pgfscope
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgftransformrotate{\rot}
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+ \endpgfscope
+}
+
+% generic round meter with always horizontal text, with arrow
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/esource/height}}
+{rmeterwa}
+{\ctikzvalof{bipoles/esource/height}}
+{\ctikzvalof{bipoles/esource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ % draw the text label
+ % get the rotation
+ \ifpgf@circuit@straightinstruments
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \else
+ \edef\rot{0}
+ \fi
+ % and unrotate the scope
+ \pgfscope
+ \pgftransformrotate{\rot}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ % arrow: create a center hole to have better visual
+ \pgfscope
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ % next open a circle into it
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{.6\pgf@circ@res@up}}{\pgfpoint{.6\pgf@circ@res@left}{0}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfsetarrowsend{latexslim}
+ % the arrow is better if it has a bit of breath and it's not 45ยบ
+ \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@right}{1.2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgftext[center]{\ctikzvalof{bipoles/twoport/text}}
+ \endpgfscope
+}
+
+% generic square meter with always horizontal text
+\pgfcircdeclarebipolescaled{instruments}
+{
+ \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
+ \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/smeter/height}}
+{smeter}
+{\ctikzvalof{bipoles/smeter/height}}
+{\ctikzvalof{bipoles/smeter/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\southwest}
+ \pgfextracty{\pgf@circ@res@down}{\southwest}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfscope
+ \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ % get the rotation
+ \ifpgf@circuit@straightinstruments
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \else
+ \edef\rot{0}
+ \fi
+ % and unrotate the scope
+ \pgfscope
+ \pgftransformrotate{\rot}
+ % the metering window
+ \pgfscope
+ \def\@starta{105}\def\@stopa{75}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftransformshift{\pgfpoint{0pt}{-1.8\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{\@starta}{2\pgf@circ@res@up}}
+ \pgfpatharc{\@starta}{\@stopa}{2\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
+ \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
+ \pgfclosepath
+ \pgfpathmoveto{\pgfpointpolar{80}{2\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{80}{2.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgftext[center, y=0.5\pgf@circ@res@down]{\ctikzvalof{bipoles/twoport/text}}
+ \endpgfscope
+}
+
+% probes qucs style:
+% #1 : name
+% #2 : extra code
+\long\def\pgfcirc@qucsprobe#1#2{
+ \pgfcircdeclarebipolescaled{instruments}
+ {
+ \anchor{v+}{\southwest\pgf@x=0.6\pgf@x}
+ \anchor{v-}{\southwest\pgf@x=-0.6\pgf@x}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ }
+ {\ctikzvalof{bipoles/qmeter/depth}}
+ {#1}
+ {\ctikzvalof{bipoles/qmeter/height}}
+ {\ctikzvalof{bipoles/qmeter/width}}
+ {
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\southwest}
+ \pgfextracty{\pgf@circ@res@down}{\southwest}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfscope
+ \pgfscope
+ \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \def\@starta{103}\def\@stopa{77}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{0pt}{-1.7\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{\@starta}{2.1\pgf@circ@res@up}}
+ \pgfpatharc{\@starta}{\@stopa}{2.1\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
+ \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
+ \pgfclosepath
+ \pgfpathmoveto{\pgfpointpolar{83}{2.1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{83}{2.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgf@circ@draworfill
+ \endpgfscope
+ #2
+ \endpgfscope
+ }
+}
+
+\pgfcirc@qucsprobe{qiprobe}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \pgfnode{currarrow}{center}{}{}{}
+}
+
+\pgfcirc@qucsprobe{qvprobe}{
+ \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{0pt}}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
+ \pgfusepath{draw}
+ \pgfscope
+ % "+" and "-", drawn so that they scale correctly
+ \pgfsetlinewidth{2\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-1.5\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-3.5\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+\pgfcirc@qucsprobe{qpprobe}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \pgfnode{currarrow}{center}{}{}{}
+ \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{-4\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{-4\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfscope
+ % "+" and "-", drawn so that they scale correctly
+ \pgfsetlinewidth{2\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-2\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-4\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right-4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% current loop for oscope and similar: stylized
+\pgfcircdeclarebipolescaled{instruments}
+{
+ \anchor{i}{\northeast\pgf@x=0pt\relax}
+ \anchor{text}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/iloop/height}}
+{iloop}
+{\ctikzvalof{bipoles/iloop/height}}
+{\ctikzvalof{bipoles/iloop/width}}
+{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@down=-\pgf@circ@res@up
+ \pgf@circ@res@left=-\pgf@circ@res@right
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcolor{\ctikzvalof{color}}
+ % external ellipse
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ % next the opening to the left
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
+ {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathellipse{\pgfpointorigin}{
+ \pgfpoint{0pt}{0.8\pgf@circ@res@up}}{
+ \pgfpoint{0.4\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ % internal wire
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % and the contact line up
+ \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% current loop for oscope and similar: real (double connection)
+\pgfcircdeclarebipolescaled{instruments}
+{
+ \anchor{i+}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@step=0.4\pgf@circ@res@right
+ \pgf@circ@res@other=0.8\pgf@circ@res@up
+ \pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgf@y=\pgf@circ@res@up
+ }
+ \anchor{i-}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@step=0.4\pgf@circ@res@right
+ \pgf@circ@res@other=0.8\pgf@circ@res@up
+ \pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgf@y=\pgf@circ@res@up
+ }
+ \anchor{text}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/iloop/height}}
+{iloop2}
+{\ctikzvalof{bipoles/iloop/height}}
+{\ctikzvalof{bipoles/iloop/width}}
+{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@down=-\pgf@circ@res@up
+ \pgf@circ@res@left=-\pgf@circ@res@right
+ % must be the same than internal i+ and i- anchors definition
+ \pgf@circ@res@step=0.4\pgf@circ@res@right
+ \pgf@circ@res@other=0.8\pgf@circ@res@up
+ \def\@plus{\pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}}
+ \def\@minus{\pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}}
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcolor{\ctikzvalof{color}}
+ % external ellipse
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ % next the opening to the left
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
+ {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathmoveto{\@plus}
+ \pgfpatharc{105}{435}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfusepath{draw}
+ \endpgfscope
+ % internal wire
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % and the contact line up
+ % I use ...left and ---right as temporal lengths here to avoid defining more
+ \pgfextractx{\pgf@circ@res@left}{\@plus}
+ \pgfextractx{\pgf@circ@res@right}{\@minus}
+ \pgfpathmoveto{\@plus}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\@minus}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Varistor
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/varistor/height}}
+{varistor}
+{\ctikzvalof{bipoles/varistor/height}}
+{\ctikzvalof{bipoles/varistor/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\pgf@circ@font@tiny\textsf{U}}}
+}
+
+%%%%%%%%%%%%%%
+%% RF bipoles
+%%%%%%%%%%%%%%
+
+% transmission line
+\pgfcircdeclarebipolescaled{RF}
+{}
+{\ctikzvalof{bipoles/tline/height}}
+{tline}
+{\ctikzvalof{bipoles/tline/height}}
+{\ctikzvalof{bipoles/tline/width}}
+{
+ \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
+ \begin{pgftransparencygroup}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{-\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ \end{pgftransparencygroup}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{stroke}
+}
+
+% microstrip transmission line
+\pgfcircdeclarebipolescaled{RF}
+{}
+{\ctikzvalof{bipoles/mstline/height}}
+{mstline}
+{\ctikzvalof{bipoles/mstline/height}}
+{\ctikzvalof{bipoles/mstline/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+%%%%%%%%%%%%%%%%%%%
+%% Block diagrams
+%%%%%%%%%%%%%%%%%%%
+
+%% Draw the two-port fillable box
+\def\pgf@circ@twoportbox{
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \endpgfscope
+}
+
+%% Generic two port box
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/twoport/height}}
+{twoport}
+{\ctikzvalof{bipoles/twoport/height}}
+{\ctikzvalof{bipoles/twoport/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw outer box
+ \pgf@circ@twoportbox
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+}
+
+%% voltage controled oscillator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/vco/width}}
+{vco}
+{\ctikzvalof{bipoles/twoport/width}}
+{\ctikzvalof{bipoles/vco/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw circle
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% bandpass filter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/bandpass/width}}
+{bandpass}
+{\ctikzvalof{bipoles/bandpass/width}}
+{\ctikzvalof{bipoles/bandpass/width}}
+{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% bandstop filter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/bandstop/width}}
+{bandstop}
+{\ctikzvalof{bipoles/bandstop/width}}
+{\ctikzvalof{bipoles/bandstop/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bandstop/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225% 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt}% always draw solid line for inner symbol
+ \pgfsetarrows{-}%never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% highpass filter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/highpass/width}}
+{highpass}
+{\ctikzvalof{bipoles/highpass/width}}
+{\ctikzvalof{bipoles/highpass/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% lowpass filter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/lowpass/width}}
+{lowpass}
+{\ctikzvalof{bipoles/lowpass/width}}
+{\ctikzvalof{bipoles/lowpass/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% ADC
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/adc/width}}
+{adc}
+{\ctikzvalof{bipoles/adc/width}}
+{\ctikzvalof{bipoles/adc/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{A}
+ \def\textii{D}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{A}
+ \def\textii{D}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DAC
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/dac/width}}
+{dac}
+{\ctikzvalof{bipoles/dac/width}}
+{\ctikzvalof{bipoles/dac/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{D}
+ \def\textii{A}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{D}
+ \def\textii{A}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DSP
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/dsp/width}}
+{dsp}
+{\ctikzvalof{bipoles/dsp/width}}
+{\ctikzvalof{bipoles/dsp/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{DSP}}
+}
+
+%% FFT
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/fft/width}}
+{fft}
+{\ctikzvalof{bipoles/fft/width}}
+{\ctikzvalof{bipoles/fft/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{FFT}}
+}
+
+%% Amplifier
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{amp}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \pgf@circ@draworfill
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+
+ \pgfsetarrows{-} %never draw arrows
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+}
+
+
+%% variable amplifier
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{vamp}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+ % draw arrow
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% pi attenuator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/piattenuator/width}}
+{piattenuator}
+{\ctikzvalof{bipoles/piattenuator/width}}
+{\ctikzvalof{bipoles/piattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable pi attenuator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/vpiattenuator/width}}
+{vpiattenuator}
+{\ctikzvalof{bipoles/vpiattenuator/width}}
+{\ctikzvalof{bipoles/vpiattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% T attenuator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/tattenuator/width}}
+{tattenuator}
+{\ctikzvalof{bipoles/tattenuator/width}}
+{\ctikzvalof{bipoles/tattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable T attenuator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/vtattenuator/width}}
+{vtattenuator}
+{\ctikzvalof{bipoles/vtattenuator/width}}
+{\ctikzvalof{bipoles/vtattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% phase shifter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{phaseshifter}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+}
+
+%% variable phase shifter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{vphaseshifter}
+{\ctikzvalof{bipoles/vphaseshifter/width}}
+{\ctikzvalof{bipoles/vphaseshifter/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% detector
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/detector/width}}
+{detector}
+{\ctikzvalof{bipoles/detector/width}}
+{\ctikzvalof{bipoles/detector/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{0.8\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@fulldiode
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
+ \fi
+
+}
+
+%% single phase ac/dc converter
+\pgfcircdeclarebipolescaled{blocks}
+{
+ \anchor{dc1}{
+ \northeast
+ \pgf@y=.4\pgf@y
+ }
+ \anchor{dc2}{
+ \northeast
+ \pgf@y=-.4\pgf@y
+ }
+}
+{\ctikzvalof{bipoles/sacdc/width}}
+{sacdc}
+{\ctikzvalof{bipoles/sacdc/width}}
+{\ctikzvalof{bipoles/sacdc/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/sacdc/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % draw sin wave
+ \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ % draw equal sign
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.375\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.375\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.625\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.625\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+
+
+%% single phase dc/ac converter
+\pgfcircdeclarebipolescaled{blocks}
+{
+ \anchor{dc1}{
+ \northeast
+ \pgf@y=.4\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{dc2}{
+ \northeast
+ \pgf@y=-.4\pgf@y
+ \pgf@x=-\pgf@x
+ }
+}
+{\ctikzvalof{bipoles/sdcac/width}}
+{sdcac}
+{\ctikzvalof{bipoles/sdcac/width}}
+{\ctikzvalof{bipoles/sdcac/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/sdcac/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % draw sin wave
+ \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ % draw equal sign
+ \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.375\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.375\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.625\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.625\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+
+%% threephase ac/dc converter
+\pgfcircdeclarebipolescaled{blocks}
+{
+ \anchor{dc1}{
+ \northeast
+ \pgf@y=.4\pgf@y
+ }
+ \anchor{dc2}{
+ \northeast
+ \pgf@y=-.4\pgf@y
+ }
+ \anchor{ac1}{
+ \northeast
+ \pgf@y=.6\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{ac2}{
+ \northeast
+ \pgf@y=0\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{ac3}{
+ \northeast
+ \pgf@y=-.6\pgf@y
+ \pgf@x=-\pgf@x
+ }
+}
+{\ctikzvalof{bipoles/tacdc/width}}
+{tacdc}
+{\ctikzvalof{bipoles/tacdc/width}}
+{\ctikzvalof{bipoles/tacdc/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tacdc/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % draw sin waves
+ \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.65\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.35\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+
+
+
+ % draw equal sign
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.375\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.375\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.625\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.625\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+
+%% threephase dc/ac converter
+\pgfcircdeclarebipolescaled{blocks}
+{
+ \anchor{dc1}{
+ \northeast
+ \pgf@y=.4\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{dc2}{
+ \northeast
+ \pgf@y=-.4\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{ac1}{
+ \northeast
+ \pgf@y=.6\pgf@y
+ }
+ \anchor{ac2}{
+ \northeast
+ \pgf@y=0\pgf@y
+ }
+ \anchor{ac3}{
+ \northeast
+ \pgf@y=-.6\pgf@y
+ }
+}
+{\ctikzvalof{bipoles/tdcac/width}}
+{tdcac}
+{\ctikzvalof{bipoles/tdcac/width}}
+{\ctikzvalof{bipoles/tdcac/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tdcac/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % draw sin waves
+ \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.65\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.35\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+
+
+
+ % draw equal sign
+ \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.375\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.375\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.625\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.625\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% MECHANICAL SYMBOLS
+%%%%%%%%%%%%%%%%%%%%%%%
+
+%% mechanical capacitance - stiffness/spring
+
+\pgfcircdeclarebipolescaled{mechanicals}
+{}
+{\ctikzvalof{bipoles/spring/height}}
+{spring}
+{\ctikzvalof{bipoles/spring/height}}
+{\ctikzvalof{bipoles/spring/width}}{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@scaled@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical capacitance - inerter
+\pgfcircdeclarebipolescaled{mechanicals}
+{}
+{\ctikzvalof{bipoles/inerter/height}}
+{inerter}
+{\ctikzvalof{bipoles/inerter/height}}
+{\ctikzvalof{bipoles/inerter/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+
+%% mechanical inductance - mass
+\pgfcircdeclarebipolescaled{mechanicals}
+{}
+{\ctikzvalof{bipoles/mass/box height}}
+{mass}
+{\ctikzvalof{bipoles/mass/height}}
+{\ctikzvalof{bipoles/mass/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical resistor - damper
+\pgfcircdeclarebipolescaled{mechanicals}
+{}
+{\ctikzvalof{bipoles/damper/height}}
+{damper}
+{\ctikzvalof{bipoles/damper/height}}
+{\ctikzvalof{bipoles/damper/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@maybefill
+
+ % line into the damper
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {\pgf@circ@res@zero}}
+ \pgfusepath{stroke}
+
+ % damper box
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+
+ % damper vertical element
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{stroke}
+
+}
+%% mechanical viscoelastic element, suggested by @alex
+%% in https://tex.stackexchange.com/questions/484268/combined-spring-damper-in-circuitikz
+\pgfcircdeclarebipolescaled{mechanicals}
+{} % extra anchors
+{\ctikzvalof{bipoles/damper/height}} % depth (under the path line)
+{viscoe} % name
+{\ctikzvalof{bipoles/damper/height}} % height (above the path line)
+{\ctikzvalof{bipoles/damper/width}} % width
+{ % draw the bipole
+ \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@maybefill
+
+ % spring into the damper
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfsetcornersarced{\pgfpoint{.25\pgf@circ@res@up}{.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.75\pgf@circ@res@left}{.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@left}{-.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{.75\pgf@circ@res@up}}
+ \pgfusepath{stroke}
+ \endpgfscope
+ % damper box
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+
+ % damper vertical element
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{stroke}
+
+}
+
+%%%%%%%%%%%%%%%%
+%% Crossing
+%%%%%%%%%%%%%%%%
+
+%% crossing bipole (but see also nodes)
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/crossing/size}}
+{crossing}
+{\ctikzvalof{bipoles/crossing/size}}
+{\ctikzvalof{bipoles/crossing/size}}{
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
+ \pgfsetbeveljoin
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Miscellaneous bipoles
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% loudspeaker and microphone
+
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/loudspeaker/depth}}
+{loudspeaker}
+{\ctikzvalof{bipoles/loudspeaker/height}}
+{\ctikzvalof{bipoles/loudspeaker/width}}{
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{.4\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/mic/depth}}
+{mic}
+{\ctikzvalof{bipoles/mic/height}}
+{\ctikzvalof{bipoles/mic/width}}{
+
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0pt}{.6\pgf@circ@res@up}}{.4\pgf@circ@res@up}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{0pt}}
+ % 0.25358 is 0.6-0.4*cos(30)
+ \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% european gas filled surge arrester
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
+{european gas filled surge arrester}
+{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
+{\ctikzvalof{bipoles/european gas filled surge arrester/width}}
+{
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@draworfill
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+}
+
+%% american gas filled surge arrester
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
+{american gas filled surge arrester}
+{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
+{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope{}
+
+ \pgfcircle{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\ctikzvalof{bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\ctikzvalof{bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
+ \pgfusepath{fill}
+}
+
+%% thermocouple
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/thermocouple/height 2}}
+{thermocouple}
+{\ctikzvalof{bipoles/thermocouple/height}}
+{\ctikzvalof{bipoles/thermocouple/width}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+}
+
+%% fuse
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/fuse/height}}
+{fuse}
+{\ctikzvalof{bipoles/fuse/height}}
+{\ctikzvalof{bipoles/fuse/width}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@draworfill
+}
+
+%% asymmetric fuse
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/afuse/height}}
+{afuse}
+{\ctikzvalof{bipoles/afuse/height}}
+{\ctikzvalof{bipoles/afuse/width}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+%% SQUID added by Cor Molenaar 5 March 2010
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/squid/height}}
+{squid}
+{\ctikzvalof{bipoles/squid/height}}
+{\ctikzvalof{bipoles/squid/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+% Generic barrier added by Cor Molenaar 5 March 2010
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/barrier/height}}
+{barrier}
+{\ctikzvalof{bipoles/barrier/height}}
+{\ctikzvalof{bipoles/barrier/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
+
+ \pgfusepath{draw}
+}
+
+%
+% open version of the barrier symbol
+% suggested by Radvรกnyi Patrik Tamรกs <patrikradvanyi@gmail.com>
+%
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/barrier/height}}
+{openbarrier}
+{\ctikzvalof{bipoles/barrier/height}}
+{\ctikzvalof{bipoles/barrier/width}}
+{
+ % this is set with normal wire linewidth
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/openbarrier/gap}*\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/openbarrier/gap}*\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+
+ % do the cross part
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
+
+ \pgfusepath{draw}
+}
+%% Lamp
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/lamp/height}}
+{lamp}
+{\ctikzvalof{bipoles/lamp/height}}
+{\ctikzvalof{bipoles/lamp/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% bulb
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/bulb/height}}
+{bulb}
+{\ctikzvalof{bipoles/bulb/height}}
+{\ctikzvalof{bipoles/bulb/width}}
+{%
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{0.8\pgf@circ@res@up}}{\pgfpoint{0.8\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
+ \pgfsetbeveljoin
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+% end of pgfcircbipoles.tex
+%%%---------- close: tex/pgfcircbipoles
+%%%%%%%%%%% Springe nach tex/pgfcirctripoles
+%%%---------- open: tex/pgfcirctripoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Tripoles
+
+%%%%%%%%%%%%%
+%% switches
+%%%%%%%%%%%%%
+
+% Legacy spdt
+\pgfdeclareshape{spdt}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/spdt/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out 1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{out 2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@res@other = \ctikzvalof{tripoles/spdt/margin}\pgf@circ@res@left
+
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
+ {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
+ }
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+
+% cute switch "node" shapes, matching with cute "to" shapes
+% #1 -> name
+% #2 -> barposition
+% #3 -> arrowcode
+\long\def\pgfcircdeclarecutespdt#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.25\pgf@x
+ }
+ \savedanchor\midlever{
+ % these values are calculated when we create the definition of the shape.
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgf@circ@res@down = -.5\pgf@y
+ \pgf@circ@res@up = .5\pgf@y
+ \pgfextracty{\pgf@circ@res@other}{#2}
+ \pgf@x=0pt
+ \pgf@y=.5\pgf@circ@res@other
+ }
+ % radius of the connector
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % shape type
+ \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
+ % mid of the lever, to stack switches
+ \anchor{mid}{\midlever}
+ % center anchors
+ \anchor{cin}{ \northwest \pgf@y=0pt}
+ \anchor{cout 1}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{cout 2}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ % horizontal angles
+ \anchor{in}{ \northwest \pgf@y=0pt\advance\pgf@x by -\radius}
+ \anchor{out 1}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius}
+ \anchor{out 2}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius \pgf@y=-\pgf@y }
+
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \pgf@circ@res@temp=\radius\relax
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgfsetlinewidth{2\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{#2}
+ \pgfsetroundcap\pgfusepath{draw}
+ \endpgfscope
+ \pgfscope % arrow
+ #3
+ \endpgfscope
+ % terminals
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out 1}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out 2}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ }
+ }
+}
+
+\pgfcircdeclarecutespdt{cute spdt up}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
+{}
+
+\pgfcircdeclarecutespdt{cute spdt mid}
+{\pgfpoint{\pgf@circ@res@right}{0pt}}
+{}
+
+\pgfcircdeclarecutespdt{cute spdt down}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
+{}
+
+\pgfcircdeclarecutespdt{cute spdt up arrow}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{70}{1.5\pgf@circ@res@right}}
+ \pgfpatharc{70}{-50}{1.5\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclarecutespdt{cute spdt mid arrow}
+{\pgfpoint{\pgf@circ@res@right}{0pt}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfsetarrowsstart{latexslim}
+ \pgfpathmoveto{\pgfpointpolar{-60}{1.5\pgf@circ@res@right}}
+ \pgfpatharc{-60}{60}{1.5\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclarecutespdt{cute spdt down arrow}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{-50}{1.5\pgf@circ@res@right}}
+ \pgfpatharc{-50}{70}{1.5\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Logic ports
+%%
+%% Code from John Kormylo at tex.stackexchange.com
+%% See https://tex.stackexchange.com/questions/372993/is-it-possible-to-implement-multiple-input-logic-ports-with-circuitikz
+%% Integration and fixes from Romano Giannetti and TheTeXnician <38565529+TheTeXnician@users.noreply.github.com>
+%%
+
+\newcount\pgf@circ@res@count% reserve global register
+
+\def\pgf@circ@logicport@input#1% #1 = \pgfmathcounter
+{%
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+}%
+
+% #1 = \pgfmathcounter #2=type #3 specificic port
+% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor, 4 for european.
+\def\pgf@circ@logicport@baseinput#1#2#3%
+{%
+ % and and nand
+ \ifnum #2=1\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@x=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@left
+ \fi
+ % or and nor
+ \ifnum #2=2\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american #3 port/angle}}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\pgf@y
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgf@x=\pgf@circ@res@other
+ \fi
+ % xor and xnor
+ \ifnum #2=3\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american #3 port/angle}{\pgf@circ@math@angle}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/american #3 port/distance}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
+ % this compensates for the effect of the line width on the gap between the arcs
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
+
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@circ@res@temp=\pgf@y
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \advance\pgf@circ@res@other by -\pgf@circ@math@distance
+ \pgf@x=\pgf@circ@res@other
+ \fi
+ % european
+ \ifnum #2=4\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@other}{\left}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@x=\pgf@circ@res@other
+ \fi
+}%
+
+%%% american
+\long\def\pgfcircdeclarelogicport#1#2#3{%
+ \pgfdeclareshape{american #1 port}%
+ {%
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro\resize{% automatic
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@up = \ctikzvalof{tripoles/american #1 port/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgf@circ@res@down = -\pgf@circ@res@up
+ \pgf@circ@res@right = \ctikzvalof{tripoles/american #1 port/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right = .5\pgf@circ@res@right
+ \pgf@circ@res@left = -\pgf@circ@res@right
+ }%
+ \savedmacro\inputs{% get number of inputs
+ \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
+ \ifnum\pgf@circ@res@count=0
+ \pgf@circ@res@count=\ctikzvalof{tripoles/american #1 port/inputs}\relax%
+ \fi
+ \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
+ \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
+ \def\inputs{\the\pgf@circ@res@count}%
+ }%
+ \savedanchor\step{% 1/2 gap at edges
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step = \ctikzvalof{tripoles/american #1 port/height}\pgf@circ@scaled@Rlen
+ \divide\pgf@circ@res@step by \pgf@circ@res@count
+ \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
+ }%
+ \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \savedanchor\left{\pgfpoint{\ctikzvalof{tripoles/american #1 port/port width}\pgf@circ@res@left}{0pt}}
+ \savedanchor\right{\pgfpoint{\ctikzvalof{tripoles/american #1 port/port width}\pgf@circ@res@right}{0pt}}
+ \savedanchor\origin{\pgfpoint{\ctikzvalof{tripoles/american #1 port/origin}\pgf@circ@res@right}{0pt}}
+
+ \anchor{center}{\origin}% for backwards compatibility
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ % create input anchors
+ \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@american #1 port\endcsname{%
+ \pgfmathloop%
+ \ifnum\pgfmathcounter>\pgf@circ@res@count%
+ \else%
+ %\pgfutil@ifundefined{pgf@anchor@american #1 port@in \pgfmathcounter}{%
+ \expandafter\xdef\csname pgf@anchor@american #1 port@in \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
+ }%
+ \expandafter\xdef\csname pgf@anchor@american #1 port@bin \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{#2}{#1}% defined above
+ }%
+ %}{}%
+ \repeatpgfmathloop%
+ }
+
+ \anchor{out}{\northeast\pgf@y=0pt}
+ \anchor{bout}{\right\pgf@y=0pt}
+
+
+ \anchor{left}{\left}% edges of component minus leads
+ \anchor{right}{\right}
+
+ \anchor{north east}{\northeast}% see \Compass macro
+ \anchor{south west}{\southwest}
+ \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfpoint{0cm}{\pgf@circ@res@up}}
+ \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{0cm}}
+ \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfpoint{0cm}{\pgf@circ@res@down}}
+ \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{0cm}}
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ #3
+ }
+}
+}
+%%% american and %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{and}{1}{
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@temp}}
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+ % output lead
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@right}
+ {0pt}}
+ \pgfusepath{draw}
+
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@left
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpatharc{-90}{90}{-2\pgf@circ@res@other and \pgf@circ@res@up}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ }
+%%% american nand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \pgfcircdeclarelogicport{nand}{1}{
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@temp}}
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@right} {0pt}}
+
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgf@circ@res@step = \ctikzvalof{tripoles/american nand port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@other = \ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@right
+ \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpatharc{-90}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}
+ \pgfpathclose
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgf@circ@draworfill
+}
+%%% american nor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{nor}{2}{
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american nor port/angle}}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/port width}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american nor port/angle}}%
+ \pgf@circ@res@step = \ctikzvalof{tripoles/american nor port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
+ \advance\pgf@circ@res@other by -\pgf@circ@res@step
+
+ % main shape
+ \ifpgfcirc@roundy@or@shapes
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpathclose
+ \else
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathclose
+ \fi
+
+ % not dot
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgf@circ@draworfill
+}
+%%% american or %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{or}{2}{
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american or port/angle}}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/port width}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american or port/angle}}%
+
+ % main shape
+ \ifpgfcirc@roundy@or@shapes
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpathclose
+ \else
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathclose
+ \fi
+
+ \pgf@circ@draworfill
+}
+%%% american xor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{xor}{3}{
+ \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xor port/angle}{\pgf@circ@math@angle}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/american xor port/distance}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
+ % this compensates for the effect of the line width on the gap between the arcs
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \advance\pgf@circ@res@other by -\pgf@circ@math@distance
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/port width}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american xor port/angle}}%
+
+ % main shape
+ \ifpgfcirc@roundy@or@shapes
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpathclose
+ \else
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathclose
+ \fi
+ \pgf@circ@draworfill
+
+ \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
+
+ \pgfusepath{draw}
+}
+%%% american xnor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{xnor}{3}{
+ \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xnor port/angle}{\pgf@circ@math@angle}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/american xor port/distance}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
+ % this compensates for the effect of the line width on the gap between the arcs
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \advance\pgf@circ@res@other by -\pgf@circ@math@distance
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american xnor port/angle}}%
+ \pgf@circ@res@step = \ctikzvalof{tripoles/american xnor port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
+ \advance\pgf@circ@res@other by -\pgf@circ@res@step
+
+ % main shape
+ \ifpgfcirc@roundy@or@shapes
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpathclose
+ \else
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathclose
+ \fi
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@left
+ \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
+
+ \pgfusepath{draw}
+}
+
+%%% Original one-input ports
+
+\pgfdeclareshape{american not port}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{bin 1}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgf@circ@draworfill
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \ifpgfcirc@draw@leads
+ %input leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+ \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+ }
+}
+
+\pgfdeclareshape{american buffer port}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{bin 1}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \ifpgfcirc@draw@leads
+ %input leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+ \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+ }
+}
+\pgfdeclareshape{invschmitt}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{bin 1}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \ifpgfcirc@draw@leads
+ %input leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+ \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ %draw inner shape
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ }
+}
+
+\pgfdeclareshape{schmitt}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{bin 1}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \ifpgfcirc@draw@leads
+ %input leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+ \fi
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ %draw inner shape
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ }
+}
+
+
+%%% start european logic ports, from John Kormylo
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+
+% #1 - name
+% #2 - text inside
+% #3 - number of inputs
+% #4 = is it a not?
+%
+% option to add a circle for not-output, see
+% https://github.com/circuitikz/circuitikz/issues/385
+%
+\newif\ifpgf@circ@european@port@circle\pgf@circ@european@port@circlefalse
+\newif\ifpgf@circ@european@port@circle@ieee\pgf@circ@european@port@circle@ieeefalse
+\ctikzset{tripoles/european not shape/.initial=ocirc}
+\ctikzset{tripoles/european not symbol/.is choice}
+\ctikzset{tripoles/european not symbol/triangle/.code={\pgf@circ@european@port@circlefalse}}
+\ctikzset{tripoles/european not symbol/circle/.code={%
+\pgf@circ@european@port@circletrue\pgf@circ@european@port@circle@ieeefalse\ctikzset{tripoles/european not shape=ocirc}}}
+\ctikzset{tripoles/european not symbol/ieee circle/.code={%
+\pgf@circ@european@port@circletrue\pgf@circ@european@port@circle@ieeetrue\ctikzset{tripoles/european not shape=notcirc}}}
+
+\long\def\pgfcircdeclareeurologicport#1#2#3#4{
+ \pgfdeclareshape{european #1 port}
+ {
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \saveddimen{\boutshift}{%
+ \ifpgf@circ@european@port@circle
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \edef\pgf@temp{ocirc}
+ \edef\pgf@circ@temp{\ctikzvalof{tripoles/european not shape}}
+ \ifx\pgf@temp\pgf@circ@temp % it's ocirc
+ \pgfmathsetlength{\pgf@x}{2*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \else % it's ieee not circ
+ \pgf@circ@notradius % defined together with ieeestd ports
+ \pgf@x=2\pgf@circ@res@temp
+ \fi
+ \else
+ \pgf@x=0pt
+ \fi
+ }
+ \savedmacro\resize{% automatic
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@up = \ctikzvalof{tripoles/european #1 port/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgf@circ@res@down = -\pgf@circ@res@up
+ \pgf@circ@res@right = \ctikzvalof{tripoles/european #1 port/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right = .5\pgf@circ@res@right
+ \pgf@circ@res@left = -\pgf@circ@res@right
+ }%
+ \savedmacro\inputs{% get number of inputs
+ \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
+ \ifnum\pgf@circ@res@count=0
+ \pgf@circ@res@count=\ctikzvalof{tripoles/european #1 port/inputs}\relax%
+ \fi
+ \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
+ \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
+ \def\inputs{\the\pgf@circ@res@count}%
+ }%
+ \savedanchor\step{% 1/2 gap at edges
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step = \ctikzvalof{tripoles/european #1 port/height}\pgf@circ@scaled@Rlen
+ \divide\pgf@circ@res@step by #3
+ \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
+ }%
+ \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}%
+ \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}%
+ \savedanchor\left{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
+ \savedanchor\right{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}%
+ \savedanchor\origin{\pgfpoint{\ctikzvalof{tripoles/european #1 port/origin}\pgf@circ@res@right}{0pt}}%
+
+ \anchor{center}{\origin}% for backwards compatibility
+ % the text anchor overlaps the logic symbol
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}%
+ % create input anchors
+ \ifnum#3=1\relax
+ \anchor{in}{\southwest\pgfpoint{\pgf@x}{0pt}}% or \step
+ \anchor{in 1}{\southwest\pgfpoint{\pgf@x}{0pt}}% or \step
+ \anchor{bin}{\left\pgfpoint{\pgf@x}{0pt}}% or \step
+ \anchor{bin 1}{\left\pgfpoint{\pgf@x}{0pt}}% or \step
+ \else
+ \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@european #1 port\endcsname{%
+ \pgfmathloop%
+ \ifnum\pgfmathcounter>#3%
+ \else%
+ %\pgfutil@ifundefined{pgf@anchor@european #1 port@in \pgfmathcounter}{% redundant
+ \expandafter\xdef\csname pgf@anchor@european #1 port@in \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
+ }%
+ \expandafter\xdef\csname pgf@anchor@european #1 port@bin \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{4}{#1}% defined above
+ }%
+ %}{}%
+ \repeatpgfmathloop%
+ }
+ \fi
+ \anchor{out}{\northeast\pgf@y=0pt}
+ \anchor{bout}{\right\advance\pgf@x by \boutshift\pgf@y=0pt}
+
+ \anchor{left}{\left}% edges of component minus leads
+ \anchor{right}{\right}
+
+ \anchor{north east}{\northeast}% see \Compass macro
+ \anchor{south west}{\southwest}
+ \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfpoint{0cm}{\pgf@circ@res@up}}
+ \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{0cm}}
+ \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfpoint{0cm}{\pgf@circ@res@down}}
+ \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{0cm}}
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \ifpgfcirc@draw@leads
+ %input leads
+ \ifnum#3=1\relax
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}%
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
+ \else
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ %\pgf@circ@res@count = #3\relax% redundant
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}
+ {\pgf@circ@res@temp}}
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+ \fi
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{%
+ \pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
+ %
+ \pgfusepath{draw}
+ %
+ \edef\pgf@temp{not}
+ \edef\pgf@circ@temp{#4}
+ \ifx\pgf@temp\pgf@circ@temp % is a not
+ \ifpgf@circ@european@port@circle
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}
+ % reset linewidth for IEEE ports, otherwise they will multiply...
+ \ifpgf@circ@european@port@circle@ieee\pgfsetlinewidth{\pgfstartlinewidth}\fi
+ \pgfnode{\ctikzvalof{tripoles/european not shape}}{west}{}{NOT}{\pgfusepath{stroke}}
+ \endpgfscope
+ \else
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/european #1 port/not height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \fi
+ \fi
+ %
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgftext{#2}
+ }
+ }
+}
+\pgfcircdeclareeurologicport{and}{\&}{\pgf@circ@res@count}{}
+\pgfcircdeclareeurologicport{or}{$\ge 1$}{\pgf@circ@res@count}{}
+\pgfcircdeclareeurologicport{xor}{$=1$}{\pgf@circ@res@count}{}
+\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
+\pgfcircdeclareeurologicport{buffer}{$1$}{1}{}
+\pgfcircdeclareeurologicport{nand}{\&}{\pgf@circ@res@count}{not}
+\pgfcircdeclareeurologicport{nor}{$\ge 1$}{\pgf@circ@res@count}{not}
+\pgfcircdeclareeurologicport{xnor}{$=1$}{\pgf@circ@res@count}{not}
+
+%% end european logic ports
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% Transistors
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\long\def\pgfcircdeclaretransistor#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{transistors}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northeast{% upper right
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/#1/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%center left
+ \pgf@y=0pt
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/#1/width}\pgf@circ@scaled@Rlen
+ }
+ \savedanchor\right{%center right -- added by Burak Kelleci % this is really 0,0
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{text}{
+ \northeast
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@transisors@fixlabels
+ \ifpgf@circuit@fet@bodydiode
+ % try to put the text to the right of the flyback diode
+ \pgfmathsetlength{\pgf@circ@res@other}{(
+ \ctikzvalof{tripoles/#1/bodydiode distance}*
+ \ctikzvalof{tripoles/#1/width} +
+ \ctikzvalof{tripoles/#1/bodydiode scale}*
+ \ctikzvalof{bipoles/diode/height}/2
+ )*\pgf@circ@scaled@Rlen}
+ \advance\pgf@x by \pgf@circ@res@other
+ \fi
+ % add a bit of space to avoid central (substrate) terminal if drawn
+ \advance\pgf@x by 0.05\pgf@circ@scaled@Rlen\relax
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ \else
+ \pgf@y=.7\pgf@y
+ \pgf@x= \pgf@circ@scaled@Rlen
+ \pgf@x=0.1\pgf@x
+ \fi
+ }
+ \anchor{pathstart}{ % south
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{pathend}{
+ \northeast
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \northeast
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ }
+ \anchor{north east}{
+ \northeast
+ }
+ \anchor{north west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{south east}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{base}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{bulk}{ %added by Burak Kelleci
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \right
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{nobulk}{ %added by Burak Kelleci
+ \left
+ \pgf@x=\ctikzvalof{tripoles/#1/base width}\pgf@x
+ }
+ \anchor{G}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{gate}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{nobase}{
+ \left
+ \pgf@x=\ctikzvalof{tripoles/#1/base width}\pgf@x
+ }
+ \anchor{nogate}{
+ \left
+ \pgf@x=\ctikzvalof{tripoles/#1/gate width}\pgf@x
+ }
+ \anchor{E}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{emitter}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{C}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{collector}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{D}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{drain}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{body C in}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y
+ }
+ \anchor{body E in}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y
+ }
+ \anchor{body C out}{
+ \northeast
+ \pgf@ya=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ \pgf@ya=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@ya
+ \pgf@y=\pgf@ya
+ \left
+ \pgf@x=-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@x
+ \pgf@y=\pgf@ya
+ }
+ \anchor{body E out}{
+ \northeast
+ \pgf@ya=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ \pgf@ya=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@ya
+ \pgf@y=\pgf@ya
+ \left
+ \pgf@x=-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@x
+ \pgf@y=\pgf@ya
+ }
+ #2
+ \backgroundpath{
+ \pgftransformationadjustments
+ \pgfsetcolor{\ctikzvalof{color}}
+ %
+ \ifnum \ctikzvalof{tripoles/#1/curr direction} > 0
+ \pgf@circuit@trans@ntypetrue
+ \else
+ \pgf@circuit@trans@ntypefalse
+ \fi
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \left
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ %
+ #3
+ % BODY DIODE
+ \ifpgf@circuit@fet@bodydiode
+ \drawbodydiode{#1}
+ \fi
+ %
+ }
+}
+}
+
+\long\def\drawbodydiode#1{
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgftransformrotate{90}
+ % diode scale and bodydiode scale interacts. We want the size of the diode
+ % proportional to the transistor, so we will:
+ % 1) undo diode scale 2) apply transistor scale (using the current class) 3) apply bodydiode scale
+ \pgfmathsetmacro{\@@BDscale}{\ctikzvalof{tripoles/#1/bodydiode scale}* \ctikzvalof{\ctikzclass/scale}/\ctikzvalof{diodes/scale}}
+ \pgftransformscale{\@@BDscale}
+ \ifpgf@circuit@fulldiode
+ \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \else
+ \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \fi
+ \endpgfscope
+ % Draw stroke line
+ \ifpgf@circuit@strokediode
+ \pgfpathmoveto{\pgfpointanchor{pgf@bodydiode}{west}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
+ \pgfusepath{stroke}
+ \fi
+ %Draw upper connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope{}
+ %Draw lower connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+}
+
+\long\def\declarebpt#1{
+ \pgfcircdeclaretransistor{#1}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/base height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/base height}\pgf@y
+ }
+ }{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % drawing base
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \ifpgf@circuit@bpt@schottky
+ % upper
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
+ % % lower
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transistor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \edef\@@anchor{center}
+ \ifpgf@circuit@trans@ntype
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{btip}
+ \pgftransformlineattime{1.0}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{\ctikzvalof{tripoles/#1/arrow pos}}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}%
+ }
+ \fi
+ \else % p-type
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{tip}
+ \pgftransformlineattime{1.0}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}%
+ }
+ \else
+ \pgftransformlineattime{\ctikzvalof{tripoles/#1/arrow pos}}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \fi
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \ifpgf@circuit@bpt@drawphoto
+ \pgfscope
+ \pgfsetarrowsstart{latexslim}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \else
+ \ifpgf@circuit@bpt@drawbase
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+ \fi
+ }
+}
+
+\declarebpt{npn}
+\declarebpt{pnp}
+%
+% multi-emitter and multi-collector BJTs by Romano Giannetti
+%
+\def\pgf@circ@bjt@C@anchor#1{% #1: collector number
+ \pgfextractx{\pgf@circ@res@temp}{\basedimension}
+ \pgfextracty{\pgf@circ@res@other}{\basedimension}
+ \ifnum\cdir>0 % NPN, above
+ \pgfpoint{\pgf@circ@res@temp}{%
+ \pgf@circ@res@other+\pgfverticaltransformationadjustment*.5*\pgflinewidth+(#1-1)*\multistep}
+ \else % PNP, below
+ \pgfpoint{\pgf@circ@res@temp}{%
+ -\pgf@circ@res@other-\pgfverticaltransformationadjustment*.5*\pgflinewidth-(#1-1)*\multistep}
+ \fi
+}
+\def\pgf@circ@bjt@E@anchor#1{% #1: collector number
+ \pgfextractx{\pgf@circ@res@temp}{\basedimension}
+ \pgfextracty{\pgf@circ@res@other}{\basedimension}
+ \ifnum\cdir<0 % PNP, above
+ \pgfpoint{\pgf@circ@res@temp}{%
+ \pgf@circ@res@other+\pgfverticaltransformationadjustment*.5*\pgflinewidth+(#1-1)*\multistep}
+ \else % PNP, below
+ \pgfpoint{\pgf@circ@res@temp}{%
+ -\pgf@circ@res@other-\pgfverticaltransformationadjustment*.5*\pgflinewidth-(#1-1)*\multistep}
+ \fi
+}
+
+\long\def\declarebjt#1{
+ \pgfdeclareshape{bjt#1}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{transistors}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ % \cdir is 1 for npn, -1 for pnp
+ \savedmacro{\cdir}{\edef\cdir{\ctikzvalof{tripoles/bjt/#1/curr direction}}}
+ \savedmacro{\numE}{\edef\numE{\ctikzvalof{tripoles/bjt/emitters}}}
+ \savedmacro{\numC}{\edef\numC{\ctikzvalof{tripoles/bjt/collectors}}}
+ % step up or down for the additional C/Es
+ \saveddimen{\multistep}{\pgfmathsetlength{\pgf@x}{%
+ \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
+ \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}}
+ \saveddimen{\external}{\pgfmathsetlength{\pgf@x}{%
+ \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}}
+ \savedanchor\basedimension{% these are the dimensions if nC=1 y nE=1
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\northeast{% upper right
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@step}{%
+ \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
+ \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \ifnum\cdir> 0
+ \edef\numup{\numC}\edef\numdown{\numE}
+ \else
+ \edef\numup{\numE}\edef\numdown{\numC}
+ \fi
+ \pgfmathsetlength{\pgf@y}{0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
+ + (\numup-1)*\pgf@circ@res@step+\pgfverticaltransformationadjustment*.5*\pgflinewidth
+ + \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\southeast{% lower right
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@step}{%
+ \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
+ \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \ifnum\cdir> 0
+ \edef\numup{\numC}\edef\numdown{\numE}
+ \else
+ \edef\numup{\numE}\edef\numdown{\numC}
+ \fi
+ \pgfmathsetlength{\pgf@y}{-0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
+ - (\numdown-1)*\pgf@circ@res@step-\pgfverticaltransformationadjustment*.5*\pgflinewidth
+ - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\southwest{% lower left
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@step}{%
+ \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
+ \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \ifnum\cdir> 0
+ \edef\numup{\numC}\edef\numdown{\numE}
+ \else
+ \edef\numup{\numE}\edef\numdown{\numC}
+ \fi
+ \pgfmathsetlength{\pgf@y}{-0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
+ - (\numdown-1)*\pgf@circ@res@step-\pgfverticaltransformationadjustment*.5*\pgflinewidth
+ - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{tripoles/bjt/width}*\pgf@circ@scaled@Rlen
+ - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\southwest\pgf@x=0cm\relax}
+ \anchor{west}{\southwest\pgf@y=0cm}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@ya=\pgf@y\southwest\pgf@y=\pgf@ya}
+ \anchor{south west}{\southwest}
+ \anchor{south east}{\southeast}
+
+ \anchor{text}{\northeast\pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax}
+ \anchor{B}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x\advance\pgf@x by -\external}
+ \anchor{base}{\basedimension\pgf@y=0cm\pgf@x=-\pgf@x\advance\pgf@x by -\external}
+ \anchor{nobase}{\basedimension\pgf@y=0cm\pgf@x=-\pgf@x}
+ % center of the base "bar"
+ \anchor{cbase}{\basedimension\pgf@x=-\pgf@x
+ \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
+ }
+ % geometrical centers
+ \anchor{vcenter}{\pgf@x=0cm\relax
+ \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
+ }
+ \anchor{gcenter}{%
+ \northeast\pgf@xa=0.5\pgf@x
+ \southwest\advance\pgf@xa by 0.5\pgf@x
+ \pgf@x=\pgf@xa
+ \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
+ }
+ % external connections
+ \anchor{E}{
+ \ifnum\cdir>0% npn, emitter down
+ \southeast
+ \else
+ \northeast
+ \fi
+ }% first emitter
+ \anchor{emitter}{\ifnum\cdir>0\southeast\else\northeast\fi}% first emitter
+ \anchor{C}{\ifnum\cdir<0\southeast\else\northeast\fi}
+ \anchor{collector}{\ifnum\cdir<0\southeast\else\northeast\fi}
+
+ \backgroundpath{
+ \pgftransformationadjustments
+ \pgfsetcolor{\ctikzvalof{color}}
+ %
+ % set the type and up and down number of connections
+ %
+ \ifnum\cdir> 0
+ \pgf@circuit@trans@ntypetrue
+ \edef\numup{\numC}
+ \edef\numdown{\numE}
+ \else
+ \pgf@circuit@trans@ntypefalse
+ \edef\numup{\numE}
+ \edef\numdown{\numC}
+ \fi
+ \basedimension
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \pgf@circ@res@left = -\pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\multistep
+ %
+ % set arrow positions options
+ %
+ \edef\@@anchor{center}\edef\@@pos{\ctikzvalof{tripoles/#1/arrow pos}}
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@pos{1.0}
+ \ifpgf@circuit@trans@ntype % arrow is toward outside, push it a bit
+ \edef\@@anchor{btip}
+ \else
+ \edef\@@anchor{tip}
+ \fi
+ \fi
+ %
+ % Drawing upper connections
+ %
+ \pgfscope
+ \pgf@circ@count@a=\numup\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \advance\pgf@circ@count@a-1\relax
+ \pgfmathsetlength{\pgf@circ@res@other}{\the\pgf@circ@count@a*\multistep}%
+ \ifnum\pgf@circ@count@a=\numexpr\numup-1\relax % draw the external pin connection
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\external+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
+ \pgfpathlineto{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
+ \fi
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@up+\pgf@circ@res@other}}%
+ \pgfsetroundcap % better when connecting to sloped lines
+ \pgfusepath{draw}
+ \ifpgf@circuit@trans@ntype\else % it's a PNP; draw arrow
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}%
+ }{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@up+\pgf@circ@res@other}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+ \repeatpgfmathloop
+ \endpgfscope
+ %
+ % Drawing base
+ %
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \ifpgf@circuit@bpt@schottky
+ % upper
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
+ % lower
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
+ \fi
+ \pgfsetroundcap % I like it more...
+ \pgfusepath{draw}
+ \endpgfscope
+ %
+ % draw base external connection
+ %
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-\external}{0pt}}
+ \pgfusepath{draw}
+ %
+ % Drawing lower connections
+ %
+ \pgfscope
+ \pgf@circ@count@a=\numdown\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \advance\pgf@circ@count@a-1\relax
+ \pgfmathsetlength{\pgf@circ@res@other}{\the\pgf@circ@count@a*\multistep}%
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint
+ {\pgf@circ@res@right}
+ {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other}}
+ \ifnum\pgf@circ@count@a=\numexpr\numdown-1\relax % draw the external pin connection
+ \pgfpathlineto{\pgfpoint
+ {\pgf@circ@res@right}
+ {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other-\external}}
+ \fi
+ \pgfsetroundcap % better when connecting to sloped lines
+ \pgfusepath{draw}
+ \ifpgf@circuit@trans@ntype % it's a NPN; draw arrow
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@down-\pgf@circ@res@other}%
+ }{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+ \repeatpgfmathloop
+ \endpgfscope
+ }
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@bjt#1\endcsname{%
+ % Start with the maximum collector number and go backwards.
+ \pgf@circ@count@a=\numC\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@bjt#1@C\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@bjt@C@anchor{\the\pgf@circ@count@a}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ % and emitters
+ \pgf@circ@count@a=\numE\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@bjt#1@E\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@bjt@E@anchor{\the\pgf@circ@count@a}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+ }
+}
+
+\declarebjt{npn}
+\declarebjt{pnp}
+
+% end of multi-bjts
+
+\long\def\declareigbt#1{
+ \pgfcircdeclaretransistor{#1}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/gate height}\pgf@y
+ }
+ }
+ {
+ %draw upper connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ %draw thicker gate lines
+ \pgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/outer base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/outer base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ % set the normal thickness
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \edef\@@extrat{\ctikzvalof{tripoles/#1/outer base thickness}}
+ \pgfsetlinewidth{\@@extrat\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %draw lower connection
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transistor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \ifpgf@circuit@trans@ntype
+ \edef\@@anchor{btip}\edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{tip}\edef\@@pos{1.0}
+ \fi
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.5}
+ \fi
+ \ifpgf@circuit@trans@ntype
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ %draw gate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}}
+ \fi
+ \pgfusepath{draw}
+ }
+}
+
+\declareigbt{pigbt}
+\declareigbt{nigbt}
+\declareigbt{Lnigbt}
+\declareigbt{Lpigbt}
+
+\pgfcircdeclaretransistor{nmos}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/nmos/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/nmos/gate height}\pgf@y
+ }
+ }{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \ifpgf@circuit@trans@arrowatend
+ \pgftransformshift{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{trarrow}{btip}{}{}{\pgfusepath{stroke}}
+ \else
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\ctikzvalof{tripoles/nmos/arrow pos}}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \fi
+ \endpgfscope
+ \fi
+
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+
+ \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+}
+
+\pgfcircdeclaretransistor{pmos}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/pmos/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/pmos/gate height}\pgf@y
+ }
+ }{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \ifpgf@circuit@trans@arrowatend
+ \pgftransformshift{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }
+ \pgftransformrotate{180}
+ \pgfnode{trarrow}{tip}{}{}{\pgfusepath{stroke}}
+ \else
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\ctikzvalof{tripoles/pmos/arrow pos}}{%
+ \pgfpoint%
+ {\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \fi
+ \endpgfscope
+ \fi
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+
+
+ \pgfusepath{draw}
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+
+ \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+
+ \ifpgf@circuit@pmos@nocircle\else
+ % we are not scaling the circle with the MOS --- I think it's better to have it
+ % coherent with the poles/nodes of the rest of the circuit.
+ \pgfpathcircle{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left - \ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \ifpgf@circuit@pmos@emptycircle
+ \pgfsetfillcolor{white}
+ \fi
+ \pgfusepath{draw,fill}
+ \fi
+}
+
+%% HEMT FET Transistor
+\pgfcircdeclaretransistor{hemt}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/hemt/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/hemt/gate height}\pgf@y
+ }
+ }{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/hemt/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/hemt/base height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+\long\def\drawfetcore#1{
+ \pgftransformationadjustments
+ %top connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
+ \ifpgf@circuit@trans@depletiontype
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \else
+
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up*0.45}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up*0.25}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down*0.25}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \fi
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %Bulk connection line
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ %bottom connection
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ %draw thick gate line
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ % arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \ifpgf@circuit@trans@ntype
+ \edef\@@anchor{tip}
+ \edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{btip}
+ \edef\@@pos{0.0}
+ \fi
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.6}
+ \fi
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \ifpgf@circuit@trans@ntype
+ \else
+ \pgftransformrotate{180}
+ \fi
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+% GATE CONNECTION
+\ifpgf@circuit@bpt@drawgate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {-\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+\fi
+
+}
+
+\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
+{\pgfcircdeclaretransistor{#1}{
+ \anchor{bulk}{\left\pgf@x=0pt}
+ \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/gate height}\pgf@y
+ }
+ #2
+ }
+ {#3}
+}
+
+\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nfet}
+}
+
+\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pfet}
+}
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfete}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+\fi
+}
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
+\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfetebulk}
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+% N-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{nigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfete}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/pigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
+\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfetebulk}
+}
+
+% P-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{pigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+\pgfcircdeclaretransistor{njfet}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/njfet/gate height 2}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/njfet/gate height 2}\pgf@y
+ }
+ }{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ % arrow
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{tip}\edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.6}
+ \fi
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclaretransistor{pjfet}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@y
+ }
+ }{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{btip}\edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.4}
+ \fi
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+\pgfdeclaretransistorwrapperaddbulk{isfet}{}{%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ % DRAIN CONNECTION
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@up}}
+ % DRAIN
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % GATE, DEPLETION TYPE
+ \pgfscope %% added
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/isfet/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/isfet/base height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth} %% added
+ \pgfusepath{draw} %% added
+ \endpgfscope %% added
+
+ % BULK
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ % SOURCE
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@down}}
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+ % ARROW
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{tip}\edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.6}
+ \fi
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfusepath{draw}
+
+ % Wavy lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% end of transistors
+
+%%%%%%%%%%%%%
+%% Switches
+%%%%%%%%%%%%%
+
+\pgfcircdeclarebipole{
+ \anchor{out 1}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{out 2}{
+ \northeast
+ \pgf@y=.8\pgf@y
+ }
+}
+{\ctikzvalof{tripoles/toggleswitch/height 2}}
+{toggleswitch}
+{\ctikzvalof{tripoles/toggleswitch/height}}
+{\ctikzvalof{tripoles/toggleswitch/width}}
+{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetdash{}{0cm}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% operational and instrumentation amplifiers
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{op amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ % Triangle
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Output terminal
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@right}{0pt}}
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+% Op amp shape as in european standard EN 60617
+\pgfdeclareshape{en amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{up}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{down}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/en amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+
+ \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\hbox{\ctikzvalof{tripoles/en amp/font2}\ctikzvalof{tripoles/en amp/text}}}
+ % \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font2}$\mathstrut{\triangleright}\,\mathrm{A}$}
+ }
+}
+
+% Fully differential output op amp
+% Contributed by Kristofer M. Monisit
+\pgfdeclareshape{fd op amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\outline{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y\pgf@x=0pt\relax
+ }
+ \anchor{north}{
+ \northwest\pgf@x=0pt\relax
+ }
+ \savedanchor\left{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/fd op amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out up}{
+ \northwest
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{out down}{
+ \northwest
+ \pgf@y=-\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{out +}{
+ \outline
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{out -}{
+ \outline
+ \pgf@y=-\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bout +}{
+ \outline
+ \pgf@xa=\pgf@x\pgf@ya=\pgf@y
+ \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+ {\pgfpoint{\pgf@xa}{0pt}}
+ {\pgfpoint{0pt}{\pgf@ya}}
+ }
+ \anchor{bout -}{
+ \outline
+ \pgf@xa=\pgf@x\pgf@ya=\pgf@y
+ \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+ {\pgfpoint{\pgf@xa}{0pt}}
+ {\pgfpoint{0pt}{\pgf@ya}}
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bout up}{
+ \northwest
+ \pgf@xa=\pgf@x\pgf@ya=\pgf@y
+ \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+ {\pgfpoint{\pgf@xa}{0pt}}
+ {\pgfpoint{0pt}{\pgf@ya}}
+ }
+ \anchor{bout down}{
+ \northwest
+ \pgf@xa=\pgf@x\pgf@ya=\pgf@y
+ \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+ {\pgfpoint{\pgf@xa}{0pt}}
+ {\pgfpoint{0pt}{\pgf@ya}}
+ \pgf@y=-\pgf@y
+ }
+ % end border anchors
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{out}{% should not be used
+ \left
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x \pgf@y=-\pgf@y }
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ % Triangle
+ % Includes output terminals in the traingular shape
+ % to ensure that diagonal joins are properly displayed
+ % we first draw the main triangle and the leads with normal thickness,
+ % and the redraw the main triangle with the component shape
+ \pgfscope
+ % shift origin a bit to ease calculations
+ \pgftransformxshift{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@step
+
+ % Initial point (right vertex)
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+
+ % Negative output terminal
+ \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\ctikzvalof{tripoles/fd op amp/output height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@up}}}
+
+ % Top vertex
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+
+ % Bottom vertex
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+
+ % Positive output terminal
+ \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@down}}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\ctikzvalof{tripoles/fd op amp/output height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@down}}}
+
+ % Right vertex
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+
+ \pgfpathclose
+ \pgfusepath{stroke}
+
+ % ok, now we'll redraw the triangle with the class specific
+ % thickness and optionally fill
+
+ \pgfscope
+ \pgf@circ@setlinewidth{quadpoles}{\pgflinewidth}
+
+ % Initial point (right vertex)
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ % Top vertex
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ % Bottom vertex
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope % thick and fill
+ \endpgfscope % shift
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Negative output terminal label
+ \pgftext[right, bottom, x=3pt, y=1pt, at=\pgfpoint{0pt}{0.425\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@oplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Positive output terminal label
+ \pgftext[right, top, x=3pt, y=-1pt, at=\pgfpoint{0pt}{0.425\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@oplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+
+% Instrumentation amplifier with differential output
+\pgfdeclareshape{fd inst amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ % when tikz calls the anchor it wants the relative position in the lengths
+ % \pgf@x \pgf@y
+ % \pgfpoint* functions set that variables
+ % anchors are visible outside and run on use
+ \anchor{center}{\pgfpointorigin}
+ % savedanchors are internals and run on node creation (not use)
+ % bounding-box top left
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{nw}{
+ \northwest
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y\pgf@x=0pt\relax
+ }
+ \anchor{north}{
+ \northwest\pgf@x=0pt\relax
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \ctikzvalof{tripoles/fd inst amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/fd inst amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ % reference voltage input anchors.
+ \savedanchor\refv{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/fd inst amp/refv pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
+ }
+ % we need both because they are normally drawn under the amp, and if you
+ % mirror it vertically you need them
+ \anchor{refv up}{
+ \refv
+ }
+ \anchor{refv down}{
+ \refv
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\outport{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
+ }
+ \anchor{out}{
+ \outport
+ \pgf@y=0pt
+ }
+ \anchor{out +}{
+ \outport
+ }
+ \anchor{out -}{
+ \outport
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\outportfixed{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ }
+ \anchor{out up}{
+ \outportfixed
+ }
+ \anchor{out down}{
+ \outportfixed
+ \pgf@y=-\pgf@y
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/fd inst amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@x=-\pgf@x \pgf@y=0pt
+ }
+ \anchor{bout +}{
+ \outport
+ \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
+ }
+ \anchor{bout -}{
+ \outport
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
+ }
+ \anchor{bout up}{
+ \outportfixed
+ \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
+ }
+ \anchor{bout down}{
+ \outportfixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
+ }
+ % end border anchors
+ %
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ % let's start drawing the component
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ %
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ % main component, normally in thicker lines
+ \pgfscope
+ \newdimen\pgf@circ@res@right@double
+ \pgf@circ@res@right@double=2\pgf@circ@res@right
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@step
+ %first point (near output)
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{0}}
+ %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
+ % and then to the input "front up", "down", to the output short side "down"
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@down}}
+ % ...and close
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ % input terminal up
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % input terminal down
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % output leads down and up
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}} %
+ \pgftext[right, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$-\;$\else$+\;$\fi}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}} %
+ \pgftext[right, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$+\;$\else$-\;$\fi}
+ %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+% Transconductance amplifier (Transkonduktanzverstรคrker)
+\pgfdeclareshape{gm amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/gm amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/gm amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/gm amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/gm amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgfscope
+ \newdimen\pgf@circ@res@right@double
+ \pgf@circ@res@right@double=2\pgf@circ@res@right
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@step
+ %Umrandung:
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{0}} %geรคndert startpunkt neu am ausgangsstrich
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@up}}%vom Ausgang nach oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@down}}%ecke links unten nach rechts unten
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right}{0pt}} %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+ }
+}
+
+% Instrumentation amplifier
+\pgfdeclareshape{inst amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ % when tikz calls the anchor it wants the relative position in the lengths
+ % \pgf@x \pgf@y
+ % \pgfpoint* functions set that variables
+ % anchors are visible outside and run on use
+ \anchor{center}{\pgfpointorigin}
+ % savedanchors are internals and run on node creation (not use)
+ % bounding-box top left
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{nw}{
+ \northwest
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/inst amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ % reference voltage input anchors.
+ \savedanchor\refv{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/inst amp/refv pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
+ }
+ % we need both because they are normally drawn under the amp, and if you
+ % mirror it vertically you need them
+ \anchor{refv up}{
+ \refv
+ }
+ \anchor{refv down}{
+ \refv
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/inst amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ % let's start drawing the component
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ %
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ % main component, normally in thicker lines
+ \pgfscope
+ \newdimen\pgf@circ@res@right@double
+ \pgf@circ@res@right@double=2\pgf@circ@res@right
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@step
+ %first point (near output)
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{0}}
+ %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
+ % and then to the input "front up", "down", to the output short side "down"
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@down}}
+ % ...and close
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Output terminal
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{0pt}} %
+ %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+% Instrumentation amplifier with terminals for gain resistance between inputs
+\pgfdeclareshape{inst amp ra}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ % bounding-box top left
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{nw}{
+ \northwest
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y\pgf@x=0pt\relax
+ }
+ \anchor{north}{
+ \northwest\pgf@x=0pt\relax
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
+ }
+ % inputs (+-)
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ % R ampli anchors. They are by default at 20% more than R-length distance
+ % you can change that with the `ra pos` key (use 0.5 for one-R).
+ \savedanchor\raOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\pgf@circ@scaled@Rlen
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{ra up}{
+ \raOneFixed
+ }
+ \anchor{ra down}{
+ \raOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\raOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\pgf@circ@scaled@Rlen
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{ra-}{
+ \raOne
+ }
+ \anchor{ra+}{
+ \raOne
+ \pgf@y=-\pgf@y
+ }
+ % power supplies
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/inst amp ra/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ % reference voltage input anchors.
+ \savedanchor\refv{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=0.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=0.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/inst amp ra/refv pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
+ }
+ % we need both because they are normally drawn under the amp, and if you
+ % mirror it vertically you need them
+ \anchor{refv up}{
+ \refv
+ }
+ \anchor{refv down}{
+ \refv
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/inst amp ra/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bra up}{
+ \raOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bra down}{
+ \raOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bra-}{
+ \raOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bra+}{
+ \raOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ % drawing of the component
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \newdimen\pgf@circ@res@right@double
+ \pgf@circ@res@right@double=2\pgf@circ@res@right
+
+ % main component, normally in thicker lines
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@step
+ %primer punto: la linea de salida (lado componente)
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{0}}
+ %from the exit to the top (short side)... (note that the .6 must be copied in \up anchor
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
+ % and then to the input "front up", "down", to the output short side "down"
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@down}}
+ % ...and close
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ % ra terminal -
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+ % ra terminal +
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {-\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {-\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}}
+ %
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Output terminal
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{0pt}} %
+ %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+% Buffer
+% Contributed by Danilo Piazzalunga
+\pgfdeclareshape{buffer}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/buffer/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/buffer/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \northwest
+ \pgfmathsetlength{\pgf@x}{0.7*\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+ }
+}
+
+% plain amplifier, no symbols
+\pgfdeclareshape{plain amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/plain amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/plain amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/plain amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/plain amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@up}}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+ }
+}
+
+% plain amplifier, no symbols, one input
+\pgfdeclareshape{plain mono amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt\relax
+ }
+ \anchor{in}{
+ \inOne
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/plain amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/plain amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+ }
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% electromechanical device (motor/generator)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{elmech}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{electromechanicals}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/elmech/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/elmech/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{%
+ \@tempdima=\pgf@x\@tempdimb=\pgf@y
+ \northwest\pgf@circ@res@other=-\pgf@x
+ \pgfpointborderellipse{\pgfqpoint{\@tempdima}{\@tempdimb}}{\pgfqpoint{\pgf@circ@res@other}{\pgf@circ@res@other}}
+ }
+ \anchor{block north west}{\northwest\pgf@x=0.5\pgf@x}
+ \anchor{block south west}{\northwest\pgf@x=0.5\pgf@x\pgf@y=-\pgf@y}
+ \anchor{block north east}{\northwest\pgf@x=-0.5\pgf@x}
+ \anchor{block south east}{\northwest\pgf@x=-0.5\pgf@x\pgf@y=-\pgf@y}
+ \anchor{block up right}{
+ \northwest
+ % remember that pgf@x is negative
+ % center of the block is at 0.5*H+W*cos(30)/2
+ \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
+ \pgf@x=-0.5\pgf@x
+ }
+ \anchor{block up left}{
+ \northwest
+ % remember that pgf@x is negative
+ % center of the block is at 0.5*H+W*cos(30)/2
+ \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
+ \pgf@x=0.5\pgf@x
+ }
+ \anchor{block down right}{
+ \northwest
+ % remember that pgf@x is negative
+ % center of the block is at 0.5*H+W*cos(30)/2
+ \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
+ \pgf@y=-\pgf@y
+ \pgf@x=-0.5\pgf@x
+ }
+ \anchor{block down left}{
+ \northwest
+ % remember that pgf@x is negative
+ % center of the block is at 0.5*H+W*cos(30)/2
+ \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
+ \pgf@y=-\pgf@y
+ \pgf@x=0.5\pgf@x
+ }
+ \behindbackgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope % clip the bar: whole size minus the circle
+ \pgfpathrectanglecorners{\pgfpoint{-.5\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{\ctikzvalof{color}}
+ \pgfusepath{fill, draw}
+ \endpgfscope
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{white}
+ % ...but override it if the class is defined!
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{draw, fill}
+ \fi
+ \endpgfscope
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%
+%% Magnetron
+%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{magnetron}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}} % class of these components
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{anode}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{cathode1}{
+ \northwest
+ \pgf@circ@res@step=\pgf@y
+ \pgfmathparse{cos(105)}
+ \pgf@x=\pgfmathresult\pgf@circ@res@step
+ \pgfmathparse{sin(105)}
+ \pgf@y=\pgfmathresult\pgf@circ@res@step
+ %\pgfpointorigin
+ %\pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
+ }
+ \anchor{cathode2}{
+ \northwest
+ \pgf@circ@res@step=\pgf@y
+ \pgfmathparse{cos(75)}
+ \pgf@x=\pgfmathresult\pgf@circ@res@step
+ \pgfmathparse{sin(75)}
+ \pgf@y=\pgfmathresult\pgf@circ@res@step
+ %\pgfpointorigin
+ %\pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfmathsetlength{\pgf@circ@res@other}{sin(15)*\pgf@circ@res@up}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ %create outer circle
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@right}
+ \pgf@circ@draworfill
+ %create chambers
+ \foreach \angle in {45,135,225,315}{
+ \pgfpathmoveto{ \pgfpointpolar{\angle}{0.6\pgf@circ@res@right}}
+ \pgfpathlineto{ \pgfpointpolar{\angle}{\pgf@circ@res@right}}
+ }
+ \pgfsetroundcap
+ \pgfusepath{draw}
+ \pgfscope
+ %draw connection from outside
+ %anode
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ %cathodes
+ \pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ %create cathode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.15\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ %create anode
+ \pgfpathmoveto{\pgfpoint{0.3\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Electronic tubes, submitted by J. op den Brouw
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Draw tube outline
+\def\pgf@circ@tubes@drawtube{%
+ \ifdim\ctikzvalof{tubes/width}pt>\ctikzvalof{tubes/height}pt\relax
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfutil@tempdima=\pgf@circ@res@right
+ \advance\pgfutil@tempdima by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgfutil@tempdima}{\pgf@circ@res@up}}
+ \pgfpatharc{90}{-90}{\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{-\pgfutil@tempdima}{-\pgf@circ@res@up}}
+ \pgfpatharc{270}{90}{\pgf@circ@res@up}
+ \else
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{0pt}}
+ \pgfutil@tempdima=\pgf@circ@res@up
+ \advance\pgfutil@tempdima by -\pgf@circ@res@right
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
+ \pgfpatharc{180}{0}{\pgf@circ@res@right}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfutil@tempdima}}
+ \pgfpatharc{180}{0}{-\pgf@circ@res@right}
+ \fi
+ \pgfpathclose
+}
+
+%% The diode (tube), triode, tetrode and pentode only differ in the
+%% number of grids. So we construct a generic declare function in
+%% which we can put code for the grid anchors and grid drawing code
+%% \pgfcircdeclaretube{tube name}{grid anchors}{grid drawing code}
+\long\def\pgfcircdeclaretube#1#2#3{%
+ \pgfdeclareshape{#1}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
+ % x and y should be half the Rlen
+ \pgf@y=\pgf@circ@res@up
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgf@circ@res@right
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{north} {%
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{east}{%
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{south}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{west}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{north west}{%
+ \northwest
+ }
+ \anchor{north east}{%
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{anode} {%
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{cathode}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
+ }
+ \anchor{cathode 1}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
+ }
+ \anchor{cathode 2}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=-\ctikzvalof{tubes/cathode width}\pgf@x
+ }
+ \anchor{filament 1}{%
+ \northwest
+ \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgf@x=\pgfmathresult\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{filament 2}{%
+ \northwest
+ \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgf@x=-\pgfmathresult\pgf@x
+ \pgf@y=-\pgf@y
+ }
+
+ % Extra anchors
+ #2
+
+ \backgroundpath{
+ \pgfscope
+ % Line width for tripoles
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ % Setup to draw tube
+ \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up=\ctikzvalof{tubes/tube radius}\pgf@circ@res@up
+ \pgf@circ@res@right=\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+
+ % Tube outline
+ \pgf@circ@tubes@drawtube
+
+ % Setup to draw grid, filament, anode and cathode
+ \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up=0.5\pgf@circ@res@up
+ \pgf@circ@res@right=0.5\pgf@circ@res@right
+
+ % Tube fill color (if any)
+ \pgf@circ@draworfill
+
+ % Grid drawing
+ #3
+
+ % Filament (is not drawn by default)
+ \ifpgf@circuit@tubes@filament
+ \pgf@circ@res@temp=-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up
+ \advance\pgf@circ@res@temp by -\ctikzvalof{tubes/filament distance}\pgf@circ@res@up
+ \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgf@xa=\pgfmathresult\pgf@circ@res@right
+ \pgfmathparse{\ctikzvalof{tubes/tube radius}+\ctikzvalof{tubes/tube radius}*cos(\ctikzvalof{tubes/filament angle}}
+ \pgf@ya=\pgfmathresult\pgf@circ@res@up
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@ya}}
+ \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@ya}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@circ@res@up}}
+ \pgf@circuit@tubes@filamentfalse
+ \fi
+
+ % Anode (or plate)
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}} % north
+ \pgfpathlineto{\pgfpoint{0pt}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
+
+ % Cathode
+ \ifpgf@circuit@tubes@nocathode
+ \pgf@circuit@tubes@nocathodefalse
+ \else
+ \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
+ \ifpgf@circuit@tubes@fullcathode
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
+ \pgf@circuit@tubes@fullcathodefalse
+ \else
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-\ctikzvalof{tubes/cathode right extend}\pgf@circ@res@up}}
+ \fi
+ \fi
+
+ % Draw the background
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+}
+
+\pgfcircdeclaretube{diodetube}{}{} % shape diode already exists
+
+\pgfcircdeclaretube{triode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+ \anchor{control} {%
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+}
+{
+ % Grid protrusion
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+}
+
+\pgfcircdeclaretube{tetrode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{screen} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+}
+{
+ % Grid x/y points
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
+ \pgfutil@tempdimb=-\pgfutil@tempdima
+ \pgfutil@tempdima=0.5\pgfutil@tempdima
+ \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \pgfutil@tempdimb=0.5\pgfutil@tempdimb
+ \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ % Grid protrusion
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+}
+
+\pgfcircdeclaretube{pentode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{screen} {%
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+ \anchor{suppressor} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+}
+{
+ % Grid x/y points
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
+ \pgfutil@tempdimb=-\pgfutil@tempdima
+ \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ % Grid protrusion
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+}
+
+\pgfcircdeclaretube{pentode suppressor to cathode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{screen} {%
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+}
+{
+ % Grid x/y points
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
+ \pgfutil@tempdimb=-\pgfutil@tempdima
+ \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ % Grid protrusion
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \ifnum\pgf@circ@count@a>1\relax
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
+ \fi
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+ % Grid: connection from suppressor to cathode
+ \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima-2*\ctikzvalof{tubes/grid separation}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
+
+}
+
+%%%---------- close: tex/pgfcirctripoles
+%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
+%%%---------- open: tex/pgfcircquadpoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Quadripoles
+
+\long\def\pgfcircdeclarequadpole#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{inductors}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedmacro{\stretto}{\def\stretto{\ctikzvalof{quadpoles/#1/inner}}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{quadpoles/#1/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=.5\pgf@circ@scaled@Rlen
+ \pgf@x=-\ctikzvalof{quadpoles/#1/width}\pgf@x
+ }
+ %% we define the upper right (positive coord) dot (which is B1)
+ \savedanchor{\innerdot}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@xa=.5\pgf@circ@scaled@Rlen
+ \pgf@xa=-\ctikzvalof{quadpoles/#1/width}\pgf@xa
+ % by default use the cute inductor size
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@scaled@Rlen/2}
+ % check if it's american
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}
+ \edef\pgf@temp{american}
+ \ifx\pgf@circ@temp\pgf@temp
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/americaninductor/height}*\pgf@circ@scaled@Rlen/2}
+ \fi
+ % check if it's european
+ \edef\pgf@temp{european}
+ \ifx\pgf@circ@temp\pgf@temp
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/fullgeneric/height}*\pgf@circ@scaled@Rlen/2}
+ \fi
+ \pgfmathsetlength\pgf@y{0.5*\pgf@circ@scaled@Rlen}
+ }
+ \savedanchor{\outerdot}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@xa=.5\pgf@circ@scaled@Rlen
+ \pgf@xa=-\ctikzvalof{quadpoles/#1/width}\pgf@xa
+ % by default use the cute inductor size
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@scaled@Rlen/2}
+ % check if it's american
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}
+ \edef\pgf@temp{american}
+ \ifx\pgf@circ@temp\pgf@temp
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/americaninductor/height}*\pgf@circ@scaled@Rlen/2}
+ \fi
+ % check if it's european
+ \edef\pgf@temp{european}
+ \ifx\pgf@circ@temp\pgf@temp
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/fullgeneric/height}*\pgf@circ@scaled@Rlen/2}
+ \fi
+ \pgfmathsetlength\pgf@y{0.5*\pgf@circ@scaled@Rlen}
+ }
+ \anchor{A2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{A1}{
+ \northwest
+ }
+ \anchor{B2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ %% dot's anchors
+ \anchor{inner dot A1}{\innerdot\pgf@x=-\pgf@x}
+ \anchor{outer dot A1}{\outerdot\pgf@x=-\pgf@x}
+ \anchor{inner dot A2}{\innerdot\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{outer dot A2}{\outerdot\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{inner dot B1}{\innerdot}
+ \anchor{outer dot B1}{\outerdot}
+ \anchor{inner dot B2}{\innerdot\pgf@y=-\pgf@y}
+ \anchor{outer dot B2}{\outerdot\pgf@y=-\pgf@y}
+ % geographical
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{base}{
+ \northwest
+ \pgf@x=0pt
+ }
+ #3
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ #2
+ }
+ }
+}
+
+
+\def\pgf@circ@drawtransformerbasicanchor{
+ \ctikzvalof{quadpoles/trans/height}
+ \anchor{AA2}{
+ \northwest
+ \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{AA1}{
+ \northwest
+ \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
+ }
+}
+
+%% Null styles that can be used to change individually the L1 and L2
+%% inductors of the transformer.
+
+\ctikzset{transformer L1/.style={}}
+\ctikzset{transformer L2/.style={}}
+
+\def\pgf@circ@drawtransformerbasicbody{
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@down}%
+ }
+
+ \pgfkeys{\circuitikzbasekey/.cd, transformer L1}
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+
+ \endpgfscope
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@up}%
+ }
+
+ \pgfkeys{\circuitikzbasekey/.cd, transformer L2}
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{\thisshape-L1}{b}}
+
+ \pgfpathmoveto{\pgfpointanchor{\thisshape-L1}{a}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{\thisshape-L2}{a}}
+
+ \pgfpathmoveto{\pgfpointanchor{\thisshape-L2}{b}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+}
+
+
+\pgfcircdeclarequadpole{transformer}{
+ \pgf@circ@drawtransformerbasicbody
+}{\pgf@circ@drawtransformerbasicanchor}
+
+\pgfcircdeclarequadpole{transformer core}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+ % use the chocke line thickness
+ \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
+
+ % Find the distance from center for the lines representing the core
+ % the 2.5 is for backward compatibility --- the distance was calculated as a fraction
+ % of the whole component, now as a fraction of the distance between coils, to be
+ % compatible with the quadpoles "inner" style.
+ \pgfmathsetlength{\pgf@circ@res@other}{2.5*\stretto*\ctikzvalof{quadpoles/transformer core/core width}*\pgf@circ@res@right}
+
+ \pgfmoveto{\pgfpoint%
+ {\pgf@circ@res@other}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint%
+ {\pgf@circ@res@other}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ %% this should be just -\pgf@circ@res@other, but in case someone define an asymmetric trafo someday...
+ \pgfmathsetlength{\pgf@circ@res@other}{2.5*\stretto*\ctikzvalof{quadpoles/transformer core/core width}*\pgf@circ@res@left}
+ \pgfmoveto{\pgfpoint%
+ {\pgf@circ@res@other}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint%
+ {\pgf@circ@res@other}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgfusepath{draw}
+}{\pgf@circ@drawtransformerbasicanchor}
+
+
+\pgfcircdeclarequadpole{gyrator}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{quadpoles}{\pgflinewidth}
+ \pgfmathsetlength{\pgf@circ@res@other}{min(.7*\stretto*\pgf@circ@res@up, .8*\pgf@circ@res@right)} % radius
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{-\pgf@circ@res@other}}
+ \pgfpatharc{-90}{90}{\pgf@circ@res@other}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpatharc{90}{270}{\pgf@circ@res@other}
+ \pgfpathclose
+ \pgf@circ@draworfill
+}{}
+
+%%%%%%%%%%%%%%%%%%%%
+%% Block elements
+%%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{mixer}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@boxed
+ \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{adder}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@boxed
+ \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{oscillator}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@boxed
+ \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \else
+ \pgf@y=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y}
+ \anchor{north east}{ \northwest \pgf@x=0pt\relax}
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{text}{
+ \pgf@x=-2\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen{}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
+
+ % draw outer box
+ \ifpgf@circuit@boxed{}
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{circulator}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@boxed
+ \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed{}
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % inner arrow
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
+ \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+%% gridnode
+\pgfdeclareshape{gridnode}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{up}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{down}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{right}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{left}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \relax
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{text}{
+ \pgf@x=-2\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@step = \ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{0.05mm}
+
+ % draw grid
+ \foreach \line in {-1,-.5,...,1}
+ {
+ \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\line\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\line\pgf@circ@res@down}}
+ }
+
+ %prevent from draw the inner cross twice
+ \foreach \line in {-.5,0,...,.5}
+ {
+ \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\line\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\line\pgf@circ@res@down}}
+ }
+ \pgfusepath{draw}
+ }
+}
+
+
+% Wilkinson divider
+\pgfdeclareshape{wilkinson}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/wilkinson/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\ctikzvalof{tripoles/wilkinson/width}\pgf@x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{out2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ % draw inner resisitor - european or american style is recognised
+ {
+ \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgftransformrotate{90}
+
+ % calculate size of resistor
+ \ifpgf@circuit@europeanresistor
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{genericshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{resistorshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
+ \fi
+ }
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{wilk@int@R}{right}}
+
+ \pgfpathmoveto{\pgfpointanchor{wilk@int@R}{left}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+
+%% couplers generics
+\long\def\pgfcircdeclarefourport#1#2{
+
+ \pgfdeclareshape{#1}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{quadpoles/#1/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=.5\pgf@circ@scaled@Rlen
+ \pgf@x=-\ctikzvalof{quadpoles/#1/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{port1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{port4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+
+ % draw inner stuff
+ #2
+
+ % draw inner text
+ \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+ }
+ }
+}
+
+% four-port
+\pgfcircdeclarefourport{fourport}{}
+
+% straight coupler
+\pgfcircdeclarefourport{coupler}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+}
+
+% "bended" coupler
+\pgfcircdeclarefourport{coupler2}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%%%---------- close: tex/pgfcircquadpoles
+%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
+%%%---------- open: tex/pgfcircmultipoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Multipoles by Romano Giannetti
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%
+%% Chips
+%%%%%%%%%
+
+% let's use the same shifts everywhere, no magic numbers
+\def\pgf@circ@dip@pin@shift{0.5}
+\def\pgf@circ@qfp@pin@shift{0.25}
+
+% derived from https://tex.stackexchange.com/a/146753/38080
+% original author Mark Wibrow
+% Thanks also to John Kormylo https://tex.stackexchange.com/a/372996/38080
+% a lot of thanks to @marmot for the un-rotation hint
+% https://tex.stackexchange.com/a/473571/38080
+
+% DIP (dual in line package) chips
+
+\pgfdeclareshape{dipchip}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{chips}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro\numpins{%
+ \pgf@circ@count@a=\ctikzvalof{multipoles/dipchip/num pins}%
+ \def\numpins{\the\pgf@circ@count@a}
+ }
+ \savedanchor\centerpoint{%
+ \pgf@x=-.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \savedanchor\origin{\pgfpoint{0pt}{0pt}}
+ \anchor{center}{\origin}
+ \anchor{text}{\centerpoint}% to adjust text
+ \saveddimen\height{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{((\numpins)
+ *\ctikzvalof{multipoles/dipchip/pin spacing})*\pgf@circ@scaled@Rlen/2}%
+ }%
+ \saveddimen{\chipspacing}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/pin spacing}}}
+ \saveddimen{\width}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/width}}}
+ \saveddimen{\extshift}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
+ % standard anchors
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{0.5*((\numpins)
+ *\ctikzvalof{multipoles/dipchip/pin spacing})*\pgf@circ@scaled@Rlen/2}%
+ \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/width}}
+ }
+ \anchor{dot}{\northwest
+ \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
+ \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ % start drawing
+ \backgroundpath{%
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step = \ctikzvalof{multipoles/dipchip/pin spacing}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
+ \pgfscope% (for the line width)
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
+ \pgf@circ@draworfill
+ %% upside mark
+ \ifpgf@circuit@chip@topmark
+ \pgfpathmoveto{\pgfpoint{0.2*\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpatharc{0}{180}{0.2*\pgf@circ@res@left}
+ \fi
+ \pgfusepath{stroke}%
+ \pgfsetcolor{\ctikzvalof{color}}
+ % Adding the pin number
+ \ifpgf@circuit@chip@shownumbers
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
+ \ifpgf@circuit@chip@straightnumbers
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
+ \else
+ \pgfmathsetmacro{\rot}{0}
+ \pgfmathsetmacro{\quadrant}{0}
+ \fi
+ \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
+ \def\mytext{\ctikzvalof{multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \ifcase\quadrant % rotation 0
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \fi
+ \endpgfscope
+ \ifdim\pgf@circ@res@other>0pt
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \edef\padfrac{\ctikzvalof{multipoles/external pad fraction}}
+ \ifnum\padfrac>0
+ \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
+ % left side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % right side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \else
+ % left side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % right side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{stroke}
+ \endpgfscope
+ \fi
+ }%
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@dipchip{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\numpins\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@dipchip@pin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@dipchip@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+ }
+
+% QFP (quad flat package) chips
+
+\pgfdeclareshape{qfpchip}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{chips}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro\numpins{%
+ \pgf@circ@count@a=\ctikzvalof{multipoles/qfpchip/num pins}%
+ \def\numpins{\the\pgf@circ@count@a}
+ }
+ \savedanchor\centerpoint{%
+ \pgf@x=-.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \savedanchor\origin{\pgfpoint{0pt}{0pt}}
+ \anchor{center}{\origin}
+ \anchor{text}{\centerpoint}% to adjust text
+ \saveddimen\height{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{((\numpins+2)
+ *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
+ }%
+ \saveddimen\width{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{((\numpins+2)
+ *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
+ }%
+ \saveddimen{\chipspacing}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/qfpchip/pin spacing}}}
+ \saveddimen{\extshift}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
+ % standard anchors
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{0.5*((\numpins+2)
+ *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
+ \pgf@x=-\pgf@y
+ }
+ \anchor{dot}{\northwest
+ \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
+ \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ % start drawing
+ \backgroundpath{%
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step = \ctikzvalof{multipoles/qfpchip/pin spacing}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
+ \pgfscope% (for the line width)
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ %% upside mark
+ \ifpgf@circuit@chip@topmark
+ \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2-\pgf@circ@res@step/2}}
+ \pgfpathlineto{\pgfpoint{-\width/2+\pgf@circ@res@step/2}{\height/2}}
+ \else
+ \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2}}
+ \fi
+ %% rest of the shape
+ \pgfpathlineto{\pgfpoint{\width/2}{\height/2}}
+ \pgfpathlineto{\pgfpoint{\width/2}{-\height/2}}
+ \pgfpathlineto{\pgfpoint{-\width/2}{-\height/2}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ % Adding the pin number
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifpgf@circuit@chip@shownumbers
+ \pgf@circ@count@a=\numpins%
+ \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
+ % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
+ \ifpgf@circuit@chip@straightnumbers
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
+ \else
+ \pgfmathsetmacro{\rot}{0}
+ \pgfmathsetmacro{\quadrant}{0}
+ \fi
+ \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
+ \def\mytext{\ctikzvalof{multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \ifcase\quadrant % rotation 0
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \fi
+ \endpgfscope
+ \ifdim\pgf@circ@res@other>0pt
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins%
+ \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \edef\padfrac{\ctikzvalof{multipoles/external pad fraction}}
+ \ifnum\padfrac>0
+ \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
+ % left side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % bottom side pads
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
+ % right side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % top side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \else
+ % left side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % bottom side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ % right side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % top side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{stroke}
+ \endpgfscope
+ \fi
+ }%
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@qfpchip{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\numpins%
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \expandafter\xdef\csname pgf@anchor@qfpchip@pin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@qfpchip@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop%
+ }%
+ }
+
+%% anchors for DIP
+\def\pgf@circ@dippinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \c@pgf@countc=\numpins\relax
+ \divide\c@pgf@countc by 2
+ \ifnum #1 > \the\c@pgf@countc
+ % right side
+ \pgfpoint{\width/2+#2*\extshift}{-\height/2+(\pgf@circ@dip@pin@shift-\c@pgf@countc+#1-1)*\chipspacing}
+ \else
+ \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@dip@pin@shift-#1)*\chipspacing}
+\fi
+}
+
+%% anchors for QFP
+\def\pgf@circ@qfppinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \c@pgf@countc=\numpins\relax
+ \divide\c@pgf@countc by 4
+ \ifnum #1 > \the\c@pgf@countc
+ \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 2
+ \ifnum #1 > \the\c@pgf@countb
+ \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 3
+ \ifnum #1 > \the\c@pgf@countb
+ % 3*npins/4 < pin, top side
+ \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift+\c@pgf@countb-#1)*\chipspacing}{\height/2+#2*\extshift}%
+ \else
+ % 2*npins/4 < pin <= 3*npins/4, right side
+ \pgfpoint{\width/2+#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}%
+ \fi
+ \else
+ % npins/4 < pin <= 2*npins/4, bottom side
+ \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}{-\height/2-#2*\extshift}%
+ \fi
+ \else
+ % <= npins/4, left side
+ \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-#1)*\chipspacing}%
+ \fi
+}
+
+%%%%%%%%%%%%%%%%%
+%% Rotary Switch
+%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{rotaryswitch}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northeast{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ % the magic number is 0.25/cos(35)
+ % try to recalculate it for the actual switch
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=.3052\pgf@circ@res@temp
+ \edef\a{\ctikzvalof{multipoles/rotary/angle}}
+ \edef\r{\ctikzvalof{nodes width}}
+ \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@x}{\r*\pgf@circ@scaled@Rlen + \pgf@circ@res@temp}
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ % the magic number is 0.25/cos(35)
+ % try to recalculate it for the actual switch
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=.3052\pgf@circ@res@temp
+ \edef\a{\ctikzvalof{multipoles/rotary/angle}}
+ \edef\r{\ctikzvalof{nodes width}}
+ \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@x}{-\r*\pgf@circ@scaled@Rlen - (\a<90 ? 1 : 1-2*cos(\a))*\pgf@circ@res@temp}
+ }
+ \savedanchor\central{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ % the magic number is 0.25/cos(35)
+ % try to recalculate it for the actual switch
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=.3052\pgf@circ@res@temp
+ \edef\a{\ctikzvalof{multipoles/rotary/angle}}
+ \edef\r{\ctikzvalof{nodes width}}
+ \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@x}{(\a<90 ? 0 : cos(\a))*\pgf@circ@res@temp}
+ }
+ % external square limits
+ \savedanchor\extnorthwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ \pgf@x=.3052\pgf@x % the magic number is 0.25/cos(35)
+ \pgf@x=2.5\pgf@x % external square size
+ \pgf@y=-\pgf@x %square thing when angle=180?
+ }
+ \saveddimen{\width}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{0.3052*\pgf@circ@scaled@Rlen*\ctikzvalof{tripoles/spdt/width}}}
+ % radius of the connector
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % shape type
+ \savedmacro{\cshape}{\def\cshape{\ctikzvalof{multipoles/rotary/shape}}}
+ \savedmacro{\channels}{\def\channels{\ctikzvalof{multipoles/rotary/channels}}}
+ \savedmacro{\angle}{\def\angle{\ctikzvalof{multipoles/rotary/angle}}}
+ \savedmacro{\wiper}{\def\wiper{\ctikzvalof{multipoles/rotary/wiper}}}
+ \savedmacro{\stepa}{\pgfmathsetmacro{\stepa}{2*\ctikzvalof{multipoles/rotary/angle}/(\ctikzvalof{multipoles/rotary/channels}-1)}}
+ % mid of the lever, to stack switches
+ %\anchor{mid}{\midlever}
+ \anchor{mid}{\northwest
+ \pgf@circ@res@temp=-\pgf@x
+ \pgfmathsetlength{\pgf@x}{\pgf@circ@res@temp*(-1+cos(\wiper))}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp*sin(\wiper)}
+ }
+ % center anchors
+ \anchor{cin}{ \northwest \pgf@y=0pt\advance\pgf@x by \radius}
+ % horizontal angles
+ \anchor{in}{ \northwest \pgf@y=0pt}
+ \anchor{ain}{ \northwest \pgf@y=0pt}
+
+ \anchor{center}{ \central \pgf@y=0pt }
+ \anchor{east}{ \northeast \pgf@y=0pt }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \central \pgf@y=-\pgf@y }
+ \anchor{north}{ \central }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northeast }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northeast \pgf@y=-\pgf@y }
+
+ \anchor{ext center}{ \pgf@y=0pt \pgf@x=0pt \advance\pgf@x by -\width}
+ \anchor{ext east}{ \extnorthwest \pgf@y=0pt \pgf@x=-\pgf@x \advance\pgf@x by -\width}
+ \anchor{ext west}{ \extnorthwest \pgf@y=0pt \advance\pgf@x by -\width}
+ \anchor{ext south}{ \extnorthwest \pgf@x=0pt \pgf@y=-\pgf@y \advance\pgf@x by -\width}
+ \anchor{ext north}{ \extnorthwest \pgf@x=0pt \advance\pgf@x by -\width}
+ \anchor{ext south west}{ \extnorthwest \pgf@y=-\pgf@y \advance\pgf@x by -\width}
+ \anchor{ext north east}{ \extnorthwest \pgf@x=-\pgf@x \advance\pgf@x by -\width}
+ \anchor{ext north west}{ \extnorthwest \advance\pgf@x by -\width}
+ \anchor{ext south east}{ \extnorthwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y \advance\pgf@x by -\width}
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@res@right = \width
+ \pgf@circ@res@left = -\width
+
+ \pgfscope %wiper
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \pgf@circ@res@temp=\radius\relax
+ \pgf@circ@res@temp=\ctikzvalof{multipoles/rotary/thickness}\pgf@circ@res@temp
+ \pgfsetlinewidth{2\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\wiper}{2\pgf@circ@res@right}}}
+ \pgfsetroundcap\pgfusepath{draw}
+ \endpgfscope
+
+ \ifpgf@circ@rotaryarrow
+ \pgfscope % arrow
+ \ifpgf@circ@rotaryarrow@ccw\pgfsetarrowsstart{latexslim}\fi
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % center of cin node
+ \pgftransformrotate{\wiper}
+ \pgfpathmoveto{\pgfpointpolar{50}{1.0\pgf@circ@res@right}}
+ \pgfpatharc{50}{-50}{1.0\pgf@circ@res@right}
+ \ifpgf@circ@rotaryarrow@cw\pgfsetarrowsend{latexslim}\fi
+ \pgfusepath{draw}
+ \endpgfscope
+ \fi
+
+ % \typeout{CHANNELS\space\channels\space ANGLE\space\angle STEPA\space\stepa}
+ \pgf@circ@count@a=\channels\relax
+ \pgfmathsetmacro{\currenta}{-\angle}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % \typeout{LOOPIN\space\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
+ \pgfscope
+ \pgftransformshift{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\currenta}{2\pgf@circ@res@right}}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out \the\pgf@circ@count@a}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfmathsetmacro{\currenta}{\currenta+\stepa}
+ % \typeout{LOOPOUT\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+
+ \pgfscope % input
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
+ \endpgfscope
+ }
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@rotaryswitch{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\channels\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@out\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{1}{0}%
+ }
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@cout\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{0}%
+ }
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@aout\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@sqout\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotarysqanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+}
+
+\def\pgf@circ@rotaryanchor#1#2#3{% #1: numero del pin; #2: 1 - x pos, 0 - center; #3 0: inner, 1 outer
+ \pgf@circ@res@temp=\width
+ \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
+ \pgfmathsetlength{\pgf@x}{2*(\pgf@circ@res@temp+#3*\radius/2)*cos(\myangle))+#2*\radius}
+ \pgfmathsetlength{\pgf@y}{2*(\pgf@circ@res@temp+#3*\radius/2)*sin(\myangle)}
+ \advance\pgf@x by -\pgf@circ@res@temp
+}
+
+\def\pgf@circ@rotarysqanchor#1{% external square anchors
+ \pgf@circ@res@temp=\width
+ \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
+ \pgfpointborderrectangle{\pgfpointpolar{\myangle}{1pt}}{\pgfpoint{2.5\pgf@circ@res@temp}{2.5\pgf@circ@res@temp}}
+ \advance\pgf@x by -\pgf@circ@res@temp
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Seven segments displays
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{bare7seg}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{displays}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\dotstatus}{\edef\dotstatus{\pgf@circ@sevenseg@dotstate}}
+ \saveddimen{\dotspace}{% the dot is on the right, and occupy the same as the thickness
+ \ifpgf@circ@sevenseg@dot
+ \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/thickness}}
+ \else
+ \pgf@x=0pt
+ \fi
+ }
+ % The object extension is more or less (-width/2,-width) to (width/2,width)
+ % and adjusted for line thickness (both sides) and eventually the dot
+ \saveddimen{\width}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}}
+ \saveddimen{\gap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/segment sep}}}
+ \saveddimen{\boxgap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/box sep}}}
+ \savedanchor{\southwest}{% both negative
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
+ -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
+ \pgfmathsetlength{\pgf@y}{-\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
+ -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
+ }
+ \savedanchor{\northeast}{% both positive
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circ@sevenseg@dot
+ \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{seven seg/thickness}}
+ \else
+ \pgf@circ@res@other=0pt
+ \fi
+ \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
+ +0.5*\ctikzvalof{seven seg/thickness}+\pgf@circ@res@other+\ctikzvalof{seven seg/box sep}}
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
+ +0.5*\ctikzvalof{seven seg/thickness}+\ctikzvalof{seven seg/box sep}}
+ }
+ \savedanchor{\topright}{% anchor without the box sep and the thickness
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{north west}{\southwest\pgf@y=-\pgf@y}
+ \anchor{north east}{\northeast}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\southwest}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0pt}
+ \anchor{south}{\southwest\pgf@x=0pt}
+ \anchor{west}{\southwest\pgf@y=0pt}
+ \anchor{a}{\topright\pgf@x=0pt}
+ \anchor{b}{\topright\pgf@y=0.5\pgf@y}
+ \anchor{c}{\topright\pgf@y=-0.5\pgf@y}
+ \anchor{d}{\topright\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{e}{\topright\pgf@x=-\pgf@x\pgf@y=-0.5\pgf@y}
+ \anchor{f}{\topright\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{g}{\pgfpointorigin}
+ \anchor{dot}{\topright\pgf@y=-\pgf@y\advance\pgf@x by \dotspace}
+ \behindbackgroundpath{%
+ \southwest % I do not want the dot here, it will stick out
+ \pgf@circ@res@up = -\pgf@y
+ \pgf@circ@res@down = \pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \pgf@circ@res@left = -\pgf@x
+ \pgfscope
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfpathrectanglecorners%
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@left+\dotspace}{\pgf@circ@res@up}}
+ \ifpgf@circ@sevenseg@box
+ \pgf@circ@draworfill
+ \else
+ \pgf@circ@maybefill
+ \fi
+ \endpgfscope
+ \edef\bits{\ctikzvalof{seven seg/bits}}
+ \pgfscope
+ \pfg@circ@sseg@drawbits{\bits}
+ \endpgfscope
+ \pgfscope
+ \ifpgf@circ@sevenseg@dot
+ \pgf@circ@sseg@drawdots
+ \fi
+ \endpgfscope
+ }
+}
+
+\def\pgf@circ@sseg@splitbits#1#2#3#4#5#6#7\relax{%split the seven bits
+ \edef\@@a{#1}\edef\@@b{#2}\edef\@@c{#3}\edef\@@d{#4}\edef\@@e{#5}\edef\@@f{#6}\edef\@@g{#7}%
+}
+\def\pgf@circ@sseg@drawone#1#2#3#4#5{% #1 on off the x1, y1, x2 , y2
+ \ifnum #1 > 0\relax
+ \pgfsetcolor{\ctikzvalof{seven seg/color on}}
+ \else
+ \pgfsetcolor{\ctikzvalof{seven seg/color off}}
+ \fi
+ \pgfpathmoveto{\pgfpoint{#2}{#3}}
+ \pgfpathlineto{\pgfpoint{#4}{#5}}
+ \pgfusepath{draw}
+}
+\def\pfg@circ@sseg@drawbits#1{% #1 must be 7 bits
+ \expandafter\pgf@circ@sseg@splitbits#1\relax% a bit of magic...
+ \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
+ \pgfsetlinewidth{\ctikzvalof{seven seg/thickness}}
+ % \pgfsetroundcap
+ \pgfsetarrowsstart{Triangle Cap[]}
+ \pgfsetarrowsend{Triangle Cap[]}
+ % segments
+ \pgf@circ@sseg@drawone{\@@a}{-\width/2+\gap}{\width}{\width/2-\gap}{\width}
+ \pgf@circ@sseg@drawone{\@@b}{\width/2}{\width-\gap}{\width/2}{0pt+\gap}
+ \pgf@circ@sseg@drawone{\@@c}{\width/2}{0pt-\gap}{\width/2}{-\width+\gap}
+ \pgf@circ@sseg@drawone{\@@d}{\width/2-\gap}{-\width}{-\width/2+\gap}{-\width}
+ \pgf@circ@sseg@drawone{\@@e}{-\width/2}{-\width+\gap}{-\width/2}{0pt-\gap}
+ \pgf@circ@sseg@drawone{\@@f}{-\width/2}{0pt+\gap}{-\width/2}{\width-\gap}
+ \pgf@circ@sseg@drawone{\@@g}{-\width/2+\gap}{0pt}{\width/2-\gap}{0pt}
+}
+\def\pgf@circ@sseg@drawdots{% dots
+ \edef\what{empty}
+ \ifx\what\pgf@circ@sevenseg@dotstate
+ % do nothing
+ \else
+ \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
+ \edef\what{off}
+ \ifx\what\pgf@circ@sevenseg@dotstate
+ % dot off
+ \pgfsetfillcolor{\ctikzvalof{seven seg/color off}}
+ \pgfsetcolor{\ctikzvalof{seven seg/color off}}
+ \else
+ % dot on
+ \pgfsetfillcolor{\ctikzvalof{seven seg/color on}}
+ \pgfsetcolor{\ctikzvalof{seven seg/color on}}
+ \fi
+ \pgfpathcircle{\pgfpoint{\width/2+2*\pgf@circ@res@other}{-\width}}{\pgf@circ@res@other}
+ \pgfusepath{draw,fill}
+ \fi
+}
+
+
+%%%%%%
+%%%%%% Flip-flops
+%%%%%%
+
+% Flip flops are a specialized kind of dipchip.
+% they have a class by themselves
+
+%% flip flop definitions --- by default empty
+%% pin texts
+\ctikzset{multipoles/flipflop/t1/.initial={}}
+\ctikzset{multipoles/flipflop/t2/.initial={}}
+\ctikzset{multipoles/flipflop/t3/.initial={}}
+\ctikzset{multipoles/flipflop/t4/.initial={}}
+\ctikzset{multipoles/flipflop/t5/.initial={}}
+\ctikzset{multipoles/flipflop/t6/.initial={}}
+\ctikzset{multipoles/flipflop/tu/.initial={}}
+\ctikzset{multipoles/flipflop/td/.initial={}}
+% pin clock wedge flags
+\ctikzset{multipoles/flipflop/c1/.initial={0}}
+\ctikzset{multipoles/flipflop/c2/.initial={0}}
+\ctikzset{multipoles/flipflop/c3/.initial={0}}
+\ctikzset{multipoles/flipflop/c4/.initial={0}}
+\ctikzset{multipoles/flipflop/c5/.initial={0}}
+\ctikzset{multipoles/flipflop/c6/.initial={0}}
+\ctikzset{multipoles/flipflop/cu/.initial={0}}
+\ctikzset{multipoles/flipflop/cd/.initial={0}}
+% pin negation circle flags
+\ctikzset{multipoles/flipflop/n1/.initial={0}}
+\ctikzset{multipoles/flipflop/n2/.initial={0}}
+\ctikzset{multipoles/flipflop/n3/.initial={0}}
+\ctikzset{multipoles/flipflop/n4/.initial={0}}
+\ctikzset{multipoles/flipflop/n5/.initial={0}}
+\ctikzset{multipoles/flipflop/n6/.initial={0}}
+\ctikzset{multipoles/flipflop/nu/.initial={0}}
+\ctikzset{multipoles/flipflop/nd/.initial={0}}
+
+
+% Thanks to @marmot
+\tikzset{flipflop def/.code=\pgfqkeys{\circuitikzbasekey/multipoles/flipflop}{#1}}
+
+% default set of flip flops
+\tikzset{
+ % async
+ latch/.style={flipflop, flipflop def={t1=D, t6=Q, t3=CLK, t4=\ctikztextnot{Q}}},
+ flipflop SR/.style={flipflop, flipflop def={t1=S, t3=R, t6=Q, t4=\ctikztextnot{Q}}},
+ % sync
+ flipflop D/.style={flipflop, flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
+ flipflop T/.style={flipflop, flipflop def={t1=T, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
+ flipflop JK/.style={flipflop, flipflop def={t1=J, t3=K, c2=1, t6=Q, t4=\ctikztextnot{Q}}},
+ % additional features
+ add async SR/.style={flipflop def={tu={\ctikztextnot{SET}}, td={\ctikztextnot{RST}}}},
+ dot on notQ/.style={flipflop def={t4={Q}, n4=1}},
+}
+
+%
+% commodity macro to draw the clock wedges. They leave the size of the
+% wedge in \pgf@circ@res@temp so that a possible label can be displaced.
+%
+\def\pgf@circ@do@wedge@left{
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step+\wedge}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\wedge}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step-\wedge}}
+ \pgfusepath{stroke}
+ \pgf@circ@res@temp=\wedge
+ \fi
+}
+\def\pgf@circ@do@wedge@right{
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step+\wedge}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\wedge}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step-\wedge}}
+ \pgfusepath{stroke}
+ \pgf@circ@res@temp=-\wedge
+ \fi
+}
+\def\pgf@circ@do@wedge@up{
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\ctikzvalof{multipoles/flipflop/cu}>0
+ \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up-\wedge}}
+ \pgfpathlineto{\pgfpoint{\wedge}{\pgf@circ@res@up}}
+ \pgfusepath{stroke}
+ \pgf@circ@res@temp=-\wedge
+ \fi
+}
+\def\pgf@circ@do@wedge@down{
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\ctikzvalof{multipoles/flipflop/cd}>0
+ \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down+\wedge}}
+ \pgfpathlineto{\pgfpoint{\wedge}{\pgf@circ@res@down}}
+ \pgfusepath{stroke}
+ \pgf@circ@res@temp=\wedge
+ \fi
+}
+% generic flip-flop shape
+\pgfdeclareshape{flipflop}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{flipflops}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ \savedmacro\numpins{\def\numpins{6}}
+ \savedanchor\centerpoint{%
+ \pgf@x=-.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \savedanchor\origin{\pgfpoint{0pt}{0pt}}
+ \anchor{center}{\origin}
+ \anchor{text}{\centerpoint}% to adjust text
+ \saveddimen\height{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{((\numpins)
+ *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf@circ@scaled@Rlen/2}%
+ }%
+ \saveddimen{\chipspacing}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/pin spacing}}}
+ \saveddimen{\width}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/width}}}
+ \saveddimen{\extshift}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
+ % standard anchors
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{0.5*((\numpins)
+ *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf@circ@scaled@Rlen/2}%
+ \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/width}}
+ }
+ \anchor{dot}{\northwest
+ \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
+ \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ % upper and lower pin
+ \anchor{up}{\northwest\pgf@x=0pt\advance\pgf@y by\extshift }
+ \anchor{down}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y\advance\pgf@y by-\extshift}
+ \anchor{bup}{\northwest\pgf@x=0pt }
+ \anchor{bdown}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ % start drawing
+ \backgroundpath{%
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step = \ctikzvalof{multipoles/flipflop/pin spacing}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfscope% (for the line width)
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
+ \pgf@circ@draworfill
+ \pgfusepath{stroke}%
+ \endpgfscope
+ % Adding the pin number
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
+ \ifpgf@circuit@chip@straightnumbers
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
+ \else
+ \pgfmathsetmacro{\rot}{0}
+ \pgfmathsetmacro{\quadrant}{0}
+ \fi
+ \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
+ % text
+ \def\mytext{\ctikzvalof{multipoles/flipflop/font}\space
+ \ctikzvalof{multipoles/flipflop/t\the\pgf@circ@count@c}%
+ \pgf@circ@strut\space}
+ % \typeout{TEXT\space\mytext}
+ \pgfmathloop%
+ \def\wedge{\ctikzvalof{multipoles/flipflop/clock wedge size}\pgf@circ@res@step}
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\pgf@circ@count@a>0
+ \ifcase\quadrant % rotation 0
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgf@circ@do@wedge@left
+ % \typeout{TEXT Left Q1\space\mytext}
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgf@circ@do@wedge@right
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgf@circ@do@wedge@left
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgf@circ@do@wedge@right
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgf@circ@do@wedge@left
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgf@circ@do@wedge@right
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgf@circ@do@wedge@left
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgf@circ@do@wedge@right
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ % Now the up and down text
+ % up
+ \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf@circ@strut\ctikzvalof{multipoles/flipflop/tu}\space}
+ \pgf@circ@do@wedge@up
+ \ifcase\quadrant % rotation 0
+ \pgftext[top,
+ at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ \pgftext[right,
+ at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ \pgftext[bottom,
+ at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ \pgftext[left,
+ at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \fi
+ % down
+ \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf@circ@strut\ctikzvalof{multipoles/flipflop/td}\space}
+ \pgf@circ@do@wedge@down
+ \ifcase\quadrant % rotation 0
+ \pgftext[bottom,
+ at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ \pgftext[left,
+ at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ \pgftext[top,
+ at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ \pgftext[right,
+ at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \fi
+ % external pins
+ \ifdim\pgf@circ@res@other>0pt
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % left side pins
+ \pgf@circ@count@c=\pgf@circ@count@a
+ %% we draw the pin only if it's defined either a text, a clock wedge or a not pin
+ %% Or'ing tests in core TeX is tough
+ \edef\@@or{0}
+ % Just expand the key the minimum needed
+ \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf@circ@count@c}}\edef\@@x{x}
+ \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \ifnum\@@or>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfusepath{stroke}
+ \fi
+ % right side pins
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \edef\@@or{0}
+ \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf@circ@count@c}}\edef\@@x{x}
+ \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ % \typeout{TEST\space\@@tmp\space\@@x}
+ \ifnum\@@or>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfusepath{stroke}
+ \fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+ % up side
+ \edef\@@or{0}
+ \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/tu}}\edef\@@x{x}
+ \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cu}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ % \typeout{TEST\space\@@tmp\space\@@x}
+ \ifnum\@@or>0
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \pgfusepath{stroke}
+ \fi
+ % down side
+ \edef\@@or{0}
+ \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/td}}\edef\@@x{x}
+ \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cd}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ % \typeout{TEST\space\@@tmp\space\@@x}
+ \ifnum\@@or>0
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfusepath{stroke}
+ \fi
+ \endpgfscope
+ \fi % external pin width >0
+ %
+ % draw "inverting" circles on outputs, they must be last
+ %
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % left side pins
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfnode{ocirc}{east}{}{\thisshape-N\the\pgf@circ@count@c}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ % right side pins
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfnode{ocirc}{west}{}{\thisshape-N\the\pgf@circ@count@c}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+ % up side
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
+ \ifnum\@@tmp>0\pgfscope
+ \pgftransformshift{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfnode{ocirc}{south}{}{\thisshape-Nu}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ % down side
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nd}}
+ \ifnum\@@tmp>0\pgfscope
+ \pgftransformshift{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfnode{ocirc}{north}{}{\thisshape-Nd}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ \endpgfscope
+ }%
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@flipflop{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\numpins\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@flipflop@pin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@flipflop@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+}
+
+%
+% MUX-DEMUXES
+%
+% Thanks to @marmot
+\tikzset{muxdemux def/.code=\pgfqkeys{\circuitikzbasekey/multipoles/muxdemux}{#1}}
+\tikzset{demux/.style={muxdemux, muxdemux def={Lh=4, Rh=8, NL=1, NB=3, NR=8}}}
+\tikzset{one bit adder/.style={muxdemux,
+ muxdemux def={Lh=4, NL=2, Rh=2, NR=1, NB=1, w=1.5,
+ inset w=0.5, inset Lh=2, inset Rh=1.5}}}
+\tikzset{ALU/.style={muxdemux,
+ muxdemux def={Lh=5, NL=2, Rh=2, NR=1, NB=2, NT=1, w=2,
+ inset w=1, inset Lh=2, inset Rh=0, square pins=1}}}
+%generic mux-demux shape
+\pgfdeclareshape{muxdemux}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{muxdemuxes}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % pins on the four sides
+ % \savedmacro\NL{%
+ % \pgf@circ@count@a=\ctikzvalof{multipoles/muxdemux/NL}%
+ % \def\NL{\the\pgf@circ@count@a}
+ % }
+ \savedmacro\NL{\edef\NL{\ctikzvalof{multipoles/muxdemux/NL}}}
+ \savedmacro\NR{\edef\NR{\ctikzvalof{multipoles/muxdemux/NR}}}
+ \savedmacro\NT{\edef\NT{\ctikzvalof{multipoles/muxdemux/NT}}}
+ \savedmacro\NB{\edef\NB{\ctikzvalof{multipoles/muxdemux/NB}}}
+ \savedmacro\squarepins{\edef\squarepins{\ctikzvalof{multipoles/muxdemux/square pins}}}
+ % topleft and topright sizes
+ \savedanchor{\topleft}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/Lh}*\pgf@circ@scaled@Rlen/2}
+ \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
+ }
+ \savedanchor{\topright}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/Rh}*\pgf@circ@scaled@Rlen/2}
+ \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
+ }
+ \savedanchor{\insetnortheast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/inset Lh}*\pgf@circ@scaled@Rlen/2}
+ \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*
+ (\ctikzvalof{multipoles/muxdemux/w}-2*\ctikzvalof{multipoles/muxdemux/inset w})*\pgf@circ@scaled@Rlen/2}
+ }
+ \saveddimen{\insethright}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/inset Rh}*\pgf@circ@scaled@Rlen/2}}
+ \saveddimen{\extshift}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
+ \savedanchor{\northwest}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*max(\ctikzvalof{multipoles/muxdemux/Rh},\ctikzvalof{multipoles/muxdemux/Lh})*\pgf@circ@scaled@Rlen/2}
+ \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{top right}{\topright}
+ \anchor{bottom right}{\topright\pgf@y=-\pgf@y}
+ \anchor{right}{\topright\pgf@y=0pt\relax}
+ \anchor{top left}{\topleft}
+ \anchor{bottom left}{\topleft\pgf@y=-\pgf@y}
+ \anchor{left}{\topleft\pgf@y=0pt\relax}
+ \anchor{top}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
+ \divide\pgf@y by 2 \pgf@x=0pt\relax}
+ \anchor{bottom}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
+ \divide\pgf@y by 2 \pgf@y=-\pgf@y \pgf@x=0pt\relax}
+ \anchor{inset top right}{\pgf@ya=\insethright\insetnortheast\advance\pgf@y by -0.5\pgf@ya}
+ \anchor{inset bottom right}{\pgf@ya=\insethright\insetnortheast\advance\pgf@y by -0.5\pgf@ya\pgf@y=-\pgf@y}
+ \anchor{inset right}{\insetnortheast\pgf@y=0pt\relax}
+ \anchor{inset top left}{\insetnortheast\pgf@ya=\pgf@y\topleft\pgf@y=\pgf@ya}
+ \anchor{inset bottom left}{\insetnortheast\pgf@ya=\pgf@y\topleft\pgf@y=-\pgf@ya}
+ \anchor{inset left}{\topleft\pgf@y=0pt\relax}
+ \anchor{inset bottom}{\topleft\pgf@xa=\pgf@x\pgf@ya=\insethright
+ \insetnortheast\pgf@xb=\pgf@x\pgf@yb=\pgf@x
+ \pgfpoint{(\pgf@xa+\pgf@xb)/2}{-\pgf@ya+\pgf@yb/2}}
+ \anchor{inset top}{\topleft\pgf@xa=\pgf@x\pgf@ya=\insethright
+ \insetnortheast\pgf@xb=\pgf@x\pgf@yb=\pgf@x
+ \pgfpoint{(\pgf@xa+\pgf@xb)/2}{\pgf@ya-\pgf@yb/2}}
+ \anchor{inset center}{\topleft\pgf@xa=\pgf@x\insetnortheast
+ \advance\pgf@x by \pgf@xa \divide\pgf@x by 2 \pgf@y=0pt\relax}
+ \anchor{narrow center}{\insetnortheast\pgf@xa=\pgf@x\topright
+ \advance\pgf@x by \pgf@xa \divide\pgf@x by 2\pgf@y=0pt\relax}
+ \anchor{center up}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
+ \divide\pgf@y by 2
+ \pgf@yb = \insethright \advance\pgf@y by \pgf@yb
+ \divide\pgf@y by 2 \pgf@x=0pt\relax}
+ \anchor{center down}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
+ \divide\pgf@y by 2
+ \pgf@yb = \insethright \advance\pgf@y by \pgf@yb
+ \divide\pgf@y by 2 \pgf@y=-\pgf@y \pgf@x=0pt\relax}
+ \anchor{text}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*
+ \ctikzvalof{multipoles/muxdemux/inset w}*\pgf@circ@scaled@Rlen/2}
+ \advance\pgf@x by -.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \backgroundpath{%
+ \topleft
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@left = \pgf@x
+ \topright
+ \pgf@circ@res@other = \pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \insetnortheast
+ \pgf@circ@res@step = \pgf@x
+ \pgf@circ@res@temp = \pgf@y
+ %
+ % external block
+ %
+ \pgfscope% (for the line width)
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ % inset, starting down
+ \ifdim\pgf@circ@res@temp>0pt % inset
+ % \typeout{INSETw\space\the\pgf@circ@res@right\space x\space\the\pgf@circ@res@step\space y\space\the\pgf@circ@res@temp}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\insethright}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\insethright}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}
+ \fi
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ % now we have to draw the pins, if needed
+ \ifdim\extshift>0pt\ifpgfcirc@draw@leads\pgfscope % let's avoid too much indent
+ % Ok, we have to draw the leads (a.k.a. pins)
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ % We mimic the anchors here --- probably there is a better way
+ % left pins
+ \ifnum\NL>0\relax % not indented, closed on \repeatpgfmathloop
+ \pgf@circ@count@a=\NL\relax
+ \pgf@circ@count@b=\NL \divide\pgf@circ@count@b by 2 % see https://tex.stackexchange.com/questions/146523/why-does-numexpr-integer-division-round-rather-than-truncate
+ \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
+ \insetnortheast\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
+ \ifdim\pgf@circ@res@down>0pt % check if we have an inset
+ % we have to check oddity
+ \ifodd\NL
+ \ifnum\NL=1
+ % only centerpin, step should not be used, but anyway...
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/(\NL)}
+ \else
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/(\NL-1)}
+ \fi
+ \else
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/\NL}
+ \fi
+ \else % no inset
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@up/\NL}
+ \fi
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ %%%%%
+ \ifdim\pgf@circ@res@down>0pt % check if we have an inset
+ \ifnum\pgf@circ@count@a>\pgf@circ@count@b\relax
+ % for lower pins we have to shift them down
+ % \typeout{DEBUGTEST1\space #1\space entering\space \NL}
+ \ifodd\NL
+ % odd number of pins
+ \ifnum\pgf@circ@count@a=\numexpr\the\pgf@circ@count@b+1\relax
+ % centerpin!
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \ifnum\squarepins>0
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{0pt}}
+ \else
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\extshift}{0pt}}
+ \fi
+ \else
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a+1)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a+1)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
+ \fi
+ \else
+ % even numer of pins: just go down
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
+ \fi
+ \else
+ % nothing need for #1<=NL/2
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \fi
+ \else
+ % no inset
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \fi
+ %%%%%
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop\fi%
+ % right pins
+ \ifnum\NR>0\pgf@circ@count@a=\NR\relax
+ \pgfmathloop%
+ \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@up=\pgf@y
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@up/\NR}
+ \ifnum\pgf@circ@count@a>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop\fi%
+ % bottom pins
+ \ifnum\NB>0\pgf@circ@count@a=\NB\relax %%%
+ \pgfmathloop%
+ \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
+ \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@right/\NB}
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@res@down-\pgf@circ@res@up)/(\pgf@circ@res@right-\pgf@circ@res@left)*\pgf@circ@res@step}
+ \ifnum\pgf@circ@count@a>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {-\pgf@circ@res@down+(\NB-\pgf@circ@count@a+0.5)*\pgf@circ@res@other}}
+ \ifnum\squarepins>0
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {-max(\pgf@circ@res@down, \pgf@circ@res@up)-\extshift}}
+ \else
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {-\pgf@circ@res@down+(\NB-\pgf@circ@count@a+0.5)*\pgf@circ@res@other-\extshift}}
+ \fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop\fi%
+ % top pins
+ \ifnum\NT>0\pgf@circ@count@a=\NT\relax
+ \pgfmathloop%
+ \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
+ \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@right/\NT}
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@res@down-\pgf@circ@res@up)/(\pgf@circ@res@right-\pgf@circ@res@left)*\pgf@circ@res@step}
+ \ifnum\pgf@circ@count@a>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {\pgf@circ@res@down-(\NT-\pgf@circ@count@a+0.5)*\pgf@circ@res@other}}
+ \ifnum\squarepins>0
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {max(\pgf@circ@res@down, \pgf@circ@res@up)+\extshift}}
+ \else
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {\pgf@circ@res@down-(\NT-\pgf@circ@count@a+0.5)*\pgf@circ@res@other+\extshift}}
+ \fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop\fi%
+ % end drawing pins; stroke them
+ \pgfusepath{stroke}
+ \endpgfscope\fi\fi
+ }
+ % let's start adding anchors
+ \pgfutil@g@addto@macro\pgf@sh@s@muxdemux{%
+ % left side anchors
+ \pgf@circ@count@a=\NL\relax
+ % \typeout{STARTGENERATINGLEFT\space\the\pgf@circ@count@a\space FOR\space\thisshape\space\NL}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % \typeout{GENERATINGLEFT\space\the\pgf@circ@count@a\space FOR\space\thisshape\space\NL}
+ % we will create two anchors per pin: the "normal one" like `lpin 1` for the
+ % external leads, and the "border one" like `blpin 1` for internal ones.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@muxdemux@lpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@L@anchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@muxdemux@blpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@L@anchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ % right anchors
+ \pgf@circ@count@a=\NR\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `rpin 1` for the
+ % external leads, and the "border one" like `brpin 1` for internal ones.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@muxdemux@rpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@R@anchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@muxdemux@brpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@R@anchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ % bottom anchors
+ \pgf@circ@count@a=\NB\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `bpin 1` for the
+ % external leads, and the "border one" like `bbpin 1` for internal ones.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@muxdemux@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@B@anchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@muxdemux@bbpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@B@anchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ % top anchors
+ \pgf@circ@count@a=\NT\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `tpin 1` for the
+ % external leads, and the "border one" like `btpin 1` for internal ones.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@muxdemux@tpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@T@anchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@muxdemux@btpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@T@anchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+}
+
+%% left anchors for muxdemux
+
+\def\pgf@circ@muxdemux@L@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \topleft
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \insetnortheast
+ \pgf@xb=\pgf@x
+ \pgf@yb=\pgf@y
+ \ifnum#1>\NL
+ \PackageError{circuitikz}{%
+ You requested left pin #1 for mux/demux shape \thisshape\space \MessageBreak
+ which has been defined with \NL\space left pins%
+ }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
+ \fi
+ \pgf@circ@count@a=\NL \divide\pgf@circ@count@a by 2 % see https://tex.stackexchange.com/questions/146523/why-does-numexpr-integer-division-round-rather-than-truncate
+ % \typeout{LEFT \the\pgf@xa \space \the\pgf@ya \space \NL}
+ \ifnum\NL>1
+ \ifdim\pgf@yb>0pt % check if we have an inset
+ % we have to check oddity
+ \ifodd\NL
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@ya-\pgf@yb)/(\NL-1)}
+ \else
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@ya-\pgf@yb)/\NL}
+ \fi
+ \else % no inset
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@ya/\NL}
+ \fi
+ \ifdim\pgf@yb>0pt % check if we have an inset
+ \ifnum#1>\pgf@circ@count@a\relax
+ % for lower pins we have to shift them down
+ % \typeout{DEBUGTEST1\space #1\space entering\space \NL}
+ \ifodd\NL
+ % odd number of pins
+ \ifnum#1=\numexpr\the\pgf@circ@count@a+1\relax
+ % centerpin!
+ \ifnum#2=0\relax
+ \pgfpoint{\pgf@xb}{0pt}
+ \else
+ \ifnum\squarepins>0
+ \pgfpoint{\pgf@xa-#2*\extshift}{0pt}
+ \else
+ \pgfpoint{\pgf@xb-#2*\extshift}{0pt}
+ \fi
+ \fi
+ \else
+ \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1+1)*\pgf@circ@res@step-2*\pgf@yb}
+ \fi
+ \else
+ % even numer of pins: just go down
+ \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step-2*\pgf@yb}
+ \fi
+ \else
+ % nothing need for #1<=NL/2
+ \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
+ \fi
+ \else
+ % no inset
+ \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
+ \fi
+ \else
+ \pgfpoint{\pgf@xa-#2*\extshift}{0pt}
+ \fi
+}
+
+% right anchors
+\def\pgf@circ@muxdemux@R@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \topright
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \ifnum#1>\NR
+ \PackageError{circuitikz}{%
+ You requested right pin #1 for mux/demux shape \thisshape\space \MessageBreak
+ which has been defined with \NR\space right pins%
+ }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
+ \fi
+ \ifnum\NR>1
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@ya/\NR}
+ \pgfpoint{\pgf@xa+#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
+ \else
+ \pgfpoint{\pgf@xa+#2*\extshift}{0pt}
+ \fi
+}
+
+% bottom anchors
+\def\pgf@circ@muxdemux@B@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \topleft
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \topright
+ \pgf@xb=\pgf@x
+ \pgf@yb=\pgf@y
+ \ifnum#1>\NB
+ \PackageError{circuitikz}{%
+ You requested bottom pin #1 for mux/demux shape \thisshape\space \MessageBreak
+ which has been defined with \NB\space bottom pins%
+ }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
+ \fi
+ \ifnum\NB>0
+ % \typeout{DEBUGTESTtopleft\space\the\pgf@ya \space topright\space\the\pgf@yb \space\NB}
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@xb/\NB}
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@yb-\pgf@ya)/(\pgf@xb-\pgf@xa)*\pgf@circ@res@step}
+ \pgfmathsetlength\pgf@x{\pgf@xa+(#1-0.5)*\pgf@circ@res@step}
+ \ifnum#2=0\relax
+ \pgfmathsetlength\pgf@y{-\pgf@yb+(\NB-#1+0.5)*\pgf@circ@res@other}
+ \else
+ \ifnum\squarepins>0\relax
+ \pgfmathsetlength\pgf@y{-max(\pgf@ya,\pgf@yb)-\extshift}
+ \else
+ \pgfmathsetlength\pgf@y{-\pgf@yb+(\NB-#1+0.5)*\pgf@circ@res@other-\extshift}
+ \fi
+ \fi
+ \else
+ % should not happen, give the same as pin 1 anyway
+ \ifnum#2=0\relax
+ \pgfpoint{0pt}{-\pgf@yb+(\pgf@yb-\pgf@ya)/2}
+ \else
+ \pgfpoint{0pt}{-max(\pgf@ya,\pgf@yb)-\extshift}
+ \fi
+ \fi
+}
+
+% top anchors
+\def\pgf@circ@muxdemux@T@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \topleft
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \topright
+ \pgf@xb=\pgf@x
+ \pgf@yb=\pgf@y
+ \ifnum#1>\NT
+ \PackageError{circuitikz}{%
+ You requested top pin #1 for mux/demux shape \thisshape\space \MessageBreak
+ which has been defined with \NT\space top pins%
+ }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
+ \fi
+ \ifnum\NT>0
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@xb/\NT}
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@yb-\pgf@ya)/(\pgf@xb-\pgf@xa)*\pgf@circ@res@step}
+ \pgfmathsetlength\pgf@x{\pgf@xa+(#1-0.5)*\pgf@circ@res@step}
+ \ifnum#2=0\relax
+ \pgfmathsetlength\pgf@y{\pgf@yb-(\NT-#1+0.5)*\pgf@circ@res@other}
+ \else
+ \ifnum\squarepins>0
+ \pgfmathsetlength\pgf@y{max(\pgf@ya,\pgf@yb)+\extshift}
+ \else
+ \pgfmathsetlength\pgf@y{\pgf@yb-(\NT-#1+0.5)*\pgf@circ@res@other+\extshift}
+ \fi
+ \fi
+ \else
+ % should not happen, give the same as pin 1 anyway
+ \ifnum#2=0\relax
+ \pgfpoint{0pt}{\pgf@yb-(\pgf@yb-\pgf@ya)/2}
+ \else
+ \pgfpoint{0pt}{max(\pgf@ya,\pgf@yb)+\extshift}
+ \fi
+ \fi
+}
+
+%% IEEE standard logic ports module
+%%
+%% Original multi-input code from John Kormylo at tex.stackexchange.com
+%% Help by TheTeXnician <38565529+TheTeXnician@users.noreply.github.com>
+%% Suggested idea and example code by Jason Sachs <jmsachs@gmail.com>
+%% Please see https://github.com/circuitikz/circuitikz/issues/383 for a lot of details
+%% Most of the code, all errors and bugs by Romano Giannetti <romano.giannetti@gmail.com>
+%% Everything is in the same place here --- more or less; first step to move towards
+%% a module interface for circutikz
+%%
+
+% base parameters for ieeestd ports.
+
+\ctikzset{ieeestd ports/.is family}
+% baselen is relative to pgfcirc@Rlen as ever; scaled if the class says so.
+% the value of 0.4 is the standard pin distance for a port with height=num pins
+% and matches the chip distance
+\ctikzset{ieeestd ports/baselen/.initial=0.4}
+% these are in term of baselen; width depends on height (fixed proportions)
+\ctikzset{ieeestd ports/height/.initial=2}
+\ctikzset{ieeestd ports/pin length/.initial=0.7}
+% the standard "not" circle should be 1/6.5 of height (diameter);
+% so radius/baselen=1/3.25/2 --- using 0.1 and no scaling is as a pole
+\ctikzset{ieeestd ports/not radius/.initial=0.154}
+\ctikzset{ieeestd ports/not radius fill/.initial=1}% change ony if you know why
+% the suggested xnor distance is is 1.24, so 1.25/3.25/2
+% xor/xnor leads go full in in IEEE; let this be optional
+\ctikzset{ieeestd ports/xor bar distance/.initial=0.192}%
+\ctikzset{ieeestd ports/xor leads in/.initial=1}%
+%
+% base size of a small external schmitt symbol
+%
+\ctikzset{ieeestd ports/schmitt symbol size/.initial=0.3}%
+%
+% input management
+% we are using the same /tikz/number inputs than the legacy ports
+%
+\tikzset{/tikz/inner inputs/.initial=0} % using 0 means that all inputs are inner
+%
+% integrate with the other logic ports
+%
+\ctikzset{logic ports/ieee/.code= {\pgf@circuit@europeanlogicportfalse
+ \tikzset{and port/.style={shape=ieeestd and port}}%
+ \tikzset{or port/.style={shape=ieeestd or port}}%
+ \tikzset{xor port/.style={shape=ieeestd xor port}}%
+ \tikzset{buffer port/.style={shape=ieeestd buffer port}}%
+ \tikzset{not port/.style={shape=ieeestd not port}}%
+ \tikzset{nand port/.style={shape=ieeestd nand port}}%
+ \tikzset{nor port/.style={shape=ieeestd nor port}}%
+ \tikzset{xnor port/.style={shape=ieeestd xnor port}}%
+ \tikzset{schmitt port/.style={shape=ieeestd schmitt port}}%
+ \tikzset{inv schmitt port/.style={shape=ieeestd schmitt port}}%
+}}
+\tikzset{ieee ports/.style = {\circuitikzbasekey/logic ports = ieee}}
+%
+% the base angle for the or port. See the drawings. This will not change with height
+%
+\pgfmathsetmacro{\pgf@circ@orangle}{atan(3.25/6.5)}
+% \typeout{ANGLE-IS\space\pgf@circ@orangle}
+\def\pgf@circ@ieeeport@input#1% #1 = \pgfmathcounter
+{%
+ \ifnum#1>\inputs
+ \PackageError{circuitikz}{%
+ You requested input pin #1 for logic port shape \thisshape\space \MessageBreak
+ which has been defined with \inputs\space pins%
+ }{Please check the manual about logic ports; if you press return I'll try to continue}
+ \fi
+ \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind+0.5*\pind}% pin "0", above the rack/port
+ \pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ \pgf@circ@res@step=\pind
+ \pgf@y=\pgf@circ@res@up\advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@x=\pgf@circ@res@left\advance\pgf@x by -\pinlen
+}%
+
+% #1 = \pgfmathcounter #2=type
+% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor
+\def\pgf@circ@ieeeport@baseinput#1#2%
+{%
+ \ifnum#1>\inputs
+ \PackageError{circuitikz}{%
+ You requested border input pin #1 for logic port shape \thisshape\space \MessageBreak
+ which has been defined with \inputs\space pins%
+ }{Please check the manual about logic ports; if you press return I'll try to continue}
+ \fi
+ % Find the vertical position (this is the same for any port)
+ \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind+0.5*\pind}% pin "0", above the rack/port
+ \pgf@circ@res@step=\pind\advance\pgf@circ@res@up by -#1\pgf@circ@res@step\relax
+ % rack (extended) pins; they are the same for all the ports
+ % call K = (inputs-inner)/2, rounded up; pins on the rack are:
+ % above: 1..K (included)
+ % below: inputs-K..inputs
+ % Find the pins on the rack; they are 1...
+ \pgf@circ@count@a=\numexpr (\inputs - \inners)/2\relax % =K; numexpr rounds up!
+ \pgf@circ@count@b=\numexpr \inputs - \pgf@circ@count@a +1 \relax % =inputs - K +1
+ % border anchors for rack should be ok
+ \pgfextractx{\pgf@circ@res@left}{\topleft}
+ \pgfextractx{\pgf@circ@res@right}{\bodyleft}
+ \pgf@y=\pgf@circ@res@up\pgf@x=\pgf@circ@res@left
+ % we have finished if we are in the rack
+ \ifnum #1 > \pgf@circ@count@a \ifnum #1 < \pgf@circ@count@b
+ % we are on the inner ports; we have to do the hard work here
+ % and and nand
+ \ifnum #2=1
+ \relax % It's an and/nand, all border ports are on the rack line
+ \fi
+ % or and nor
+ \ifnum #2=2
+ \pgfmathsetlength{\pgf@x}{\pgf@circ@res@right-2*\stdH*(1-cos(atan(\pgf@circ@res@up/(2*\stdH))))}
+ \fi
+ % xor and xnor
+ \ifnum #2=3\relax
+ \pgfmathsetlength{\pgf@x}{\pgf@circ@res@right-\xorbar-2*\stdH*(1-cos(atan(\pgf@circ@res@up/(2*\stdH))))}
+ \fi
+ \fi\fi
+}%
+% inner base ports for xor types port
+% #1 = \pgfmathcounter #2=type
+% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor
+\def\pgf@circ@ieeeport@innerbaseinput#1%
+{%
+ \ifnum#1>\inputs
+ \PackageError{circuitikz}{%
+ You requested border input pin #1 for logic port shape \thisshape\space \MessageBreak
+ which has been defined with \inputs\space pins%
+ }{Please check the manual about logic ports; if you press return I'll try to continue}
+ \fi
+ % Find the vertical position (this is the same for any port)
+ \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind+0.5*\pind}% pin "0", above the rack/port
+ \pgf@circ@res@step=\pind\advance\pgf@circ@res@up by -#1\pgf@circ@res@step\relax
+ % rack (extended) pins; they are the same for all the ports
+ % call K = (inputs-inner)/2, rounded up; pins on the rack are:
+ % above: 1..K (included)
+ % below: inputs-K..inputs
+ % Find the pins on the rack; they are 1...
+ \pgf@circ@count@a=\numexpr (\inputs - \inners)/2\relax % =K; numexpr rounds up!
+ \pgf@circ@count@b=\numexpr \inputs - \pgf@circ@count@a +1 \relax % =inputs - K +1
+ % border anchors for rack should be ok
+ \pgfextractx{\pgf@circ@res@left}{\topleft}
+ \pgfextractx{\pgf@circ@res@right}{\bodyleft}
+ \pgf@y=\pgf@circ@res@up\pgf@x=\pgf@circ@res@left
+ % we have finished if we are in the rack
+ \ifnum #1 > \pgf@circ@count@a \ifnum #1 < \pgf@circ@count@b
+ % we are on the inner ports; we have to do the hard work here
+ \pgfmathsetlength{\pgf@x}{\pgf@circ@res@right-2*\stdH*(1-cos(atan(\pgf@circ@res@up/(2*\stdH))))}
+ \fi\fi
+}%
+
+%%% macro to find basic lenghts --- they leave it in \pgf@circ@res@temp
+\def\pgf@circ@ieeestd@baselen{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/baselen}*\pgf@circ@scaled@Rlen}
+}
+\def\pgf@circ@ieeestd@stdH{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@temp}{0.5*\ctikzvalof{ieeestd ports/baselen}*
+ \ctikzvalof{ieeestd ports/height}*\pgf@circ@scaled@Rlen}
+}
+\def\pgf@circ@ieeestd@pinlen{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/baselen}*
+ \ctikzvalof{ieeestd ports/pin length}*\pgf@circ@scaled@Rlen}
+}
+\def\pgf@circ@ieeestd@xorbar{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/baselen}*
+ \ctikzvalof{ieeestd ports/xor bar distance}*\pgf@circ@scaled@Rlen}
+}
+%% Not circle
+\def\pgf@circ@notradius{
+ \pgf@circ@ieeestd@stdH % got the standard length. Notice that his is 3.25H for IEEE
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/not radius}*\pgf@circ@res@temp}
+ % \typeout{NOTRADIUS\space\the\pgf@circ@res@temp}
+}
+%% Find (in ...@other) the height of the rack
+\def\pgf@circ@findrackH{%
+ \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax%
+ \pgf@circ@count@b=\pgfkeysvalueof{/tikz/inner inputs}\relax%
+ \ifnum\pgf@circ@count@a=0 \pgf@circ@count@a=2\fi % default pins
+ \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi %
+ \ifnum\pgf@circ@count@b=0 \pgf@circ@count@b=\pgf@circ@count@a\fi%
+ \pgf@circ@ieeestd@stdH
+ \multiply\pgf@circ@res@temp by 2\relax% full height
+ \divide\pgf@circ@res@temp by \pgf@circ@count@b % the pin spacing
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@count@a/2)*\pgf@circ@res@temp} %top of the rack/port
+ % \typeout{RACK-\thisshape\space\the\pgf@circ@res@other}
+}
+%%
+\def\pgf@circ@find@ieeeport@up{% leave it in up
+ % Normal port limits
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@circ@res@up}{\pgf@circ@res@temp}
+ % rack top size
+ \pgf@circ@findrackH
+ \ifdim\pgf@circ@res@other > \pgf@circ@res@up
+ \pgf@circ@res@up=\pgf@circ@res@other
+ \else
+ \fi
+}
+\def\pgf@circ@find@ieeeport@left#1{% leave it in left; #1 is type
+ % Normal port limits
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@circ@res@left}{8*\pgf@circ@res@temp/6.5}
+ \pgf@circ@res@right=\pgf@circ@res@left % save the border value
+ \pgf@circ@res@step=\pgf@circ@res@temp % save the stdH value
+ \pgf@circ@ieeestd@pinlen\advance\pgf@circ@res@left by \pgf@circ@res@temp
+ % \typeout{LEFT1-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
+ % this is the normal left border
+ % For the or or xor port, the limit can be the pointy thing (in case the
+ % pinlen is zero or too small)
+ % add to the body margin the or/nor peak:
+ \ifnum #1 > 1\relax% "or", "nor", "xor", "xnor" gates.
+ \pgfmathsetlength{\pgf@circ@res@other}{2*\pgf@circ@res@step*(1-cos(\pgf@circ@orangle))}
+ \advance\pgf@circ@res@right by \pgf@circ@res@other
+ % \typeout{LEFT2-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
+ \fi
+ % add to the body margin the xor/xnor distance
+ \ifnum #1 = 3\relax% "xor" or "xnor" gates.
+ \pgf@circ@ieeestd@xorbar
+ \advance\pgf@circ@res@right by \pgf@circ@res@temp
+ % \typeout{LEFT3-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
+ \fi
+ % and if this exceeds the normal margin, this is it
+ % \typeout{LEFT4-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
+ \ifdim \pgf@circ@res@right > \pgf@circ@res@left
+ \pgf@circ@res@left=\pgf@circ@res@right
+ \fi
+ % \typeout{LEFT5-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
+ \pgf@circ@res@left=-\pgf@circ@res@left
+}
+\def\pgf@circ@find@ieeeport@right#1{% leave it in right; #1 is plain or negated
+ % Normal port limits
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@circ@res@right}{8*\pgf@circ@res@temp/6.5}
+ \pgf@circ@notradius
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@res@right+2*#1*\pgf@circ@res@temp}
+ \pgf@circ@ieeestd@pinlen\advance\pgf@circ@res@right by \pgf@circ@res@temp
+ \ifdim\pgf@circ@res@other > \pgf@circ@res@right
+ \pgf@circ@res@right=\pgf@circ@res@other
+ \fi
+}
+\def\pgf@circ@find@ieeeport@not@right#1{% leave it in right; #1 is plain or negated
+ % Normal port limits
+ \pgf@circ@ieeestd@stdH
+ % notice 0.8660254 is cos(30)
+ \pgfmathsetlength{\pgf@circ@res@right}{0.8660254*\pgf@circ@res@temp}
+ \pgf@circ@notradius
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@res@right+2*#1*\pgf@circ@res@temp}
+ \pgf@circ@ieeestd@pinlen\advance\pgf@circ@res@right by \pgf@circ@res@temp
+ \ifdim\pgf@circ@res@other > \pgf@circ@res@right
+ \pgf@circ@res@right=\pgf@circ@res@other
+ \fi
+}
+
+
+%%% ieeestd multi-input ports
+%%% #1: name
+%%% #2: type: 1 for and,nand; 2 for or,nor; 3 for xor,xnor
+%%% #3: polarity: 0 for direct, 1 for inverted (not at the output)
+%%% #4: drawing for the port
+\long\def\pgfcircdeclareieeeport#1#2#3#4{%
+ \pgfdeclareshape{ieeestd #1 port}%
+ {%
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ \saveddimen{\baselen}{%
+ \pgf@circ@ieeestd@baselen\pgf@x=\pgf@circ@res@temp
+ }
+ \saveddimen{\stdH}{% This is HALF the height of the inner port
+ \pgf@circ@ieeestd@stdH\pgf@x=\pgf@circ@res@temp
+ }
+ \saveddimen{\notdiameter}{
+ \pgf@circ@notradius\pgf@x=2\pgf@circ@res@temp
+ }
+ \saveddimen{\pind}{% pin distance;
+ \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax%
+ \pgf@circ@count@b=\pgfkeysvalueof{/tikz/inner inputs}\relax%
+ \ifnum\pgf@circ@count@a=0 \pgf@circ@count@a=2\fi % default pins
+ \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi %
+ \ifnum\pgf@circ@count@b=0 \pgf@circ@count@b=\pgf@circ@count@a\fi%
+ \pgf@circ@ieeestd@stdH\pgf@x=2\pgf@circ@res@temp % full height
+ \divide\pgf@x by \pgf@circ@count@b
+ }
+ \saveddimen{\pinlen}{%
+ \pgf@circ@ieeestd@pinlen\pgf@x=\pgf@circ@res@temp
+ }
+ \saveddimen{\xorbar}{%
+ \pgf@circ@ieeestd@xorbar\pgf@x=\pgf@circ@res@temp
+ }
+ % anchors for the body (no pins included here)
+ \savedanchor{\bodyleft}{% This DOES NOT take into account the pointy or/xor thing
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-8*\pgf@circ@res@temp/6.5}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
+ }
+ \savedanchor{\topleft}{%
+ \pgf@circ@ieeestd@xorbar\pgf@circ@res@right=\pgf@circ@res@temp % save \xorbar
+ \pgf@circ@ieeestd@stdH
+ \pgf@circ@res@other=0pt\relax
+ \ifnum #2 = 2\relax% "or" or "nor" gates.
+ \pgfmathsetlength{\pgf@circ@res@other}{2*\pgf@circ@res@temp*(1-cos(\pgf@circ@orangle))}
+ \fi
+ \ifnum #2 = 3\relax% "xor" or "xnor" gates.
+ \pgfmathsetlength{\pgf@circ@res@other}{2*\pgf@circ@res@temp*(1-cos(\pgf@circ@orangle))
+ +\pgf@circ@res@right}
+ \fi
+ \pgfmathsetlength{\pgf@x}{-8*\pgf@circ@res@temp/6.5-\pgf@circ@res@other}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
+ }
+ \savedanchor{\bodyright}{% This DOES NOT take into account the "NOT" circle
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{8*\pgf@circ@res@temp/6.5}
+ \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
+ }
+ \savedanchor{\bottomright}{% This DOES take into account the "NOT" circle
+ \pgf@circ@notradius\pgf@circ@res@other=\pgf@circ@res@temp
+ \pgf@circ@ieeestd@stdH
+ % #3 is =1 if the port is a negated output one
+ \pgfmathsetlength{\pgf@x}{8*\pgf@circ@res@temp/6.5+#3*2*\pgf@circ@res@other}
+ \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
+ }
+ % geographical anchors --- must be rectangulars!
+ \savedanchor{\northwest}{%
+ \pgf@circ@find@ieeeport@up
+ \pgf@circ@find@ieeeport@left{#2}
+ % \typeout{ANCH5-\thisshape\space L\space\the\pgf@circ@res@left\space U\space\the\pgf@circ@res@up}
+ \pgf@x=\pgf@circ@res@left
+ \pgf@y=\pgf@circ@res@up
+ }
+ \savedanchor{\southwest}{%
+ \pgf@circ@find@ieeeport@up
+ \pgf@circ@find@ieeeport@left{#2}
+ \pgf@x=\pgf@circ@res@left
+ \pgf@y=-\pgf@circ@res@up
+ }
+ \savedanchor{\southeast}{%
+ \pgf@circ@find@ieeeport@up
+ \pgf@circ@find@ieeeport@right{#3}
+ \pgf@x=\pgf@circ@res@right
+ \pgf@y=-\pgf@circ@res@up
+ }
+ \savedanchor{\northeast}{%
+ \pgf@circ@find@ieeeport@up
+ \pgf@circ@find@ieeeport@right{#3}
+ \pgf@x=\pgf@circ@res@right
+ \pgf@y=\pgf@circ@res@up
+ }
+ \savedmacro\inputs{% get number of inputs
+ \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax
+ \ifnum\pgf@circ@count@a=0\pgf@circ@count@a=2\fi % default
+ \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi % minimum pins
+ % \ifnum\pgf@circ@count@a>16 \pgf@circ@count@a=16\fi
+ \def\inputs{\the\pgf@circ@count@a}%
+ }%
+ \savedmacro\inners{% get number of "inner" inputs (for racks)
+ \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax
+ \pgf@circ@count@b=\pgfkeysvalueof{/tikz/inner inputs}\relax
+ \ifnum\pgf@circ@count@a=0 \pgf@circ@count@a=2\fi % default pins
+ \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi % minimum pins
+ \ifnum\pgf@circ@count@b=0 \pgf@circ@count@b=\pgf@circ@count@a\fi
+ % \typeout{INNER is \the\pgf@circ@count@b}%
+ % \ifnum\pgf@circ@count@a>16 \pgf@circ@count@a=16\fi
+ \def\inners{\the\pgf@circ@count@b}%
+ }%
+ \anchor{center}{\pgfpointorigin}
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
+ \else
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@circ@res@left}{-8*\pgf@circ@res@temp/6.5} % left border
+ \pgfpoint{\pgf@circ@res@left + \ctikzvalof{left text distance}}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
+ \fi
+ }
+ % create input anchors
+ \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@ieeestd #1 port\endcsname{%
+ \pgf@circ@count@a=\inputs
+ \pgfmathloop%
+ \ifnum\pgfmathcounter>\pgf@circ@count@a%
+ \else%
+ %\pgfutil@ifundefined{pgf@anchor@american #1 port@in \pgfmathcounter}{%
+ \expandafter\xdef\csname pgf@anchor@ieeestd #1 port@in \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@ieeeport@input{\pgfmathcounter}% defined above
+ }%
+ \expandafter\xdef\csname pgf@anchor@ieeestd #1 port@bin \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@ieeeport@baseinput{\pgfmathcounter}{#2}% defined above
+ }%
+ \ifnum #2 = 3\relax % xor/xnor inner border pins
+ \expandafter\xdef\csname pgf@anchor@ieeestd #1 port@ibin \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@ieeeport@innerbaseinput{\pgfmathcounter}% defined above
+ }%
+ \fi
+ %}{}%
+ \repeatpgfmathloop%
+ }
+ % output anchor
+ \anchor{out}{%
+ \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without not ball
+ \advance\pgf@circ@res@other by\pinlen
+ \pgfextractx{\pgf@circ@res@temp}{\bottomright} %body + ball border
+ \ifdim \pgf@circ@res@temp > \pgf@circ@res@other
+ \pgf@circ@res@other = \pgf@circ@res@temp % do not enter in the ball...
+ \fi
+ \pgf@x=\pgf@circ@res@other\pgf@y=0pt
+ }
+ \anchor{bout}{\bottomright\pgf@y=0pt}
+
+ \anchor{body right}{\bodyright\pgf@y=0pt}
+ \anchor{right}{\bottomright\pgf@y=0pt}
+ \anchor{body left}{\bodyleft\pgf@y=0pt}% central edge of the body
+ \anchor{left}{% central edge of the component
+ \bodyleft\pgf@y=0pt
+ \ifnum #2=3\relax
+ \advance\pgf@x by -\xorbar
+ \fi
+ }
+ \anchor{up}{%
+ \bodyleft
+ \ifnum #2 > 1 % pointy shapes
+ \pgf@circ@ieeestd@stdH
+ % horizontal coordinate where the right semicircle starts
+ \pgfmathsetlength{\pgf@circ@res@other}{-8*\pgf@circ@res@temp/6.5+2*\pgf@circ@res@temp*cos(\pgf@circ@orangle)}
+ % vertical drop of the circle at the above coordinate
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@temp*(1-cos(atan(\pgf@circ@res@other/(2*\pgf@circ@res@temp))))}
+ \advance \pgf@y by -\pgf@circ@res@step
+ \fi
+ \pgf@x=0pt
+ }
+ \anchor{down}{%
+ \bodyleft
+ \ifnum #2 > 1 % pointy shapes
+ \pgf@circ@ieeestd@stdH
+ % horizontal coordinate where the right semicircle starts
+ \pgfmathsetlength{\pgf@circ@res@other}{-8*\pgf@circ@res@temp/6.5+2*\pgf@circ@res@temp*cos(\pgf@circ@orangle)}
+ % vertical drop of the circle at the above coordinate
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@temp*(1-cos(atan(\pgf@circ@res@other/(2*\pgf@circ@res@temp))))}
+ \advance \pgf@y by -\pgf@circ@res@step
+ \fi
+ \pgf@y=-\pgf@y\pgf@x=0pt
+ }
+
+ % geographical anchors
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northeast}
+ \anchor{se}{\southeast}
+ \anchor{sw}{\southwest}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northeast}
+ \anchor{south east}{\southeast}
+ \anchor{south west}{\southwest}
+ % over 0,0 even if asymmetric
+ % will break if the geocoords are not rectangular
+ \anchor{n}{\northwest\pgf@x=0pt\relax}
+ \anchor{e}{\northeast\pgf@y=0pt\relax}
+ \anchor{s}{\southwest\pgf@x=0pt\relax}
+ \anchor{w}{\northwest\pgf@y=0pt\relax}
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south}{\southwest\pgf@x=0pt\relax}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+
+ \backgroundpath{
+ \pgfscope
+ \pgfsetcolor{\ctikzvalof{color}}
+ #4
+ \endpgfscope
+ % output lead:
+ \pgfextractx{\pgf@circ@res@right}{\bottomright} %body+ball border
+ \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without "not" ball
+ \advance\pgf@circ@res@other by \pinlen\relax
+ \ifdim \pgf@circ@res@other > \pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \ifnum #3=1\relax\pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfnode{notcirc}{east}{}{\thisshape-not}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ }
+ }
+}
+
+%%% #1 direct name #2 negated name #3 type #4 drawing (without output)
+\long\def\pgfcircdeclareieeeportpair#1#2#3#4{%
+ \pgfcircdeclareieeeport{#1}{#3}{0}{#4}% direct
+ \pgfcircdeclareieeeport{#2}{#3}{1}{#4}% negated
+}
+%
+% ieeestd "and" and "nand"
+%
+\pgfcircdeclareieeeportpair{and}{nand}{1}{%
+ \pgf@circ@count@a = \inputs\relax
+ \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind} %top of the rack/port
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@res@up+0.5*\pind}
+ \pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ \pgfextracty{\pgf@circ@res@down}{\bodyleft}
+ \ifpgfcirc@draw@leads
+ %input leads --- all the same for AND ports
+ \loop\ifnum\pgf@circ@count@a>0
+ \advance\pgf@circ@res@temp by -\pind
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@count@a by -1
+ \repeat
+ \fi
+ \pgfusepath{draw}
+ %% Body. let's start from the top left
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-8*\stdH/6.5}{\stdH}}
+ \pgfpathlineto{\pgfpoint{1.5*\stdH/6.5}{\stdH}}
+ \pgfpatharc{90}{-90}{\stdH}
+ \pgfpathlineto{\pgfpoint{-8*\stdH/6.5}{-\stdH}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ % rack now; skip if not needed.
+ % \typeout{WHAT\space \inputs\space \inners}
+ \ifnum\inputs>\inners
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+}
+%
+% or/nor and xor/xnor are practically the same. Let factor out everything
+% the argument #1 is put just before the drawing of the inner pins
+% the argument #2 is put after the drawing of the body
+%
+\long\def\pgf@circ@ieeeport@orxor#1#2{%
+ \pgf@circ@count@a = \inputs\relax
+ \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind} %top of the rack/port
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@res@up+0.5*\pind}
+ \pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ \pgfextracty{\pgf@circ@res@down}{\bodyleft}
+ % rack (extended) pins; they are the same for all the ports
+ % call K = (inputs-inner)/2, rounded up; pins on the rack are:
+ % above: 1..K (included)
+ % below: inputs-K..inputs
+ % Find the pins on the rack; they are 1...
+ \pgf@circ@count@b=\numexpr (\inputs - \inners)/2\relax % =K; numexpr rounds up!
+ \pgf@circ@count@c=\numexpr \inputs - \pgf@circ@count@b +1 \relax % =inputs - K +1
+ \ifpgfcirc@draw@leads
+ %input leads --- for or ports
+ \loop\ifnum\pgf@circ@count@a>0
+ \pgfextractx{\pgf@circ@res@right}{\topleft}
+ \advance\pgf@circ@res@temp by -\pind
+ % this is the height; let's find the "right" position
+ \ifnum \pgf@circ@count@a > \pgf@circ@count@b \ifnum \pgf@circ@count@a < \pgf@circ@count@c
+ % inner pins
+ % \typeout{INNER\space\pgf@circ@count@a}
+ \pgfmathsetlength{\pgf@circ@res@right}{\pgf@circ@res@left-2*\stdH*(1-cos(atan(\pgf@circ@res@temp/(2*\stdH))))}
+ % hook for xor/xnor
+ #1
+ \fi\fi
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{\pgf@circ@res@temp}}%
+ \pgfusepath{draw}
+ \advance\pgf@circ@count@a by -1
+ \repeat
+ \fi
+ %% Body. let's start from the top left
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ % it should start here, but with this trick the close comes out better.
+ % \pgfpathmoveto{\pgfpoint{-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{\stdH}}
+ \pgfpathmoveto{\pgfpoint{-8*\stdH/6.5}{\stdH}}
+ \pgfpathlineto{\pgfpoint{8*\stdH/6.5-2*\stdH*cos(\pgf@circ@orangle)}{\stdH}} %
+ \pgfpatharcto{2*\stdH}{2*\stdH}{0}{0}{0}{\pgfpoint{8*\stdH/6.5}{0pt}}
+ \pgfpatharcto{2*\stdH}{2*\stdH}{0}{0}{0}{\pgfpoint{8*\stdH/6.5-2*\stdH*cos(\pgf@circ@orangle)}{-\stdH}}
+ \pgfpathlineto{\pgfpoint{-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{-\stdH}}
+ %% this should be 2 and 2; but the round part is not a perfect circle that way
+ %% so the 2.15 is ajusted "by taste" to touch the anchors exactly.
+ \pgfpatharcto{2*\stdH}{2.2*\stdH}{0}{0}{1}{\pgfpoint{-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{\stdH}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ % hook for xor/xnor
+ #2
+ % rack now; skip if not needed.
+ % \typeout{WHAT\space \inputs\space \inners}
+ \ifnum\inputs>\inners
+ \pgfextractx{\pgf@circ@res@left}{\topleft}
+ \pgfextracty{\pgf@circ@res@down}{\topleft}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+}
+%
+% ieeestd "or" and "nor"
+%
+\pgfcircdeclareieeeportpair{or}{nor}{2}{%
+ \pgf@circ@ieeeport@orxor{}{}
+}
+\pgfcircdeclareieeeportpair{xor}{xnor}{3}{%
+ \pgf@circ@ieeeport@orxor{
+ \edef\@@tmp{\ctikzvalof{ieeestd ports/xor leads in}}
+ \ifnum\@@tmp=0\relax
+ % move pin start to the left to leave the xor gap free (not standard)
+ \advance\pgf@circ@res@right by -\xorbar
+ \fi
+ }{%
+ % add the xor/xnor bar
+ \pgfpathmoveto{\pgfpoint{-\xorbar-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{-\stdH}}
+ % see the comment on the main body about the 2.2
+ \pgfpatharcto{2*\stdH}{2.2*\stdH}{0}{0}{1}{\pgfpoint{-\xorbar -8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{\stdH}}
+ \pgfusepath{draw}
+ }
+}
+%
+% Buffer and inverters
+%
+% #1: name
+% #2: polarity
+% #3: content
+\long\def\pgfcircdeclareieeebufferport#1#2#3{%
+ \pgfdeclareshape{ieeestd #1 port}%
+ {%
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ \saveddimen{\baselen}{%
+ \pgf@circ@ieeestd@baselen\pgf@x=\pgf@circ@res@temp
+ }
+ \saveddimen{\stdH}{% This is HALF the height of the inner port
+ \pgf@circ@ieeestd@stdH\pgf@x=\pgf@circ@res@temp
+ }
+ \saveddimen{\notdiameter}{
+ \pgf@circ@notradius\pgf@x=2\pgf@circ@res@temp
+ }
+ \saveddimen{\pinlen}{%
+ \pgf@circ@ieeestd@pinlen\pgf@x=\pgf@circ@res@temp
+ }
+ % anchors for the body (no pins included here)
+ % Notice that 0.8660254 is cos(30)
+ \savedanchor{\bodyleft}{% This DOES NOT take into account the pointy or/xor thing
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
+ }
+ \savedanchor{\topleft}{%
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
+ }
+ \savedanchor{\bodyright}{% This DOES NOT take into account the "NOT" circle
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{0.8660254*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
+ }
+ \savedanchor{\bottomright}{% This DOES take into account the "NOT" circle
+ \pgf@circ@notradius\pgf@circ@res@other=\pgf@circ@res@temp
+ \pgf@circ@ieeestd@stdH
+ % #2 is =1 if the port is a negated output one
+ \pgfmathsetlength{\pgf@x}{0.8660254*\pgf@circ@res@temp+#2*2*\pgf@circ@res@other}
+ \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
+ }
+ % geographical anchors --- must be rectangulars!
+ \savedanchor{\northwest}{%
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
+ }
+ \savedanchor{\southwest}{%
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
+ }
+ \savedanchor{\southeast}{%
+ \pgf@circ@ieeestd@stdH
+ \pgf@circ@res@up=\pgf@circ@res@temp
+ \pgf@circ@find@ieeeport@not@right{#2}
+ \pgf@x=\pgf@circ@res@right
+ \pgf@y=-\pgf@circ@res@up
+ }
+ \savedanchor{\northeast}{%
+ \pgf@circ@ieeestd@stdH
+ \pgf@circ@res@up=\pgf@circ@res@temp
+ \pgf@circ@find@ieeeport@not@right{#2}
+ \pgf@x=\pgf@circ@res@right
+ \pgf@y=\pgf@circ@res@up
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
+ \else
+ \pgf@circ@ieeestd@stdH
+ \pgfpoint{-0.8660254*\pgf@circ@res@temp + \ctikzvalof{left text distance}}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
+ \fi
+ }
+ % input anchors
+ \anchor{in}{\bodyleft\pgf@y=0pt\advance\pgf@x by-\pinlen}
+ \anchor{in 1}{\bodyleft\pgf@y=0pt\advance\pgf@x by-\pinlen}
+ \anchor{bin}{\bodyleft\pgf@y=0pt\relax}
+ \anchor{bin 1}{\bodyleft\pgf@y=0pt\relax}
+ % output anchors
+ \anchor{out}{%
+ \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without not ball
+ \advance\pgf@circ@res@other by\pinlen
+ \pgfextractx{\pgf@circ@res@temp}{\bottomright} %body + ball border
+ \ifdim \pgf@circ@res@temp > \pgf@circ@res@other
+ \pgf@circ@res@other = \pgf@circ@res@temp % do not enter in the ball...
+ \fi
+ \pgf@x=\pgf@circ@res@other\pgf@y=0pt
+ }
+ \anchor{bout}{\bottomright\pgf@y=0pt}
+
+ \anchor{body right}{\bodyright\pgf@y=0pt}
+ \anchor{right}{\bottomright\pgf@y=0pt}
+ \anchor{body left}{\bodyleft\pgf@y=0pt}% central edge of the body
+ \anchor{left}{% central edge of the component
+ \pgf@circ@ieeestd@xorbar% save \xorbar in temp
+ \bodyleft\pgf@y=0pt\advance\pgf@x by -\pgf@circ@res@temp
+ }
+ \anchor{up}{%
+ \bodyleft
+ \pgf@y=+0.5\pgf@y\pgf@x=0pt
+ }
+ \anchor{down}{%
+ \bodyleft
+ \pgf@y=-0.5\pgf@y\pgf@x=0pt
+ }
+
+ % geographical anchors
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northeast}
+ \anchor{se}{\southeast}
+ \anchor{sw}{\southwest}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northeast}
+ \anchor{south east}{\southeast}
+ \anchor{south west}{\southwest}
+ % over 0,0 even if asymmetric
+ % will break if the geocoords are not rectangular
+ \anchor{n}{\northwest\pgf@x=0pt\relax}
+ \anchor{e}{\northeast\pgf@y=0pt\relax}
+ \anchor{s}{\southwest\pgf@x=0pt\relax}
+ \anchor{w}{\northwest\pgf@y=0pt\relax}
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south}{\southwest\pgf@x=0pt\relax}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+
+ \backgroundpath{
+ \pgfscope
+ \pgfsetcolor{\ctikzvalof{color}}
+ #3
+ \endpgfscope
+ % output lead:
+ \pgfextractx{\pgf@circ@res@right}{\bottomright} %body+ball border
+ \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without "not" ball
+ \advance\pgf@circ@res@other by \pinlen\relax
+ \ifdim \pgf@circ@res@other > \pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \ifnum #2=1\relax\pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfnode{notcirc}{east}{}{\thisshape-not}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ }
+ }
+}
+
+%%% #1 direct name #2 negated name #3 drawing (without output)
+\long\def\pgfcircdeclareieeebufferportpair#1#2#3{%
+ \pgfcircdeclareieeebufferport{#1}{0}{#3}% direct
+ \pgfcircdeclareieeebufferport{#2}{1}{#3}% negated
+}
+
+\pgfcircdeclareieeebufferportpair{buffer}{not}{%
+ \pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ \pgfextracty{\pgf@circ@res@up}{\bodyleft}
+ \pgfextractx{\pgf@circ@res@right}{\bodyright}
+ % \draw input pin
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+}
+
+\pgfcircdeclareieeebufferportpair{schmitt}{inv schmitt}{%
+ \pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ \pgfextracty{\pgf@circ@res@up}{\bodyleft}
+ \pgfextractx{\pgf@circ@res@right}{\bodyright}
+ % \draw input pin
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ % draw schmitt symbol in normal line thickness
+ \pgfpathmoveto{\pgfpoint{0.75*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.50*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.50*\pgf@circ@res@left}{0.25*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.00*\pgf@circ@res@left}{0.25*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.25*\pgf@circ@res@left}{0.25*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.25*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfdeclareshape{schmitt symbol}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@circ@ieeestd@stdH
+ \pgf@y=\ctikzvalof{ieeestd ports/schmitt symbol size}\pgf@circ@res@temp
+ \pgf@x=-1.5\pgf@y
+ }
+ \anchor{center}{\pgf@y=0pt \pgf@x=0pt}
+ \anchor{east}{\northwest\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{e}{\northwest\pgf@y=0pt \pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt}
+ \anchor{w}{\northwest \pgf@y=0pt}
+ \anchor{south}{\northwest \pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{north}{\northwest\pgf@x=0pt}
+ \anchor{n}{\northwest\pgf@x=0pt}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{north west}{\northwest}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \backgroundpath{
+ \pgfscope
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgf@circ@res@left=0.7\pgf@circ@res@left
+ \pgf@circ@res@up=0.7\pgf@circ@res@up
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left/3}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left/3}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left/3}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left/3}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{notcirc}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@circ@notradius
+ \pgf@y=\pgf@circ@res@temp
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{\pgf@y=0pt \pgf@x=0pt}
+ \anchor{right}{\northwest\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{east}{\northwest\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{e}{\northwest\pgf@y=0pt \pgf@x=-\pgf@x}
+ \anchor{left}{\northwest\pgf@y=0pt}
+ \anchor{west}{\northwest\pgf@y=0pt}
+ \anchor{w}{\northwest \pgf@y=0pt}
+ \anchor{south}{\northwest \pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{north}{\northwest\pgf@x=0pt}
+ \anchor{n}{\northwest\pgf@x=0pt}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{north west}{\northwest}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \northwest\pgf@circ@res@temp=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}%
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \northwest\pgf@circ@res@temp=\pgf@y
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@temp}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{white}
+ % ...but override it if the class is defined!
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{\ctikzvalof{ieeestd ports/not radius fill}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+
+%%%---------- close: tex/pgfcircmultipoles
+
+%%%%%%%%%%% Springe nach tex/pgfcirclabel
+%%%---------- open: tex/pgfcirclabel.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Bipole label positioning
+
+%% bipole labels and annotation extra style
+
+\ctikzset{bipole label style/.style={}}
+\tikzset{bipole label style/.code={
+ \ctikzset{bipole label style/.style={#1}}
+}}
+\tikzset{bipole label append style/.code={
+ \ctikzset{bipole label style/.append style={#1}}
+}}
+\ctikzset{bipole annotation style/.style={}}
+\tikzset{bipole annotation style/.code={
+ \ctikzset{bipole annotation style/.style={#1}}
+}}
+\tikzset{bipole annotation append style/.code={
+ \ctikzset{bipole annotation style/.append style={#1}}
+}}
+
+%% Options
+\ctikzset{label/.style = { l=#1 } }
+\ctikzset{l/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
+ \ctikzsetvalof{bipole/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+
+\ctikzset{label above/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{l^/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{label below/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+\ctikzset{l_/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+\ctikzset{annotation/.style = { a=#1 } }
+\ctikzset{a/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/annotation/name=#1}
+ \ctikzsetvalof{bipole/annotation/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+
+\ctikzset{annotation above/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+
+\ctikzset{a^/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+
+\ctikzset{annotation below/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+\ctikzset{a_/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+
+% This is to adjust spacing for the labels so that they are not cramped on components
+\def\pgf@circ@ls{.75ex} % labelspace to have just one point to change
+
+\def\pgf@circ@drawlabels#1{
+ \pgfextra{
+ % This function will be called with argument #1 equal
+ % to "label" or "annotation" form pgfcircpath.tex.
+ % pgf@circ@direction is the direction of the path,
+ % its value is set in pgfcircpath.tex
+ \pgfmathsubtract{\pgf@circ@direction}{90}
+ \pgfmathround{\pgfmathresult} % avoid precision loss errors
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/position}}
+ \ifnum \pgf@circ@temp < 0
+ \pgfmathadd{\pgf@circ@labanc}{180}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ % \typeout{INI: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
+ %
+ % normalize the angle values
+ %
+ \pgfmathmod{\pgf@circ@labanc}{360}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ %
+ \ifpgf@circuit@bipole@inverted
+ \pgfmathadd{\pgf@circ@temp}{180} %If shape is inverted, use opposite anchor
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ %
+ \ifnum \ctikzvalof{mirror value} = -1
+ \pgfmathadd{\pgf@circ@temp}{180} %If shape is mirrored, use opposite anchor
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ % \typeout{FIN: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
+ }
+ %Firstly, place a coordinate directly at the edge of the shape
+ (\ctikzvalof{bipole/name}.\pgf@circ@temp) coordinate (labelcoor)
+ %now decide, which labels should be drawn
+ \pgfextra{
+ \edef\pgf@temp{\ctikzvalof{label/align}}
+ \def\pgf@circ@temp{straight}
+ }
+ \ifx\pgf@temp\pgf@circ@temp %straight
+ \pgf@circ@drawreglabels{#1}
+ \else
+ \pgfextra{\def\pgf@circ@temp{rotate}}
+ \ifx\pgf@temp\pgf@circ@temp %rotate
+ \pgf@circ@drawrotlabels{#1}
+ \else% smart
+ \pgf@circ@drawsmartlabels{#1}
+ \fi
+ \fi
+}
+
+
+\def\pgf@circ@drawsmartlabels#1{
+ \pgfextra{
+ \pgfmathmod{\pgf@circ@direction}{90}
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ \ifnum \pgfcircmathresult > 20
+ \ifnum \pgfcircmathresult < 70
+ \pgf@circ@drawrotlabels{#1}
+ \else
+ \pgf@circ@drawreglabels{#1}
+ \fi
+ \else
+ \pgf@circ@drawreglabels{#1}
+ \fi
+ }
+
+
+\def\pgf@circ@drawrotlabels#1{
+ \pgfextra{
+ % scale the distances in function of zoom, so that they are not
+ % dependent on it but on font size. Thanks to @marmot
+ % https://tex.stackexchange.com/a/476018/38080
+ % the coeffcient is adjusted so that the distance is more or less
+ % the same for rotated labels and straight ones (although it will
+ % depend on the font, so it's not exact).
+ \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\myscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
+ % \typeout{ROT\tmpa\space\tmpb\space\tmpc\space\tmpd\space\myscale}
+ \pgfmathsetlength\pgf@circ@res@temp{1.5*\pgf@circ@ls/\myscale}
+ \ifnum \ctikzvalof{bipole/#1/position}>0
+ %we need some more space for placement below, due to mid-anchor
+ \else % we do not have <= in \ifnum...
+ \pgf@circ@res@temp=1.5\pgf@circ@res@temp
+ \fi
+ %Calculate rotation of the label from direction and strip decimals
+ \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ % rotate the label at second or third quadrant:
+ \ifnum \pgfcirclabrot > 90 \ifnum \pgfcirclabrot < 270
+ \pgfmathsubtract{\pgf@circ@direction}{180}
+ \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ %invert the space relationships due to rotated strings
+ \ifnum \ctikzvalof{bipole/#1/position}>0
+ \pgf@circ@res@temp=1.5\pgf@circ@res@temp
+ \fi
+ \fi\fi
+ \pgfmathparse{\ctikzvalof{bipole/#1/position}>0?\pgf@circ@direction+90:\pgf@circ@direction-90}
+ \edef\pgf@circ@labposangle{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ % reset cm is not working correctly here
+ (labelcoor)++(\pgf@circ@labposangle:\the\pgf@circ@res@temp) coordinate(labelcoor)
+ node[anchor=mid, rotate=\pgfcirclabrot, \circuitikzbasekey/bipole #1 style]
+ (\ctikzvalof{bipole/name}#1){\pgf@circ@finallabels{#1}}
+}
+
+\def\pgf@circ@drawreglabels#1{
+ %Now calculate all shape positions
+ %Use mid-anchor at x-axis and base-anchor at y-axis, respectively.
+ %All points between will be addressed by angled-anchors:
+ \pgfextra{
+ % scale ex-distance to make it independent on scale
+ % thanks @marmot see https://tex.stackexchange.com/a/476018/38080
+ \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\myscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
+ % \typeout{ROT\tmpa\space\tmpb\space\tmpc\space\tmpd\space\myscale}
+ \pgfmathsetlength\pgf@circ@res@temp{\pgf@circ@ls/\myscale}
+ \pgfmathadd{\pgf@circ@labanc}{90}
+ \pgfmathround{\pgfmathresult}
+ \def\pgf@circ@labanctext{\pgf@circ@labanc}
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \pgfmathparse{mod(\pgf@circ@temp,180)>135?mod(\pgf@circ@temp,180)-180:mod(\pgf@circ@temp,180)}
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ %Values around 90 are at both y-axis
+ \ifnum \pgfcircmathresult > 84 \ifnum \pgfcircmathresult< 96
+ \pgfextra{\edef\pgf@circ@labpos{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}}
+ \ifnum \pgf@circ@labpos > 180
+ \ifnum \ctikzvalof{bipole/#1/position} > 0
+ \pgfextra{\def\pgf@circ@labanctext{mid west}}
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{mid east}}
+ \fi
+ \else
+ \ifnum \ctikzvalof{bipole/#1/position} > 0
+ \pgfextra{\def\pgf@circ@labanctext{mid east}}
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{mid west}}
+ \fi
+ \fi
+ \fi\fi
+ %Values between -5 and 5 are at pos /neg x-axis
+ \pgfextra{\def\uffa{}\newdimen\realshift\realshift=\dimexpr1pt\relax}
+ \ifnum \pgfcircmathresult <6 \ifnum \pgfcircmathresult > -6
+ \ifnum \ctikzvalof{bipole/#1/position} < 0
+ \ifnum \pgf@circ@labanc > 90
+ % using base coordinate instead of south to naturally align
+ % symbols with descendants; but this invalidate the effect of
+ % the inner sep, so recover it by shifting the anchor
+ % reset cm is not working sometime, use @marmot solution
+ % see https://tex.stackexchange.com/a/476018/38080
+ (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
+ \pgfextra{\def\pgf@circ@labanctext{base}}%base
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{north}}%north
+ \fi
+ \else
+ \ifnum \pgf@circ@labanc < 90
+ % shift, as above
+ (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
+ \pgfextra{\def\pgf@circ@labanctext{base}}%base
+ \else
+ \ifnum \pgf@circ@labanc > 180
+ % this shouldn't happen, but somehow it does (270 degree anchors)
+ % shift, as above
+ (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
+ \pgfextra{\def\pgf@circ@labanctext{base}}%base
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{north}}%north
+ \fi
+ \fi
+ \fi
+ \fi\fi
+ (labelcoor) node[anchor=\pgf@circ@labanctext,
+ inner sep=0.5\pgf@circ@res@temp, outer sep=0pt, \circuitikzbasekey/bipole #1 style,
+ ](\ctikzvalof{bipole/name}#1){\strut\pgf@circ@finallabels{#1}%
+ }
+}
+
+\def\pgf@circ@finallabels#1{%
+ \edef\pgf@temp{}%
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/unit}}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \ctikzvalof{bipole/#1/name}%
+ \else%
+ $\SI{\ctikzvalof{bipole/#1/name}}{\ctikzvalof{bipole/#1/unit}}$%
+ \fi%
+}
+
+\ctikzset{text/.style={t=#1}}
+\ctikzset{t/.code={%
+ \ctikzsetvalof{bipoles/twoport/text}{#1}%
+}}
+
+%%%% Stacked labels
+%
+% stacked labels by Romano Giannetti romano@rgtti.com
+% heavily based on Claudo Fiandrinos's https://tex.stackexchange.com/a/65792/38080
+% \expandafter trick inspired by Matthew Leingang's https://tex.stackexchange.com/a/12272/38080
+%
+% labels are in a tabular, globally aligned:
+% vertically with key l2 valign (default c)
+% c: center t: top b: bottom
+% horizontally with key l2 align (default l)
+% l: left c: centered r: right
+% you can switch sides using l2_=... and l2^=...
+% syntax is l2_ = line1 and line2 (same for l2^)
+%
+\ctikzset{%
+ l2 valign/.store in=\ltwo@valign, l2 valign=c,
+ l2 halign/.store in=\ltwo@halign, l2 halign=l,
+}
+\ctikzset{l2base/.code n args={2}{
+ \pgfkeys{/tikz/circuitikz/bipole/label/name=%
+ \bgroup
+ \setlength{\tabcolsep}{2pt}%
+ \def\ltwo@tabu{\tabular[\ltwo@valign]}%
+ \expandafter\ltwo@tabu\expandafter{\ltwo@halign}%
+ #1\\ #2%
+ \endtabular
+ \egroup
+ }%
+ \ctikzsetvalof{bipole/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#2}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+\ctikzset{l2/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l2 above/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l2^/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l2 below/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+\ctikzset{l2_/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+%%%---------- close: tex/pgfcirclabel
+%%%%%%%%%%% Springe nach tex/pgfcircvoltage
+%%%---------- open: tex/pgfcircvoltage.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Voltage management
+
+%% styles
+\ctikzset{bipole voltage style/.style={}}
+\tikzset{bipole voltage style/.code={
+ \ctikzset{bipole voltage style/.style={#1}}
+}}
+\tikzset{bipole voltage append style/.code={
+ \ctikzset{bipole voltage style/.append style={#1}}
+}}
+
+\ctikzset{v^>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v^</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v_>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
+\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
+\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
+\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
+
+% Default position varies whether the component is a voltage source
+% or not
+\ctikzset{v/.code = {
+ \ifpgf@circuit@bipole@isvoltage
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \fi
+ \fi
+ \ifpgf@circ@oldvoltagedirection
+ \ifpgf@circuit@bipole@iscurrent\ifpgf@circ@fixbatteries
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \fi\fi
+ \else
+ \ifpgf@circuit@bipole@iscurrent
+ \ifpgf@circuit@bipole@current@backward
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \fi\fi\fi
+ \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
+ \ctikzsetvalof{bipole/voltage/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ }
+}
+
+% american voltage font selection and symbol definition
+% the default font command is {} --- nothing
+\def\pgf@circ@avfont{\ctikzvalof{voltage/american font}}
+%
+% plus and minus symbols (default is $+$ and $-$, see pgfcirc.defines.tex)
+%
+\def\pgf@circ@avplus{\ctikzvalof{voltage/american plus}}
+\def\pgf@circ@avminus{\ctikzvalof{voltage/american minus}}
+
+%%
+\def\setscaledRlenforclass{%
+ \csname pgf@sh@ma@\ctikzvalof{bipole/name}\endcsname
+ \ifdefined\ctikzclass
+ \edef\pgf@temp{/tikz/circuitikz/\ctikzclass/scale}
+ \pgfkeysifdefined{\pgf@temp}
+ {\pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ {\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}
+ \else
+ \pgf@circ@scaled@Rlen=\pgf@circ@Rlen
+ \fi
+}
+
+%% Output routine for generic bipoles
+
+\def\pgf@circ@drawvoltagegeneric{
+ \pgfextra{
+ % \typeout{NAME:\ctikzvalof{bipole/name}}
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/straight label distance}
+ \pgfkeysifdefined{\pgf@temp}
+ {
+ \edef\partheight{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/straight label distance}}
+ \edef\tmpdistfromline{(\partheight\pgf@circ@scaled@Rlen)}
+ }
+ {
+ \pgfkeysifdefined{/tikz/circuitikz/bipoles/voltage/straight label distance}
+ {
+ \edef\partheight{\ctikzvalof{bipoles/voltage/straight label distance}}
+ \edef\tmpdistfromline{(\partheight\pgf@circ@scaled@Rlen)}
+ }
+ {%calculate default value from part height
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/height}
+ \pgfkeysifdefined{\pgf@temp}
+ {
+ \edef\partheight{0.5*\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/height}}
+ \edef\tmpdistfromline{(\partheight\pgf@circ@scaled@Rlen+0.2\pgf@circ@scaled@Rlen)}
+ }
+ {
+ \edef\tmpdistfromline{(.5\pgf@circ@scaled@Rlen)} %fallback to fixed value
+ }
+ }
+ }
+ % \typeout{KIND:\ctikzvalof{bipole/kind}\space RLEN:\the\pgf@circ@Rlen\space SCALED:\the\pgf@circ@scaled@Rlen}
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{\tmpdistfromline}
+ \else
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{-\tmpdistfromline}
+ \else
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
+ \fi
+ \fi
+ \else
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{-\tmpdistfromline}
+ \else
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@straight
+ \def\distfromline{\tmpdistfromline}
+ \else
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
+ \fi
+ \fi
+ \fi
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@voltage@angle{90}
+ \else
+ \def\pgf@circ@voltage@angle{-90}
+ \fi
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/distance from node}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\distancefromnode{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/distance from node}} }
+ { \edef\distancefromnode{\ctikzvalof{voltage/distance from node}} }
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/bump b}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\bumpb{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/bump b}} }
+ { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
+ \edef\shiftv{\ctikzvalof{voltage/shift}}
+ % additional per-bipole voltage shift (internal)
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/additional label shift}
+ \pgfkeysifdefined{\pgf@temp}
+ {
+ \edef\addvshift{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/additional label shift}}
+ }
+ {
+ \edef\addvshift{0}
+ }
+ \newdimen{\absvshift}
+ \pgfmathsetlength{\absvshift}{(1+\shiftv+\addvshift)*(\distfromline)}
+ % put this to true to see the voltage label coordinate anchors
+ \newif\ifpgf@circ@debugv\pgf@circ@debugvfalse
+ }
+ % %\pgf@circ@Rlen/\ctikzvalof{current arrow scale} is equal to the length of the currarrow
+ coordinate (pgfcirc@midtmp) at ($(\tikztostart) ! \pgf@circ@Rlen/\ctikzvalof{current arrow scale} ! (anchorstartnode)$) %absolute move, minimum space is length of arrowhead
+ coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distancefromnode ! (anchorstartnode)$)
+ coordinate (pgfcirc@Vfrom@flat) at (pgfcirc@midtmp)
+ coordinate (pgfcirc@Vfrom) at ($(pgfcirc@midtmp) ! -\distfromline ! \pgf@circ@voltage@angle:(anchorstartnode)$)
+
+ coordinate (pgfcirc@midtmp) at ($(\tikztotarget) ! \pgf@circ@Rlen/\ctikzvalof{current arrow scale} ! (anchorendnode)$)%absolute move, minimum space is length of arrowhead
+ coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distancefromnode ! (anchorendnode)$)
+ coordinate (pgfcirc@Vto@flat) at (pgfcirc@midtmp)
+ coordinate (pgfcirc@Vto) at ($(pgfcirc@midtmp) ! \distfromline ! \pgf@circ@voltage@angle : (anchorendnode)$)
+
+ \ifpgf@circuit@bipole@voltage@below
+ \ifpgf@circ@debugv
+ node [ocirc, fill=red] at (anchorstartnode) {}
+ node [ocirc, fill=blue] at (anchorendnode) {}
+ node [ocirc, fill=green] at (pgfcirc@Vto) {}
+ node [ocirc, fill=yellow] at (pgfcirc@Vfrom) {}
+ node [odiamondpole, fill=green!50!black] at (pgfcirc@Vto@flat) {}
+ node [odiamondpole, fill=orange] at (pgfcirc@Vfrom@flat) {}
+ \fi
+ coordinate (pgfcirc@Vto) at ($(pgfcirc@Vto@flat) ! \absvshift!90 : (anchorendnode)$)
+ coordinate (pgfcirc@Vfrom) at ($(pgfcirc@Vfrom@flat) ! \absvshift!-90 : (anchorstartnode)$)
+ coordinate (pgfcirc@Vcont1t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
+ coordinate (pgfcirc@Vcont2t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
+ coordinate (pgfcirc@Vcont1) at ($(pgfcirc@Vcont1t) ! -\absvshift!90 : (pgfcirc@Vcont2t)$)
+ coordinate (pgfcirc@Vcont2) at ($(pgfcirc@Vcont2t) ! -\absvshift!-90 : (pgfcirc@Vcont1t)$)
+ \ifpgf@circ@debugv
+ node [odiamondpole, fill=green] at (pgfcirc@Vto) {}
+ node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom) {}
+ node [osquarepole, fill=red] at (pgfcirc@Vcont1) {}
+ node [osquarepole, fill=blue] at (pgfcirc@Vcont2) {}
+ \fi
+ \else
+ \ifpgf@circ@debugv
+ node [ocirc, fill=red] at (anchorstartnode) {}
+ node [ocirc, fill=blue] at (anchorendnode) {}
+ node [ocirc, fill=green] at (pgfcirc@Vto) {}
+ node [ocirc, fill=yellow] at (pgfcirc@Vfrom) {}
+ node [odiamondpole, fill=green] at (pgfcirc@Vto@flat) {}
+ node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom@flat) {}
+ \fi
+ coordinate (pgfcirc@Vto) at ($(pgfcirc@Vto@flat) ! -\absvshift!90 : (anchorendnode)$)
+ coordinate (pgfcirc@Vfrom) at ($(pgfcirc@Vfrom@flat) ! -\absvshift!-90 : (anchorstartnode)$)
+ coordinate (pgfcirc@Vcont1t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
+ coordinate (pgfcirc@Vcont2t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
+ coordinate (pgfcirc@Vcont1) at ($(pgfcirc@Vcont1t) ! \absvshift!90 : (pgfcirc@Vcont2t)$)
+ coordinate (pgfcirc@Vcont2) at ($(pgfcirc@Vcont2t) ! \absvshift!-90 : (pgfcirc@Vcont1t)$)
+ \ifpgf@circ@debugv
+ node [odiamondpole, fill=green] at (pgfcirc@Vto) {}
+ node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom) {}
+ node [osquarepole, fill=red] at (pgfcirc@Vcont1) {}
+ node [osquarepole, fill=blue] at (pgfcirc@Vcont2) {}
+ \fi
+ \fi
+
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@straight
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) --(pgfcirc@Vfrom) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
+ \else
+ (pgfcirc@Vfrom) --(pgfcirc@Vto) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
+ node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {}
+ (pgfcirc@Vfrom)
+ \else
+ (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
+ node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {}
+ (pgfcirc@Vto)
+ \fi
+ \fi
+ \else % american
+ \ifx\@@kind\@@open % open circuit; put + and - directly on it
+ \ifpgf@circuit@bipole@voltage@backward
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom@flat) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=center]{\pgf@circ@avplus}
+ (pgfcirc@Vto@flat) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=center]{\pgf@circ@avminus}
+ \else
+ (pgfcirc@Vfrom@flat) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=center]{\pgf@circ@avminus}
+ (pgfcirc@Vto@flat) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=center]{\pgf@circ@avplus}
+ \fi
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom@flat) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=center]{\pgf@circ@avminus}
+ (pgfcirc@Vto@flat) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=center]{\pgf@circ@avplus}
+ \else
+ (pgfcirc@Vfrom@flat) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=center]{\pgf@circ@avplus}
+ (pgfcirc@Vto@flat) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=center]{\pgf@circ@avminus}
+ \fi
+ \fi
+ \else % not open circuit
+ \ifpgf@circuit@bipole@voltage@backward
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ \else
+ (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ \fi
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ \else
+ (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ \fi
+ \fi
+ \fi
+ \fi
+}
+
+%% Output routine for voltage sources
+\def\pgf@circ@drawvoltagegenerator{
+ % the following is affected indirectly by voltage/shift, you can move the arrow with voltage/bump a.
+ % it's not perfect, but I can't find the way to do it correctly...
+ \pgfextra{
+ \edef\shiftv{\ctikzvalof{voltage/shift}}
+ \edef\bumpa{\ctikzvalof{voltage/bump a}}
+ \pgfmathsetmacro{\bumpaplus}{\bumpa + 0.5*\shiftv} % coefficient added "by feel". Sorry.
+ }
+ \ifpgf@circuit@bipole@voltage@below
+ coordinate (pgfcirc@Vfrom) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-120)$)
+ coordinate (pgfcirc@Vto) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-60)$)
+ \else
+ coordinate (pgfcirc@Vfrom) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.120)$)
+ coordinate (pgfcirc@Vto) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.60)$)
+ \fi
+ % fix the (unused in this case) Vcont1/2 coords for label placement along the line
+ coordinate (pgfcirc@Vcont1) at (pgfcirc@Vto)
+ coordinate (pgfcirc@Vcont2) at (pgfcirc@Vfrom)
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vto) -- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {} (pgfcirc@Vfrom)
+ \else
+ (pgfcirc@Vfrom) -- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {} (pgfcirc@Vto)
+ \fi
+ \else% american voltage
+ \ifpgf@circuit@bipole@voltageoutsideofsymbol
+ % if it is a battery, must put + and -
+
+ \ifpgf@circ@fixbatteries
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ \else
+ (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ \else
+ (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ \fi
+ \fi
+ \fi
+ \fi
+}
+
+%% Output routine
+%% this is the entry point
+%%
+\def\pgf@circ@drawvoltage{% node name
+ \pgfextra{ %WARNING: indentation is probably wrong
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \else
+ \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \else
+ \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+
+ % this must be set *before* changing for mirroring and inverting; in that case
+ % the xscale/yscale parameters take it into account
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@voltage@label@where{90}
+ \fi
+
+ % magic to counteract the scale and yscale effects (there should be a better way...)
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@voltage@below
+ \pgf@circuit@bipole@voltage@belowfalse
+ \else
+ \pgf@circuit@bipole@voltage@belowtrue
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@below
+ \pgf@circuit@bipole@voltage@belowfalse
+ \else
+ \pgf@circuit@bipole@voltage@belowtrue
+ \fi
+ \fi
+
+ % take into account scaling
+ \setscaledRlenforclass
+
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/european label distance}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\eudist{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/european label distance}} }
+ { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
+ % find the height of the bipole or use a default value
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/height}
+ \pgfkeysifdefined{\pgf@temp}
+ {\pgfmathsetmacro{\partheightf}{0.5*\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/height}}
+ \edef\partheight{\partheightf\pgf@circ@scaled@Rlen}}
+ {\edef\partheight{(.5\pgf@circ@scaled@Rlen)}} %fallback to fixed value
+ \newdimen{\alshift}
+ % this is more or less the same of the legacy code; we shift the american label a bit
+ % outside the (+) -- (-) line
+ \pgfmathsetlength{\alshift}{(\ctikzvalof{voltage/american label distance}-0.6)*\partheight}
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ % set the macro for detecting open
+ \edef\@@kind{\ctikzvalof{bipole/kind}}\edef\@@open{open}
+ \ifpgf@adjust@open@voltage\else\edef\@@open{this-will-nEver-match}\fi
+ % \typeout{KIND\space\@@kind}
+ }%end pgfextra
+
+ \ifpgf@circuit@bipole@isvoltage
+ \pgf@circ@drawvoltagegenerator
+ \else
+ \pgf@circ@drawvoltagegeneric
+ \fi
+
+ % \pgfextra{\typeout{LABEL\space KIND:\@@kind\space OPEN:\@@open}}
+
+ \ifpgf@circuit@bipole@voltage@straight
+ coordinate (Vlab) at ($(pgfcirc@Vto)!0.5!(pgfcirc@Vfrom) $)
+ node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt,
+ \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
+ at (Vlab) {\pgf@circ@finallabels{voltage/label}}
+ \else
+ \ifpgf@circuit@europeanvoltage
+ coordinate (Vlab) at ($(pgfcirc@Vcont1)!0.5!(pgfcirc@Vcont2)$)
+ \else
+ coordinate (Vlab) at ($(pgfcirc@Vfrom)!0.5!(pgfcirc@Vto)$)
+ \ifpgf@circuit@bipole@isvoltage\else
+ % add a bit of space for american labels above their symbols in the normal case. You can avoid that
+ % with voltage/american label distance=0.5 (it's measured from the center of the component, in heights)
+ coordinate (Vlab) at ($(Vlab) ! \alshift ! \pgf@circ@bipole@voltage@label@where :(pgfcirc@Vto)$)
+ \fi
+ \fi
+
+ \ifpgf@circuit@europeanvoltage
+ node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt,
+ \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
+ at (Vlab) {\pgf@circ@finallabels{voltage/label}}
+ \else % american voltages
+ \ifx\@@kind\@@open
+ coordinate (Vlab) at ($(pgfcirc@Vfrom@flat)!0.5!(pgfcirc@Vto@flat)$)
+ node [anchor=center, inner sep=2pt,
+ \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
+ at (Vlab) {\pgf@circ@finallabels{voltage/label}}
+ \else
+ node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt,
+ \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
+ at (Vlab) {\pgf@circ@finallabels{voltage/label}}
+ \fi
+ \fi
+ \fi
+}%end drawvoltages
+%%%---------- close: tex/pgfcircvoltage
+%%%%%%%%%%% Springe nach tex/pgfcirccurrent
+%%%---------- open: tex/pgfcirccurrent.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Current handling
+
+%% styles
+\ctikzset{bipole current style/.style={}}
+\tikzset{bipole current style/.code={
+ \ctikzset{bipole current style/.style={#1}}
+}}
+\tikzset{bipole current append style/.code={
+ \ctikzset{bipole current style/.append style={#1}}
+}}
+
+%% Options
+\ctikzset{i^>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i>^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i>_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i^</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i<^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i<_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i/.code = {
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
+ \ctikzsetvalof{bipole/current/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ %reverse current direction for voltage sources
+ \ifpgf@circ@oldvoltagedirection\else
+ \ifpgf@circuit@bipole@isvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below }
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \fi\fi\fi
+ }
+}
+
+\ifpgf@circ@oldvoltagedirection
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
+\else
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
+\fi
+\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
+\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
+\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
+
+%% Output routine
+\def\pgf@circ@drawcurrent{
+ \pgfextra{
+ \edef\pgf@circ@ffffff{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@bipole@current@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@current@label@where{+90}
+ \fi
+ }
+
+ \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
+ \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line
+ (\tikztostart)--(\tikztotarget)
+ \else% normal bipole or source
+ \ifpgf@circuit@bipole@current@before
+ (\tikztostart)--(anchorstartnode)
+ \else
+ (anchorendnode)--(\tikztotarget)
+ \fi
+ \fi
+ \ifpgf@circuit@bipole@current@backward
+ \pgfextra{
+ \pgfmathsubtract{\pgf@circ@ffffff}{180}
+ \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ \fi
+ coordinate[currarrow,pos=\ctikzvalof{current/distance},rotate=\pgf@circ@ffffff,
+ anchor=center](Iarrow)
+ (Iarrow.\pgf@circ@bipole@current@label@where)
+ node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole current style]
+ (\ctikzvalof{bipole/name}current){\pgf@circ@finallabels{current/label}}
+}
+
+%%%---------- close: tex/pgfcirccurrent
+%%%%%%%%%%% Springe nach tex/pgfcircflow
+%%%---------- open: tex/pgfcircflow.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% flow handling
+
+%% styles
+\ctikzset{bipole flow style/.style={}}
+\tikzset{bipole flow style/.code={
+ \ctikzset{bipole flow style/.style={#1}}
+}}
+\tikzset{bipole flow append style/.code={
+ \ctikzset{bipole flow style/.append style={#1}}
+}}
+
+%% Options
+\ctikzset{f^>/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/curflowrent/y position = above
+ }
+}
+
+\ctikzset{f_>/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f>^/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f>_/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f^</.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f_</.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f<^/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f<_/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f</.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = backward} }
+\ctikzset{f_/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = below } }
+\ctikzset{f>/.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = forward } }
+\ctikzset{f^/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = above } }
+
+\ctikzset{f/.code = {
+ \pgfkeys{\circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/flow/label/name=#1}
+ \ctikzsetvalof{bipole/flow/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}
+}
+
+%% Output routine
+\def\pgf@circ@drawflow{
+ \pgfextra{
+ \edef\pgf@circ@ffffff{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@bipole@flow@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@flow@label@where{+90}
+ \fi
+ }
+
+ \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
+ \ifx\pgf@circ@temp\pgf@temp%draw flow at a short at middle of the line
+ (\tikztostart)--(\tikztotarget)
+ \else% normal bipole or source
+ \ifpgf@circuit@bipole@flow@before
+ (\tikztostart)--(anchorstartnode)
+ \else
+ (anchorendnode)--(\tikztotarget)
+ \fi
+ \fi
+ \pgfextra{
+ \ifpgf@circuit@bipole@flow@backward
+ \ifpgf@circuit@bipole@flow@below
+ \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \else
+ \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \fi
+ \pgfmathsubtract{\pgf@circ@ffffff}{180}
+ \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \else
+ \ifpgf@circuit@bipole@flow@below
+ \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \else
+ \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \fi
+ \fi
+ }
+ coordinate[flowarrow,pos=\ctikzvalof{flow/distance},rotate=\pgf@circ@ffffff,yshift=\flow@offset, anchor=center](Farrowpos)
+ (Farrowpos.\pgf@circ@bipole@flow@label@where) node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole flow style]
+ (\ctikzvalof{bipole/name}flow){\pgf@circ@finallabels{flow/label}}
+}
+
+%%%---------- close: tex/pgfcircflow
+
+% notice that the default is nooldvoltagedirection; it's not explicitly set to allow for the warning
+\ExecuteOptions{nofetbodydiode, nofetsolderdot, europeancurrents, europeanvoltages,americanports, americanresistors, cuteinductors ,europeangfsurgearrester, nosiunitx, noarrowmos, smartlabels}
+
+\ProcessOptions\relax
+
+%%%%%%%%%%% Springe nach tex/pgfcircpath
+%%%---------- open: tex/pgfcircpath.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+
+\def\pgf@circ@direction{0.0}
+
+% Names
+\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
+\ctikzset{n/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/name=#1}
+}}
+
+% Reflect the node along
+\ctikzset{mirrored/.is choice}
+\ctikzset{mirror value/.initial=1}
+\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
+\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
+\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
+
+% Invert node along path
+\ctikzset{inverted/.is choice}
+\ctikzset{invert value/.initial=1}
+\ctikzset{inverted/true/.code = {\ctikzsetvalof{invert value}{-1}\pgf@circuit@bipole@invertedtrue}}
+\ctikzset{inverted/false/.code = {\ctikzsetvalof{invert value}{1}\pgf@circuit@bipole@invertedfalse}}
+\ctikzset{invert/.style = {/tikz/circuitikz/inverted=true}}
+\newif\ifpgf@circuit@bipole@inverted
+\ctikzset{bipole/inverted/.is if=pgf@circuit@bipole@inverted}
+
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+
+% Initialize paths
+\def\pgfcircresetpath{
+ \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90, ,bipole/annotation/name=, bipole/annotation/position=-90,
+ bipole/inverted=false, bipole/kind=,
+ bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
+ bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
+ bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
+ bipole/current/y position=above, bipole/current/direction=forward,
+ mirrored=false
+ }
+}
+
+%% Helper function for path-function to ensure using anchors between nodes
+\def\set@explicit@center@anchor#1{
+ \pgfutil@ifundefined{pgf@sh@ns@#1}
+ {
+ %This coordinate is no node(but a relative position or a coordinate), no further handling needed
+ }{
+ \pgfutil@in@.{#1}
+ \ifpgfutil@in@
+ % Anchor is used, do nothing!
+ \else%
+ \let\tikz@moveto@waiting=\relax
+ \pgfpathmoveto{\tikz@last@position}%force movement, because tikz@moveto@waiting
+ \edef#1{#1.center}%ensure using center anchor
+ \fi
+}
+}
+
+
+%% Generic bipole path
+%% I am not user what the second argument is needed for
+\def\pgf@circ@bipole@path#1#2{
+
+ \pgfextra{
+ \set@explicit@center@anchor{\tikztostart}
+ \set@explicit@center@anchor{\tikztotarget}
+ \pgfsyssoftpath@getcurrentpath{\myp@th}%% save current path to extend after calculation of correct start/end coordinates
+ \ctikzset{bipole/kind = #1}
+ \edef\pgf@temp{\ctikzvalof{bipole/name}}
+ \def\pgf@circ@temp{}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = #1\pgf@circ@rand} % create it (re-usage should not create problem, but...)
+ \fi
+ }
+
+ (\tikztostart) coordinate (\ctikzvalof{bipole/name}start)%necessary to get correct coordinates in the case of relative start/end or constructions like ((node1)-|(node2))
+ (\tikztotarget) coordinate (\ctikzvalof{bipole/name}end)
+ \pgfextra{
+ \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ % DO NOT ROUND HERE! pgfcirclabel.tex will do that when needed
+ % \pgfmathround{\pgfmathresult}
+ \edef\pgf@circ@direction{\pgfmathresult}%Calculate direction(angle) of path
+ % \typeout{DIRECTION:\pgf@circ@direction}
+ \pgfsyssoftpath@setcurrentpath{\myp@th}
+ }
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ \else
+ --($(\ctikzvalof{bipole/name}start) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}end)$) %ugly workaround to get correct linejoins(node breaks path?)
+ \fi
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)%%positio of middle node
+ node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}, xscale=\ctikzvalof{invert value}]
+ (\ctikzvalof{bipole/name}) {}
+ \ifpgf@circuit@bipole@inverted
+ \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathend)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathstart)
+ \else
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.right)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.left)
+ \fi
+ \else
+ \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathstart)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathend)
+ \else
+ coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.left)
+ coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.right)
+ \fi
+ \fi
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ \else
+ (\ctikzvalof{bipole/name}start.center) -- (anchorstartnode)
+ (anchorendnode) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+
+ \drawpoles
+ \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabels{label}\fi
+ \pgf@circ@ifkeyempty{bipole/annotation/name}\else\pgf@circ@drawlabels{annotation}\fi
+ \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
+ \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
+ \pgf@circ@ifkeyempty{bipole/flow/label/name}\else\pgf@circ@drawflow\fi
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open
+ (\ctikzvalof{bipole/name}end)%Move to end of path
+ \else
+ ($(\ctikzvalof{bipole/name}end) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}start)$) -- (\ctikzvalof{bipole/name}end)%ugly workaround to get correct linejoins(node breaks path?)
+ %tikztostart and tikztotarget could not be used, because it would break if target coordinate is something like (node1-|node2)
+
+ \fi
+ % reset
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ \tikztonodes%draw pending nodes an path
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Handling of terminals
+
+\ctikzset{bipole/nodes/.is family}
+\ctikzset{bipole/nodes/left/.initial=none}
+\ctikzset{bipole/nodes/right/.initial=none}
+\tikzset{bipole nodes/.style n args={2}{%
+ \circuitikzbasekey/bipole/nodes/left=#1,
+ \circuitikzbasekey/bipole/nodes/right=#2
+ }
+}
+
+%% Easily usable styles
+
+\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+
+% rectjoinfill workarounds
+
+\ctikzset{.-/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{.-*/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{.-o/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{.-d/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{-./.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{o-./.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{*-./.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{d-./.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{.-./.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+
+\tikzset{reversed/.style = {\circuitikzbasekey/bipole/inverted=true}}
+
+\def\drawpoles{
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{none}}
+ \ifx\pgf@temp\pgf@circ@temp\else(\tikztostart) node[\pgf@circ@temp] {}\fi
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} }
+ \ifx\pgf@temp\pgf@circ@temp\else(\tikztotarget) node[\pgf@circ@temp] {}\fi
+}
+
+%% Path definitions
+\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
+\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
+\def\pgf@circ@sresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{thermistor}{#1}\else\pgf@circ@bipole@path{resistivesens}{#1}\fi}
+\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
+\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
+\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
+\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
+\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
+\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
+\def\pgf@circ@capacitivesens@path#1{\pgf@circ@bipole@path{capacitivesens}{#1}}
+\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
+%% polar capacitor is deprectaed, use curved capacitor instead
+\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
+\def\pgf@circ@ccapacitor@path#1{\pgf@circ@bipole@path{ccapacitor}{#1}}
+\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
+\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
+\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
+\def\pgf@circ@batteryone@path#1{\pgf@circ@bipole@path{battery1}{#1}}
+\def\pgf@circ@batterytwo@path#1{\pgf@circ@bipole@path{battery2}{#1}}
+\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
+\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
+\def\pgf@circ@cutechoke@path#1{\pgf@circ@bipole@path{cutechoke}{#1}}
+\def\pgf@circ@inductor@path#1{%
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@europeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@cuteinductor@path{#1}%
+ \else%
+ \pgf@circ@americaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@vinductor@path#1{
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@veuropeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@vcuteinductor@path{#1}%
+ \else%
+ \pgf@circ@vamericaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@inductivesens@path#1{%
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@europeaninductivesens@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@cuteinductivesens@path{#1}%
+ \else%
+ \pgf@circ@americaninductivesens@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
+\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
+\def\pgf@circ@europeaninductivesens@path#1{\pgf@circ@bipole@path{sfullgeneric}{#1}}
+\def\pgf@circ@americaninductivesens@path#1{\pgf@circ@bipole@path{samericaninductor}{#1}}
+\def\pgf@circ@cuteinductivesens@path#1{\pgf@circ@bipole@path{scuteinductor}{#1}}
+\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
+\def\pgf@circ@bulb@path#1{\pgf@circ@bipole@path{bulb}{#1}}
+\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
+\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
+\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
+\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
+\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
+\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
+\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
+\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
+\def\pgf@circ@oosourcetrans@path#1{\pgf@circ@bipole@path{oosourcetrans}{#1}}
+\def\pgf@circ@ooosource@path#1{\pgf@circ@bipole@path{ooosource}{#1}}
+\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
+\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
+\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
+\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
+\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
+\def\pgf@circ@ecsource@path#1{\pgf@circ@bipole@path{ecsource}{#1}}
+\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
+\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
+\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
+\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
+\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
+\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
+\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
+\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
+\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
+\def\pgf@circ@nos@path#1{\pgf@circ@bipole@path{nos}{#1}}
+\def\pgf@circ@ncs@path#1{\pgf@circ@bipole@path{ncs}{#1}}
+\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
+\def\pgf@circ@ncpushbutton@path#1{\pgf@circ@bipole@path{ncpushbutton}{#1}}
+\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
+\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
+\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
+\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
+\def\pgf@circ@xgeneric@path#1{\pgf@circ@bipole@path{xgeneric}{#1}}
+\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
+\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
+\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
+\def\pgf@circ@oscope@path#1{\pgf@circ@bipole@path{oscope}{#1}}
+\def\pgf@circ@empty@path#1{}
+\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
+\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
+\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
+\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
+\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
+\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
+\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
+\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
+\def\pgf@circ@mstline@path#1{\pgf@circ@bipole@path{mstline}{#1}}
+\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
+\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
+\def\pgf@circ@openbarrier@path#1{\pgf@circ@bipole@path{openbarrier}{#1}}
+\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
+\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
+\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
+
+\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
+\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
+\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
+
+\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
+\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
+\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
+\def\pgf@circ@bandstop@path#1{\pgf@circ@bipole@path{bandstop}{#1}}
+\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
+\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
+\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
+\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
+\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
+\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
+\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
+\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
+\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
+\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
+\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
+\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
+\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
+\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
+\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
+%
+\def\pgf@circ@sacdc@path#1{\pgf@circ@bipole@path{sacdc}{#1}}
+\def\pgf@circ@sdcac@path#1{\pgf@circ@bipole@path{sdcac}{#1}}
+\def\pgf@circ@tacdc@path#1{\pgf@circ@bipole@path{tacdc}{#1}}
+\def\pgf@circ@tdcac@path#1{\pgf@circ@bipole@path{tdcac}{#1}}
+
+%%Mechanical
+\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
+\def\pgf@circ@inerter@path#1{\pgf@circ@bipole@path{inerter}{#1}}
+\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
+\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
+\def\pgf@circ@viscoe@path#1{\pgf@circ@bipole@path{viscoe}{#1}}
+
+%% Styles
+
+\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
+\def\compattikzset#1{\tikzset{\comnpatname#1}}
+
+%\def\ctikzsetbipole#1#2{%
+% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
+%}
+
+\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
+\compattikzset{inerter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inerter@path, l=#1}}
+\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
+\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
+\compattikzset{viscoe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@viscoe@path, l=#1}}
+\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
+\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
+\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
+\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
+\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
+\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
+\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
+\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
+\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
+\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
+\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
+\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
+\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
+\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
+\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
+\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+% polar capacitor is deprecated, use curved capacitor instead
+\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
+\compattikzset{curved capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ccapacitor@path, l=#1}}
+\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
+\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
+\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batteryone@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{battery2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batterytwo@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
+\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
+\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
+\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
+\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
+\compattikzset{cute choke/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cutechoke@path, l=#1}}
+\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
+\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
+\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
+\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
+\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
+\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
+\compattikzset{transmission line/.style = {tline = #1}}
+\compattikzset{TL/.style = {tline = #1}}
+\compattikzset{mstline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mstline@path, l=#1}}
+\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{empty controlled source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+
+\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source = #1, \circuitikzbasekey/bipole/is current=true}}
+\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source = #1, \circuitikzbasekey/bipole/is current=true}}
+
+
+\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
+\compattikzset{xgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@xgeneric@path, l=#1}}
+\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
+\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
+\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
+\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
+\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
+\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
+
+\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
+\compattikzset{bulb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bulb@path, l=#1}}
+
+\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
+\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
+\compattikzset{openbarrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@openbarrier@path}}
+\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
+\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
+\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
+
+\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
+\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
+\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
+\compattikzset{bandstop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandstop@path}}
+\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
+\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
+\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
+\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
+\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
+\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
+\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
+\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
+\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
+\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
+\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
+\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
+\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
+\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
+\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
+%
+\compattikzset{sacdc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@sacdc@path, l=#1}}
+\compattikzset{sdcac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@sdcac@path, l=#1}}
+\compattikzset{tacdc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tacdc@path, l=#1}}
+\compattikzset{tdcac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tdcac@path, l=#1}}
+
+% % % % % %
+% % Begin of Diodes
+% % % % % %
+
+\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
+\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
+\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
+\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
+\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
+\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
+\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
+\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
+\def\pgf@circ@fullbidirectionaldiode@path#1{\pgf@circ@bipole@path{fullbidirectionaldiode}{#1}}
+\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
+\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
+\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
+\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
+\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
+\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
+\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
+\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
+\def\pgf@circ@emptybidirectionaldiode@path#1{\pgf@circ@bipole@path{emptybidirectionaldiode}{#1}}
+
+\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
+\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
+\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
+\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
+\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
+\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
+\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
+\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
+\compattikzset{full bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullbidirectionaldiode@path}}
+\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
+\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
+
+\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{empty bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptybidirectionaldiode@path}}
+\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
+\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
+%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
+
+\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
+\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
+\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
+\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
+\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
+\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
+\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
+\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
+\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
+\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
+\compattikzset{bidirectionaldiode/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
+
+%% Define Shortcuts
+\compattikzset{Do/.style = {\comnpatname empty diode}}
+\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
+\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
+\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
+\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
+\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
+\compattikzset{leDo/.style = {\comnpatname empty led}}
+\compattikzset{VCo/.style = {\comnpatname empty varcap}}
+\compattikzset{biDo/.style = {\comnpatname empty bidirectionaldiode}}
+\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
+\compattikzset{Tro/.style = {\comnpatname empty triac}}
+
+\compattikzset{D*/.style = {\comnpatname full diode}}
+\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
+\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
+\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
+\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
+\compattikzset{pD*/.style = {\comnpatname full photodiode}}
+\compattikzset{leD*/.style = {\comnpatname full led}}
+\compattikzset{VC*/.style = {\comnpatname full varcap}}
+\compattikzset{biD*/.style = {\comnpatname full bidirectionaldiode}}
+\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
+\compattikzset{Tr*/.style = {\comnpatname full triac}}
+
+\compattikzset{D/.style = {\comnpatname diode}}
+\compattikzset{tD/.style = {\comnpatname tunnel diode}}
+\compattikzset{zD/.style = {\comnpatname Zener diode}}
+\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
+\compattikzset{sD/.style = {\comnpatname Schottky diode}}
+\compattikzset{pD/.style = {\comnpatname photodiode}}
+\compattikzset{leD/.style = {\comnpatname led}}
+\compattikzset{VC/.style = {\comnpatname varcap}}
+\compattikzset{biD/.style = {\comnpatname bidirectionaldiode}}
+\compattikzset{Ty/.style = {\comnpatname thyristor}}
+\compattikzset{Tr/.style = {\comnpatname triac}}
+
+\compattikzset{D-/.style = {\comnpatname stroke diode}}
+\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
+\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
+\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
+\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
+\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
+\compattikzset{leD-/.style = {\comnpatname stroke led}}
+\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
+\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
+\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
+\compattikzset{biD-/.style = {\comnpatname empty bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
+
+% % % % % %
+% % End of Diodes
+% % % % % %
+
+
+\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
+\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
+\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
+\compattikzset{ncs/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
+\compattikzset{nos/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
+\compattikzset{normal closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
+\compattikzset{normal open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
+\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
+\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{nopb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{normally open push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{ncpb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
+\compattikzset{normally closed push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
+\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
+
+\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
+\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
+\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
+\tikzset{oscope/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@oscope@path, l=#1}}
+
+% cute switches
+%% closed cute switch
+\def\pgf@circ@cuteclosedswitch@path#1{\pgf@circ@bipole@path{cuteclosedswitch}{#1}}
+\compattikzset{cute closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosedswitch@path, l=#1}}
+\compattikzset{ccsw/.style= {\comnpatname cute closed switch= #1}}
+
+%% open cute switch
+\def\pgf@circ@cuteopenswitch@path#1{\pgf@circ@bipole@path{cuteopenswitch}{#1}}
+\compattikzset{cute open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopenswitch@path, l=#1}}
+\compattikzset{cosw/.style= {\comnpatname cute open switch= #1}}
+
+%% closing cute switch
+\def\pgf@circ@cuteclosingswitch@path#1{\pgf@circ@bipole@path{cuteclosingswitch}{#1}}
+\compattikzset{cute closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosingswitch@path, l=#1}}
+\compattikzset{ccgsw/.style= {\comnpatname cute closing switch= #1}}
+
+%% opening cute switch
+\def\pgf@circ@cuteopeningswitch@path#1{\pgf@circ@bipole@path{cuteopeningswitch}{#1}}
+\compattikzset{cute opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopeningswitch@path, l=#1}}
+\compattikzset{cogsw/.style= {\comnpatname cute opening switch= #1}}
+
+
+% short forms
+\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, l=#1}}
+
+\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path, i=#1}}
+\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosource@path, v=#1}}
+\compattikzset{oosourcetrans/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosourcetrans@path, v=#1}}
+\compattikzset{ooosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@ooosource@path, v=#1}}
+
+\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
+\compattikzset{isource/.style = {\comnpatname current source = #1}}
+\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{ecsource/.style = {\comnpatname empty controlled source = #1}}
+\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
+\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+
+\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+
+\compattikzset{R/.style= {\comnpatname resistor = #1}}
+\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
+\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
+\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
+\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
+\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
+\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
+\compattikzset{C/.style = {\comnpatname capacitor = #1}}
+\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
+%% pC is deprecated, use cC instead
+\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
+\compattikzset{cC/.style = {\comnpatname curved capacitor = #1}}
+\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
+\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
+\compattikzset{L/.style = {\comnpatname inductor = #1}}
+\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
+\compattikzset{V/.style = {\comnpatname voltage source = #1}}
+\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
+\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
+ \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
+ \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
+ \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+
+%current sources
+\compattikzset{I/.style = {\comnpatname current source = #1}}
+\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
+ \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
+ \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
+ \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+
+% cute sources
+\def\pgf@circ@vsourceC@path#1{\pgf@circ@bipole@path{vsourceC}{#1}}
+\compattikzset{cute european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{vsourceC/.style= {\comnpatname cute european voltage source= #1}}
+\compattikzset{ceV/.style= {\comnpatname cute european voltage source= #1}}
+
+\def\pgf@circ@isourceC@path#1{\pgf@circ@bipole@path{isourceC}{#1}}
+\compattikzset{cute european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{isourceC/.style= {\comnpatname cute european current source= #1}}
+\compattikzset{ceI/.style= {\comnpatname cute european current source= #1}}
+
+\def\pgf@circ@cvsourceC@path#1{\pgf@circ@bipole@path{cvsourceC}{#1}}
+\compattikzset{cute european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{cvsourceC/.style= {\comnpatname cute european controlled voltage source= #1}}
+\compattikzset{cceV/.style= {\comnpatname cute european controlled voltage source= #1}}
+
+\def\pgf@circ@cisourceC@path#1{\pgf@circ@bipole@path{cisourceC}{#1}}
+\compattikzset{cute european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{cisourceC/.style= {\comnpatname cute european controlled current source= #1}}
+\compattikzset{cceI/.style= {\comnpatname cute european controlled current source= #1}}
+
+% noise sources
+\def\pgf@circ@vsourceN@path#1{\pgf@circ@bipole@path{vsourceN}{#1}}
+\compattikzset{noise voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceN@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{vsourceN/.style= {\comnpatname noise voltage source= #1}}
+\compattikzset{nV/.style= {\comnpatname noise voltage source= #1}}
+
+\def\pgf@circ@isourceN@path#1{\pgf@circ@bipole@path{isourceN}{#1}}
+\compattikzset{noise current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceN@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{isourceN/.style= {\comnpatname noise current source= #1}}
+\compattikzset{nI/.style= {\comnpatname noise current source= #1}}
+
+% resistive sensor american style
+\def\pgf@circ@resistivesens@path#1{\pgf@circ@bipole@path{resistivesens}{#1}}
+\compattikzset{american resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistivesens@path, l=#1}}
+\compattikzset{european resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
+\compattikzset{resistive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@sresistor@path, l=#1}}
+\compattikzset{sR/.style= {\comnpatname resistive sensor= #1}}
+
+\compattikzset{capacitive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitivesens@path, l=#1}}
+\compattikzset{sC/.style= {\comnpatname capacitive sensor= #1}}
+
+\compattikzset{cute inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductivesens@path, l=#1}}
+\compattikzset{european inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductivesens@path, l=#1}}
+\compattikzset{american inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductivesens@path, l=#1}}
+\compattikzset{inductive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductivesens@path, l=#1}}
+\compattikzset{sL/.style= {\comnpatname inductive sensor= #1}}
+
+\compattikzset{Mr/.style = {\comnpatname memristor}}
+
+\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
+\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
+\compattikzset{spst/.style = {\comnpatname switch = #1}}
+
+\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
+
+\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
+\compattikzset{vss/.style = {\comnpatname vee = #1}}
+
+% activate the to-style crossing
+\def\pgf@circ@crossing@path#1{\pgf@circ@bipole@path{crossing}{#1}}
+\compattikzset{crossing/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@crossing@path, l=#1}}
+\compattikzset{xing/.style= {\comnpatname crossing= #1}}
+
+%% loudspeaker and microphone
+
+\def\pgf@circ@loudspeaker@path#1{\pgf@circ@bipole@path{loudspeaker}{#1}}
+\compattikzset{loudspeaker/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@loudspeaker@path, l=#1}}
+
+\def\pgf@circ@mic@path#1{\pgf@circ@bipole@path{mic}{#1}}
+\compattikzset{mic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mic@path, l=#1}}
+
+% more instrument
+\def\pgf@circ@rmeter@path#1{\pgf@circ@bipole@path{rmeter}{#1}}
+\compattikzset{rmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeter@path, l=#1}}
+\def\pgf@circ@rmeterwa@path#1{\pgf@circ@bipole@path{rmeterwa}{#1}}
+\compattikzset{rmeterwa/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeterwa@path, l=#1}}
+\def\pgf@circ@smeter@path#1{\pgf@circ@bipole@path{smeter}{#1}}
+\compattikzset{smeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@smeter@path, l=#1}}
+% current loop probes
+\def\pgf@circ@iloop@path#1{\pgf@circ@bipole@path{iloop}{#1}}
+\compattikzset{iloop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop@path, l=#1}}
+\def\pgf@circ@iloop2@path#1{\pgf@circ@bipole@path{iloop2}{#1}}
+\compattikzset{iloop2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop2@path, l=#1}}
+% qucs-style probes
+\def\pgf@circ@qiprobe@path#1{\pgf@circ@bipole@path{qiprobe}{#1}}
+\compattikzset{qiprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qiprobe@path, l=#1}}
+\def\pgf@circ@qvprobe@path#1{\pgf@circ@bipole@path{qvprobe}{#1}}
+\compattikzset{qvprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qvprobe@path, l=#1}}
+\def\pgf@circ@qpprobe@path#1{\pgf@circ@bipole@path{qpprobe}{#1}}
+\compattikzset{qpprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qpprobe@path, l=#1}}
+% multiwire(s)
+\def\pgf@circ@bmultiwire@path#1{\pgf@circ@bipole@path{bmultiwire}{#1}}
+\compattikzset{bmultiwire/.style = {\circuitikzbasekey,
+/tikz/to path=\pgf@circ@bmultiwire@path, l=#1}}
+\def\pgf@circ@multiwire@path#1{\pgf@circ@bipole@path{multiwire}{#1}}
+\compattikzset{multiwire/.style = {\circuitikzbasekey,
+/tikz/to path=\pgf@circ@multiwire@path, l=#1}}
+\def\pgf@circ@tmultiwire@path#1{\pgf@circ@bipole@path{tmultiwire}{#1}}
+\compattikzset{tmultiwire/.style = {\circuitikzbasekey,
+/tikz/to path=\pgf@circ@tmultiwire@path, l=#1}}
+
+% reed switches
+\def\pgf@circ@reed@path#1{\pgf@circ@bipole@path{reed}{#1}}
+\compattikzset{reed/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@reed@path, l=#1}}
+
+% Transistor like bipoles
+
+\def\pgf@circ@trans@path#1#2{
+ \pgfextra{
+ \edef\pgf@temp{\ctikzvalof{bipole/name}}
+ \def\pgf@circ@temp{#2}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
+ \fi
+ }
+ \ifpgf@circuit@bipole@inverted
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ \else
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ \fi
+ \pgfextra{
+ \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \pgfmathadd{\pgfmathresult}{-90}
+ \pgfmathround{\pgfmathresult}
+ \edef\pgf@circ@direction{\pgfmathresult}
+ }
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)
+ node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
+ (\ctikzvalof{bipole/name}) {}
+ node {\ctikzvalof{bipole/label/name}}
+ \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
+ (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
+ \else
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
+ (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+ \drawpoles
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ (\tikztotarget) \tikztonodes % e si continua
+}
+
+
+\def\pgf@circ@definetranspath#1{
+ \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
+}
+
+\pgf@circ@definetranspath{elmech}
+\pgf@circ@definetranspath{nmos}
+\pgf@circ@definetranspath{pmos}
+\pgf@circ@definetranspath{hemt}
+\pgf@circ@definetranspath{npn}
+\pgf@circ@definetranspath{pnp}
+\pgf@circ@definetranspath{nfet}
+\pgf@circ@definetranspath{nigfete}
+\pgf@circ@definetranspath{nigfetd}
+\pgf@circ@definetranspath{nigfetebulk}
+\pgf@circ@definetranspath{pfet}
+\pgf@circ@definetranspath{pigfete}
+\pgf@circ@definetranspath{pigfetd}
+\pgf@circ@definetranspath{pigfetebulk}
+\pgf@circ@definetranspath{njfet}
+\pgf@circ@definetranspath{pjfet}
+\pgf@circ@definetranspath{pigbt}
+\pgf@circ@definetranspath{nigbt}
+\pgf@circ@definetranspath{Lpigbt}
+\pgf@circ@definetranspath{Lnigbt}
+%%%---------- close: tex/pgfcircpath
+
+\ifpgf@circ@siunitx
+ \RequirePackage{xstring}[2009/03/13]
+ %\expandafter\let\csname angstrom\endcsname\relax
+ \RequirePackage{siunitx}
+\fi
+
+\ifpgf@circ@explicitvdir\else
+ \PackageWarningNoLine{circuitikz}{%
+ You did not specify one of the voltage directions:\MessageBreak
+ \space\space oldvoltagedirection, nooldvoltagedirection, \MessageBreak
+ \space\space RPvoltages or EFvoltages \MessageBreak
+ Default directions may have changed, \MessageBreak
+ please check the manual%
+ }
+\fi
+
+\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
+%override (unused) circuitikz environment for compability to externalization)
+\let\circuitikz\tikzpicture
+\let\endcircuitikz\endtikzpicture
+
+\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.1.2.sty b/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.1.2.sty
index cf515c8783..cbaf65f51a 100644
--- a/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.1.2.sty
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.1.2.sty
@@ -18,22416 +18,5 @@
\ProvidesPackage{circuitikz-1.1.2}
[\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]
-%% Version 3.0 of pgf/TikZ is required
-\RequirePackage{tikz}
-\usetikzlibrary{calc}
-%
-% "arrows" library is deprecated, and behave badly with
-% arrows on short paths. Change to the new arrows.meta
-% In pfgcirc.define, we will add the old definition of
-% latex' which we have lost in the transition
-%
-\usetikzlibrary{arrows.meta, bending}
-\usetikzlibrary{fpu} % may be needed for use fpu reciprocal (v1.0.1)
-
-% The options are listed in the manual in this order
-
-\DeclareOption{europeanvoltage}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{straightvoltages}{
- \pgf@circuit@bipole@voltage@straighttrue
-}
-
-\DeclareOption{americanvoltage}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrent}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrent}{
- \ctikzset{current = american}
-}
-
-
-
-\DeclareOption{americanresistor}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistor}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductor}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductor}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductor}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanport}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanport}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{european}{
- \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
- \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester choice = european}
-}
-
-\DeclareOption{american}{
- \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester choice = american}
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{fulldiodes}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiodes}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{europeanvoltages}{
- \ctikzset{voltage=european}
-}
-
-\DeclareOption{americanvoltages}{
- \ctikzset{voltage=american}
-}
-
-\DeclareOption{europeancurrents}{
- \ctikzset{current = european}
-}
-
-\DeclareOption{americancurrents}{
- \ctikzset{current = american}
-}
-
-\DeclareOption{americanresistors}{
- \ctikzset{resistor = american}
-}
-
-\DeclareOption{europeanresistors}{
- \ctikzset{resistor = european}
-}
-
-\DeclareOption{americaninductors}{
- \ctikzset{inductor = american}
-}
-
-\DeclareOption{europeaninductors}{
- \ctikzset{inductor = european}
-}
-
-\DeclareOption{cuteinductors}{
- \ctikzset{inductor = cute}
-}
-
-\DeclareOption{americanports}{
- \ctikzset{logic ports = american}
-}
-
-\DeclareOption{europeanports}{
- \ctikzset{logic ports = european}
-}
-
-\DeclareOption{americangfsurgearrester}{
- \ctikzset{gas filled surge arrester choice = american}
-}
-
-\DeclareOption{europeangfsurgearrester}{
- \ctikzset{gas filled surge arrester choice = european}
-}
-
-\DeclareOption{siunitx}{
- \pgf@circ@siunitxtrue
-}
-
-\DeclareOption{nosiunitx}{
- \pgf@circ@siunitxfalse
-}
-
-\DeclareOption{fulldiode}{
- \ctikzset{diode = full}
-}
-
-\DeclareOption{emptydiode}{
- \ctikzset{diode = empty}
-}
-
-\DeclareOption{strokediode}{
- \ctikzset{diode = stroke}
-}
-
-\DeclareOption{arrowmos}{
- \pgf@circuit@mos@arrowstrue
-}
-
-\DeclareOption{noarrowmos}{
- \pgf@circuit@mos@arrowsfalse
-}
-
-\DeclareOption{fetbodydiode}{
- \pgf@circuit@fet@bodydiodetrue
-}
-
-\DeclareOption{nofetbodydiode}{
- \pgf@circuit@fet@bodydiodefalse
-}
-
-\DeclareOption{fetsolderdot}{
- \pgf@circuit@fet@solderdottrue
-}
-
-\DeclareOption{nofetsolderdot}{
- \pgf@circuit@fet@solderdotfalse
-}
-
-\DeclareOption{emptypmoscircle}{
- \pgf@circuit@pmos@emptycircletrue
-}
-
-
-\DeclareOption{lazymos}{
- \ctikzset{tripoles/nmos/width=.5}
- \ctikzset{tripoles/nmos/gate height=.35}
- \ctikzset{tripoles/nmos/base height=.35}
- \ctikzset{tripoles/nmos/height/.initial=1.2}
- \ctikzset{tripoles/nmos/base width=.5}
- \ctikzset{tripoles/nmos/gate width=.65}
-
- \ctikzset{tripoles/pmos/width=.5}
- \ctikzset{tripoles/pmos/gate height=.35}
- \ctikzset{tripoles/pmos/base height=.35}
- \ctikzset{tripoles/pmos/height/.initial=1.2}
- \ctikzset{tripoles/pmos/base width=.5}
- \ctikzset{tripoles/pmos/gate width=.65}
-
- \pgf@circuit@pmos@emptycircletrue
-}
-
-\DeclareOption{straightlabels}{
- \ctikzset{label/align = straight}
-}
-
-\DeclareOption{rotatelabels}{
- \ctikzset{label/align = rotate}
-}
-
-\DeclareOption{smartlabels}{
- \ctikzset{label/align = smart}
-}
-
-\DeclareOption{compatibility}{
- \pgf@circuit@compattrue
-}
-
-\DeclareOption{oldvoltagedirection}{
- \pgf@circ@oldvoltagedirectiontrue
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriesfalse
-}
-\DeclareOption{nooldvoltagedirection}{
- \pgf@circ@oldvoltagedirectionfalse
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriesfalse
-}
-
-\DeclareOption{RPvoltages}{
- \pgf@circ@oldvoltagedirectiontrue
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriestrue
-}
-\DeclareOption{EFvoltages}{
- \pgf@circ@oldvoltagedirectionfalse
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriestrue
-}
-
-\DeclareOption{legacytransistorstext}{
- \pgf@circuit@transisors@fixlabelsfalse
-}
-
-\DeclareOption{nolegacytransistorstext}{
- \pgf@circuit@transisors@fixlabelstrue
-}
-
-\DeclareOption{centertransistorstext}{
- \pgf@circuit@transisors@fixlabelstrue
-}
-
-\DeclareOption{betterproportions}{
- \ctikzset{monopoles/ground/width/.initial=.15}
-
- \ctikzset{bipoles/resistor/height/.initial=.23}
- \ctikzset{bipoles/resistor/width/.initial=.6}
- \ctikzset{bipoles/capacitor/height/.initial=.4}
- \ctikzset{bipoles/capacitor/width/.initial=.1}
- \ctikzset{bipoles/potentiometer/height/.initial=.6}
- \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/potentiometer/width/.initial=.6}
- \ctikzset{bipoles/photoresistor/height/.initial=.6}
- \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
- \ctikzset{bipoles/photoresistor/width/.initial=.6}
- \ctikzset{bipoles/thermistor/main/.initial=.7}
- \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistor/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/main/.initial=.7}
- \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
- \ctikzset{bipoles/thermistorptc/width/.initial=.6}
- \ctikzset{bipoles/thermistorptc/main/.initial=.7}
- \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/main/.initial=.7}
- \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/width/.initial=.6}
- \ctikzset{bipoles/vresistor/height/.initial=.45}
- \ctikzset{bipoles/vresistor/width/.initial=.6}
- \ctikzset{bipoles/generic/height/.initial=.23}
- \ctikzset{bipoles/generic/width/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
- \ctikzset{bipoles/ageneric/height/.initial=.23}
- \ctikzset{bipoles/ageneric/width/.initial=.6}
- \ctikzset{bipoles/memristor/height/.initial=.23}
- \ctikzset{bipoles/memristor/wave height/.initial=.375}
- \ctikzset{bipoles/memristor/width/.initial=.60}
- \ctikzset{bipoles/tgeneric/height/.initial=.525}
- \ctikzset{bipoles/tgeneric/width/.initial=.6}
- \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
- \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
- \ctikzset{bipoles/fullgeneric/height/.initial=.23}
- \ctikzset{bipoles/fullgeneric/width/.initial=.6}
- \ctikzset{bipoles/diode/height/.initial=.3}
- \ctikzset{bipoles/diode/width/.initial=.25}
- \ctikzset{bipoles/bidirectionaldiode/height/.initial=.66}
- \ctikzset{bipoles/bidirectionaldiode/width/.initial=.6}
- \ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
- \ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
-
- \ctikzset{tripoles/thyristor/height/.initial=.66}
- \ctikzset{tripoles/thyristor/height 2/.initial=.3}
- \ctikzset{tripoles/thyristor/width/.initial=.6}
- \ctikzset{tripoles/thyristor/diode height/.initial=.3}
- \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
- \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
- \ctikzset{tripoles/triac/height/.initial=.66}
- \ctikzset{tripoles/triac/width/.initial=.6}
- \ctikzset{tripoles/triac/diode width left/.initial=.3}
- \ctikzset{tripoles/triac/diode width right/.initial=.3}
-}
-
-% This is a nice hack that prints all the shapes declared
-% by the package. Very useful for coverage testing and debugging.
-%
-% \let\origpgfdeclareshape=\pgfdeclareshape
-% \def\pgfdeclareshape#1{%
-% \typeout{SHAPE:\space"#1"}%
-% \origpgfdeclareshape{#1}
-% }
-
-
-%%%%%%%%%
-%%%%%%%%%%% Springe nach tex/pgfcirc.defines
-%%%---------- open: tex/pgfcirc.defines.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%
-%% Key managements
-
-\long\def\pgf@circ@comment#1{}
-
-\def\circuitikzbasekey{/tikz/circuitikz}
-
-\pgfkeys{\circuitikzbasekey/.is family}
-
-\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
-\let\ctikzset\circuitikzset
-\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
-\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
-
-%% Temporary Counters
-
-\newcount\pgf@circ@count@a
-\newcount\pgf@circ@count@b
-\newcount\pgf@circ@count@c
-%%%%%%%%%%%%
-%% Dimensions
-
-% coordinates
-\newdimen\pgf@circ@res@up
-\newdimen\pgf@circ@res@down
-\newdimen\pgf@circ@res@zero
-\newdimen\pgf@circ@res@left
-\newdimen\pgf@circ@res@right
-\newdimen\pgf@circ@res@other
-\newdimen\pgf@circ@res@step
-\newdimen\pgf@circ@res@temp
-% inital thickness
-\newdimen \pgfstartlinewidth
-
-% arrow tips, ported over old arrows library (deprecated)
-% see https://tex.stackexchange.com/questions/234084/latex-arrow-tip-with-arrows-meta-library
-% this was the original definition of latex' tips, renamed to avoid clashes
-%
-\pgfarrowsdeclare{latexslim}{latexslim}
-{
- \pgfutil@tempdima=0.28pt%
- \advance\pgfutil@tempdima by.3\pgflinewidth%
- \pgfarrowsleftextend{+-4\pgfutil@tempdima}
- \pgfarrowsrightextend{+6\pgfutil@tempdima}
-}
-{
- \pgfutil@tempdima=0.28pt%
- \advance\pgfutil@tempdima by.3\pgflinewidth%
- \pgfpathmoveto{\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
- \pgfpathcurveto
- {\pgfqpoint{3.5\pgfutil@tempdima}{.5\pgfutil@tempdima}}
- {\pgfqpoint{-1\pgfutil@tempdima}{1.5\pgfutil@tempdima}}
- {\pgfqpoint{-4\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
- \pgfpathcurveto
- {\pgfqpoint{-1.5\pgfutil@tempdima}{1\pgfutil@tempdima}}
- {\pgfqpoint{-1.5\pgfutil@tempdima}{-1\pgfutil@tempdima}}
- {\pgfqpoint{-4\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
- \pgfpathcurveto
- {\pgfqpoint{-1\pgfutil@tempdima}{-1.5\pgfutil@tempdima}}
- {\pgfqpoint{3.5\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
- {\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
- \pgfpathclose
- \pgfusepathqfill
-}
-
-\pgfarrowsdeclarereversed{latexslim reversed}{latexslim reversed}{latexslim}{latexslim}
-
-\def\pgf@circ@setifdefinedfill#1#2{%
- % if \ctikzclass is defined and \ctikzclass/fill is defined and is not none:
- % set the fill color and execute \pgfusepath{#1}, else execute \pgfusepath{#2}
- \ifdefined\ctikzclass
- \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/fill}%
- {% yes, it's defined
- \edef\@@tmp{\ctikzvalof{\ctikzclass/fill}}\edef\@@none{none}%
- \ifx\@@tmp\@@none % but it's none
- \pgfusepath{#2}%
- \else
- \pgfsetfillcolor{\@@tmp}%
- \pgfusepath{#1}%
- \fi
- }{% the class is defined but the fill key not; use #2
- \pgfusepath{#2}%
- }
- \else
- \pgfusepath{#2}%
- \fi
-}
-
-%% Macro to fill or draw
-
-\def\pgf@circ@draworfill{%
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgf@circ@setifdefinedfill{draw,fill}{draw}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{draw, fill}
- \fi
-}
-
-\def\pgf@circ@draworfillandclip{%
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgf@circ@setifdefinedfill{draw, clip, fill}{draw, clip}
- \pgfusepath{draw, clip}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{draw, clip, fill}
- \fi
-}
-
-\def\pgf@circ@maybefill{%
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgf@circ@setifdefinedfill{fill}{discard}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{fill}
- \fi
-}
-
-%% Macros for setting linewidth
-% #1 is the legacy class (bipoles, tripoles) etc
-% #2 is the reference linewidth
-\def\pgf@circ@setlinewidth#1#2{%
- \ifdefined\ctikzclass
- \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/thickness}%
- {% yes, it's defined
- \edef\@@tmp{\ctikzvalof{\ctikzclass/thickness}}\edef\@@none{none}%
- \ifx\@@tmp\@@none % but it's none
- \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}% passthrough legacy class
- \else
- \pgfsetlinewidth{\@@tmp #2}%
- \fi
- }{ % key not defined, do the legacy thing
- \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
- }% Ok, do nothing
- \else % no class
- \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
- \fi
-}
-% use \pgf@circ@setlinewidth{none}{\pgflinewidth} if there is no legacy case
-\ctikzset{none/thickness/.initial=1.0} % do not touch
-
-%% font changes compatible with plain/LaTeX/ConTeXt
-%% thanks to Henri Menke https://github.com/circuitikz/circuitikz/issues/285#issuecomment-537224605
-
-\ifpgfutil@format@is@latex
- \long\def\pgf@circ@font@tiny{\tiny}
- \long\def\pgf@circ@font@small{\small}
- \long\def\pgf@circ@font@bold{\textbf}
- \long\def\pgf@circ@font@boldmath{\boldmath}
- \long\def\pgf@circ@font@sixbm{\fontsize{6}{7}\selectfont\boldmath}
- \long\def\pgf@circ@font@tenbm{\fontsize{10}{12}\selectfont\boldmath}
- \long\def\pgf@circ@font@twelve{\fontsize{12}{14}\selectfont}
-\else\ifpgfutil@format@is@plain
- \long\def\pgf@circ@font@tiny{\fiverm}
- \long\def\pgf@circ@font@small{\sevenrm}
- \long\def\pgf@circ@font@bold#1{{\bf#1}}
- \long\def\pgf@circ@font@boldmath{\bf} % to be tested
- \long\def\pgf@circ@font@sixbm{\sevenrm\bf} %
- \long\def\pgf@circ@font@tenbm{\tenrm\bf} %
- \long\def\pgf@circ@font@twelve{\twelverm} %
-\else\ifpgfutil@format@is@context
- \long\def\pgf@circ@font@tiny{\tfxx}
- \long\def\pgf@circ@font@small{\tfx}
- \long\def\pgf@circ@font@bold{\bold}
- \long\def\pgf@circ@font@boldmath{\bold} % to be tested
- \long\def\pgf@circ@font@sixbm{\tfx\bold} %
- \long\def\pgf@circ@font@tenbm{\normal\bold}%
- \long\def\pgf@circ@font@twelve{\tfa} %
-\fi\fi\fi
-
-
-%
-% Thanks to Phelype Oleinik https://tex.stackexchange.com/a/520806/38080
-%
-% this is needed to avoid problems with \ConTeXt
-\ifcsname normalunexpanded\endcsname
- \let\pgfcircutil@unexpanded\normalunexpanded
-\else
- \let\pgfcircutil@unexpanded\unexpanded
-\fi
-% minimally expand a pgfkey to check if it's {}/undefined or filled.
-\def\unexpandedvalueof#1{%
- \pgfcircutil@unexpanded\expandafter\expandafter
- \expandafter\pgf@circ@valueof@chk\pgfkeysvalueof{#1}}
-\def\pgf@circ@valueof@chk#1{%
- \ifx\relax#1%
- \expandafter\pgfutil@firstoftwo
- \else
- \expandafter\pgfutil@secondoftwo
- \fi
- {{}}% #1 is \relax, so consider empty
- {\expandafter{#1}}% otherwise, leave the key after one more expansion
-}%
-%
-% text position (added with ieeestd logic ports. Maybe to be extended to other components,
-% like amplifiers)
-%
-\newif\ifpgf@circ@center@text\pgf@circ@center@texttrue
-\tikzset{component text/.is choice}%
-\tikzset{component text/center/.code={\pgf@circ@center@texttrue}}%
-\tikzset{component text/left/.code={\pgf@circ@center@textfalse}}%
-\ctikzset{component text/.is choice}%
-\ctikzset{component text/center/.code={\pgf@circ@center@texttrue}}%
-\ctikzset{component text/left/.code={\pgf@circ@center@textfalse}}%
-\ctikzset{left text distance/.initial=0.3em}%
-
-% voltage options
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circuit@compat
-\newif\ifpgf@circ@oldvoltagedirection % default false
-\newif\ifpgf@circ@explicitvdir
-\newif\ifpgf@circ@fixbatteries
-
-\ctikzset{voltage dir/.is choice}
-\ctikzset{voltage dir/old/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriesfalse}}
-\ctikzset{voltage dir/noold/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriesfalse}}
-\ctikzset{voltage dir/RP/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriestrue}}
-\ctikzset{voltage dir/EF/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriestrue}}
-\tikzset{voltage dir/.style={circuitikz/voltage dir=#1}}
-
-% Option ">" for twoports
-\newif\ifpgf@circuit@inputarrow
-\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/.is choice}
-\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
-
-% Option "boxed" for nodes and twoports
-\newif\ifpgf@circuit@boxed
-\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
-
-% Option "dashed" for nodes and twoports
-\newif\ifpgf@circuit@dashed
-\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
-\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}
-
-% Option "t=*" for nodes
-\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
-
-\ctikzset{current arrow scale/.initial=16}
-
-\ctikzset{bipoles/.is family}
-\ctikzset{bipoles/border margin/.initial=1.1}
-\ctikzset{bipoles/thickness/.initial=2}
-\ctikzset{tripoles/thickness/.initial=2}
-\ctikzset{quadpoles/thickness/.initial=2}
-\ctikzset{nodes width/.initial=.04}
-
-% Base len for all circuitikz
-\newdimen\pgf@circ@Rlen
-% scaled length for internal use in scalable shapes
-\newdimen\pgf@circ@scaled@Rlen
-\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}}
-\pgf@circ@Rlen = 1.4cm
-% by default scale is 1.0
-\pgf@circ@scaled@Rlen=\pgf@circ@Rlen
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% main style definitions
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-% load a style file: search ctikzstyle-NAME.tex in path
-\def\ctikzloadstyle#1{%
- \pgfutil@InputIfFileExists{ctikzstyle-#1}{}{%
- \tikzerror{I did not find the circuitikz style #1}}%
-}
-
-% load and enact a style
-\def\ctikzsetstyle#1{%
- \ctikzloadstyle{#1}%
- \tikzset{#1 circuit style}%
-}
-
-% global style parameters
-\ctikzset{default/scale/.initial=1.0} % do not touch
-\ctikzset{default/fill/.initial=none} % do not touch
-\ctikzset{default/thickness/.initial=none} % do not touch
-% default is use as the generic default style for bipoles
-
-% mostly bipoles:
-
-\ctikzset{resistors/scale/.initial=1.0}
-\ctikzset{resistors/fill/.initial=none}
-\ctikzset{resistors/thickness/.initial=none}
-
-\ctikzset{capacitors/scale/.initial=1.0}
-\ctikzset{capacitors/fill/.initial=none}
-\ctikzset{capacitors/thickness/.initial=none}
-
-\ctikzset{inductors/scale/.initial=1.0}
-\ctikzset{inductors/fill/.initial=none}
-\ctikzset{inductors/thickness/.initial=none}
-
-\ctikzset{diodes/scale/.initial=1.0}
-\ctikzset{diodes/fill/.initial=none}
-\ctikzset{diodes/thickness/.initial=none}
-
-\ctikzset{batteries/scale/.initial=1.0}
-\ctikzset{batteries/fill/.initial=none}
-\ctikzset{batteries/thickness/.initial=none}
-
-\ctikzset{sources/scale/.initial=1.0}
-\ctikzset{sources/fill/.initial=none}
-\ctikzset{sources/thickness/.initial=none}
-
-\ctikzset{csources/scale/.initial=1.0}
-\ctikzset{csources/fill/.initial=none}
-\ctikzset{csources/thickness/.initial=none}
-
-\ctikzset{instruments/scale/.initial=1.0}
-\ctikzset{instruments/fill/.initial=none}
-\ctikzset{instruments/thickness/.initial=none}
-
-\ctikzset{mechanicals/scale/.initial=1.0}
-\ctikzset{mechanicals/fill/.initial=none}
-\ctikzset{mechanicals/thickness/.initial=none}
-
-\ctikzset{misc/scale/.initial=1.0}
-\ctikzset{misc/fill/.initial=none}
-\ctikzset{misc/thickness/.initial=none}
-
-\ctikzset{blocks/scale/.initial=1.0}
-\ctikzset{blocks/fill/.initial=none}
-\ctikzset{blocks/thickness/.initial=none}
-
-% mostly nodes
-
-\ctikzset{grounds/scale/.initial=1.0}
-\ctikzset{grounds/fill/.initial=none}
-\ctikzset{grounds/thickness/.initial=none}
-
-\ctikzset{power supplies/scale/.initial=1.0}
-\ctikzset{power supplies/fill/.initial=none}
-\ctikzset{power supplies/thickness/.initial=none}
-
-\ctikzset{transistors/scale/.initial=1.0}
-\ctikzset{transistors/fill/.initial=none}
-\ctikzset{transistors/thickness/.initial=none}
-
-\ctikzset{tubes/scale/.initial=1.0}
-\ctikzset{tubes/fill/.initial=none}
-\ctikzset{tubes/thickness/.initial=none}
-
-\ctikzset{RF/scale/.initial=1.0}
-\ctikzset{RF/fill/.initial=none}
-\ctikzset{RF/thickness/.initial=none}
-
-\ctikzset{electromechanicals/scale/.initial=1.0}
-\ctikzset{electromechanicals/fill/.initial=none}
-\ctikzset{electromechanicals/thickness/.initial=none}
-
-% transformers go with inductors
-\ctikzset{amplifiers/scale/.initial=1.0}
-\ctikzset{amplifiers/fill/.initial=none}
-\ctikzset{amplifiers/thickness/.initial=none}
-
-\ctikzset{switches/scale/.initial=1.0}
-\ctikzset{switches/fill/.initial=none}
-\ctikzset{switches/thickness/.initial=none}
-
-\ctikzset{logic ports/scale/.initial=1.0}
-\ctikzset{logic ports/fill/.initial=none}
-\ctikzset{logic ports/thickness/.initial=none}
-
-\ctikzset{flipflops/scale/.initial=1.0}
-\ctikzset{flipflops/fill/.initial=none}
-\ctikzset{flipflops/thickness/.initial=none}
-
-\ctikzset{muxdemuxes/scale/.initial=1.0}
-\ctikzset{muxdemuxes/fill/.initial=none}
-\ctikzset{muxdemuxes/thickness/.initial=none}
-
-\ctikzset{chips/scale/.initial=1.0}
-\ctikzset{chips/fill/.initial=none}
-\ctikzset{chips/thickness/.initial=none}
-
-\ctikzset{displays/scale/.initial=1.0}
-\ctikzset{displays/fill/.initial=none}
-\ctikzset{displays/thickness/.initial=none}
-
-% grounds and power supplies
-
-\ctikzset{monopoles/.is family}
-\ctikzset{monopoles/ground/width/.initial=.25}
-\ctikzset{monopoles/ground/connectionthickness/.initial=1}
-\ctikzset{monopoles/ground/thickness/.initial=2}
-\ctikzset{monopoles/rground/thickness/.initial=2}
-\ctikzset{monopoles/tground/thickness/.initial=3}
-\ctikzset{monopoles/vcc/width/.initial=.2}
-\ctikzset{monopoles/vcc/arrow/.initial=legacy}
-\ctikzset{monopoles/vee/arrow/.initial=legacy}
-\ctikzset{monopoles/match/width/.initial=.4}
-\ctikzset{monopoles/chassis/width/.initial=.25}
-\ctikzset{monopoles/alternative chassis/width/.initial=.25}
-\ctikzset{monopoles/equipotentiality/width/.initial=.25}
-\ctikzset{monopoles/antenna/width/.initial=.25}
-\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/width/.initial=.25}
-\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/rxantenna/width/.initial=.25}
-\ctikzset{monopoles/bareantenna/width/.initial=.25}
-\ctikzset{monopoles/bareantenna/label/xanchor/.initial=1}
-\ctikzset{monopoles/bareantenna/label/yanchor/.initial=0.5}
-\ctikzset{monopoles/waves/width/.initial=0.5}
-
-% microstrips
-\ctikzset{bipoles/mstline/height/.initial=0.3}
-\ctikzset{bipoles/mstline/width/.initial=1.2}
-\pgfkeys{/tikz/mstlinelen/.add code={}{\ctikzset{bipoles/mstline/width=#1}}}
-\ctikzset{monopoles/msport/width/.initial=.5}
-\ctikzset{monopoles/msrstub/height/.initial=1.0}
-\ctikzset{monopoles/msrstub/width/.initial=0.6}
-
-% microphone and loudspeaker
-\ctikzset{bipoles/loudspeaker/height/.initial=.8}
-\ctikzset{bipoles/loudspeaker/depth/.initial=.3}
-\ctikzset{bipoles/loudspeaker/width/.initial=.8}
-\ctikzset{bipoles/mic/height/.initial=1.2}
-\ctikzset{bipoles/mic/depth/.initial=.0}
-\ctikzset{bipoles/mic/width/.initial=.8}
-
-% Zig Zag resistors
-\ctikzset{resistors/zigs/.initial=3}
-\ctikzset{resistors/width/.code={%
- \ctikzset{bipoles/resistor/width=#1}%
- \ctikzset{bipoles/vresistor/width=#1}%
- \ctikzset{bipoles/potentiometer/width=#1}%
- \ctikzset{bipoles/resistivesens/width=#1}%
- \ctikzset{bipoles/photoresistor/width=#1}%
- \ctikzset{bipoles/thermistor/width=#1}%
- \ctikzset{bipoles/thermistorntc/width=#1}%
- \ctikzset{bipoles/thermistorptc/width=#1}%
- \ctikzset{bipoles/varistor/width=#1}%
- \ctikzset{bipoles/generic/width=#1}%
- \ctikzset{bipoles/generic potentiometer/width=#1}%
- \ctikzset{bipoles/ageneric/width=#1}%
- \ctikzset{bipoles/tgeneric/width=#1}%
-}}
-\ctikzset{wiper pos/.code={%
- \ctikzset{bipoles/potentiometer/wiper pos=#1}%
- \ctikzset{bipoles/generic potentiometer/wiper pos=#1}%
-}}
-% zigzag resistor
-\ctikzset{bipoles/resistor/height/.initial=.3}
-\ctikzset{bipoles/resistor/width/.initial=.8}
-\ctikzset{bipoles/potentiometer/height/.initial=.8}
-\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
-\ctikzset{bipoles/potentiometer/width/.initial=.8}
-\ctikzset{bipoles/potentiometer/wiper pos/.initial=.5}
-\ctikzset{bipoles/vresistor/height/.initial=.6}
-\ctikzset{bipoles/vresistor/width/.initial=.8}
-\ctikzset{bipoles/resistivesens/height/.initial=.6}
-\ctikzset{bipoles/resistivesens/width/.initial=.8}
-% square resistors
-\ctikzset{bipoles/photoresistor/height/.initial=.6}
-\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
-\ctikzset{bipoles/photoresistor/width/.initial=.8}
-\ctikzset{bipoles/thermistor/main/.initial=.7}
-\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/width/.initial=.8}
-\ctikzset{bipoles/thermistorntc/main/.initial=.7}
-\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistorptc/width/.initial=.8}
-\ctikzset{bipoles/thermistorptc/main/.initial=.7}
-\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistor/width/.initial=.8}
-\ctikzset{bipoles/varistor/main/.initial=.7}
-\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/varistor/width/.initial=.8}
-\ctikzset{bipoles/generic/height/.initial=.30}
-\ctikzset{bipoles/generic/width/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
-\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/wiper pos/.initial=.5}
-\ctikzset{bipoles/ageneric/height/.initial=.30}
-\ctikzset{bipoles/tgeneric/height/.initial=.70}
-\ctikzset{bipoles/tgeneric/width/.initial=.80}
-\ctikzset{bipoles/ageneric/width/.initial=.80}
-
-%% Capacitors
-\ctikzset{bipoles/capacitor/height/.initial=.6}
-\ctikzset{bipoles/capacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/height/.initial=.5}
-\ctikzset{bipoles/ecapacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/font/.initial=\pgf@circ@font@sixbm}
-%%% pcapacitor is deprecated
-\ctikzset{bipoles/pcapacitor/height/.initial=.6}
-\ctikzset{bipoles/pcapacitor/width/.initial=.2}
-\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
-\ctikzset{bipoles/ccapacitor/height/.initial=.6}
-\ctikzset{bipoles/ccapacitor/width/.initial=.12}
-\ctikzset{bipoles/ccapacitor/bend width/.initial=1.1}
-\ctikzset{bipoles/vcapacitor/height/.initial=.6}
-\ctikzset{bipoles/vcapacitor/width/.initial=.5}
-\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
-\ctikzset{bipoles/piezoelectric/height/.initial=.7}
-\ctikzset{bipoles/piezoelectric/width/.initial=.5}
-
-% Inductors
-\ctikzset{inductors/coils/.code={%
- \ctikzset{bipoles/cuteinductor/coils=#1}%
- \ctikzset{bipoles/cutechoke/coils=#1}%
- \ctikzset{bipoles/americaninductor/coils=#1}%
- \ctikzset{bipoles/vcuteinductor/coils=#1}%
- \ctikzset{bipoles/vamericaninductor/coils=#1}%
-}}
-\ctikzset{inductors/width/.code={%
- \ctikzset{bipoles/cuteinductor/width=#1}%
- \ctikzset{bipoles/cutechoke/width=#1}%
- \ctikzset{bipoles/americaninductor/width=#1}%
- \ctikzset{bipoles/vcuteinductor/width=#1}%
- \ctikzset{bipoles/vamericaninductor/width=#1}%
- \ctikzset{bipoles/fullgeneric/width=#1}%
- \ctikzset{bipoles/tfullgeneric/width=#1}%
-}}
-\ctikzset{bipoles/cuteinductor/height/.initial=.3}
-\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
-\ctikzset{bipoles/cuteinductor/width/.initial=.6}
-\ctikzset{bipoles/cuteinductor/coils/.initial=5}
-\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-%% Cute choke settings
-\ctikzset{bipoles/cutechoke/height/.initial=.3}
-\ctikzset{bipoles/cutechoke/lower coil height/.initial=.15}
-\ctikzset{bipoles/cutechoke/width/.initial=.6}
-\ctikzset{bipoles/cutechoke/coils/.initial=5}
-\ctikzset{bipoles/cutechoke/coil aspect/.initial=.5}%percentage of choke width, which is covered by lower coil
-\ctikzset{bipoles/cutechoke/cstep/.initial=.3}
-\ctikzset{bipoles/cutechoke/cdist/.initial=1.3}
-\ctikzset{bipoles/cutechoke/cthick/.initial=1}
-\newif\ifpgf@circuit@bipole@twolineschoke
-\pgf@circuit@bipole@twolineschokefalse
-\pgfkeys{/tikz/onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
-\ctikzset{onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
-\pgfkeys{/tikz/twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
-\ctikzset{twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
-%
-\ctikzset{bipoles/americaninductor/height/.initial=.3}
-\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
-\ctikzset{bipoles/americaninductor/width/.initial=.8}
-\ctikzset{bipoles/americaninductor/coils/.initial=4}
-\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
-\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
-\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
-\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
-\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
-\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
-\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
-\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
-\ctikzset{bipoles/fullgeneric/height/.initial=.30}
-\ctikzset{bipoles/fullgeneric/width/.initial=.80}
-
-% Sources
-
-\ctikzset{bipoles/esource/height/.initial=.60}
-\ctikzset{bipoles/esource/width/.initial=.60}
-\ctikzset{bipoles/pvsource/height/.initial=.60}
-\ctikzset{bipoles/pvsource/width/.initial=.60}
-\ctikzset{bipoles/isource/height/.initial=.60}
-\ctikzset{bipoles/isource/width/.initial=.60}
-\ctikzset{bipoles/oosource/height/.initial=.60}
-\ctikzset{bipoles/oosource/width/.initial=.60}
-\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/dcisource/angle/.initial=80}
-\ctikzset{bipoles/dcisource/height/.initial=.60}
-\ctikzset{bipoles/dcisource/width/.initial=.60}
-\ctikzset{bipoles/dcvsource/height/.initial=.60}
-\ctikzset{bipoles/dcvsource/width/.initial=.60}
-\ctikzset{bipoles/vsourcetri/height/.initial=.60}
-\ctikzset{bipoles/vsourcetri/width/.initial=.60}
-\ctikzset{bipoles/isourceam/height/.initial=.60}
-\ctikzset{bipoles/isourceam/width/.initial=.60}
-\ctikzset{bipoles/vsource/height/.initial=.60}
-\ctikzset{bipoles/vsource/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/height/.initial=.60}
-\ctikzset{bipoles/vsourceam/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/margin/.initial=.7}
-\ctikzset{bipoles/isourcesin/height/.initial=.60}
-\ctikzset{bipoles/isourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesin/height/.initial=.60}
-\ctikzset{bipoles/vsourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
-\ctikzset{bipoles/cisource/height/.initial=.7}
-\ctikzset{bipoles/cisource/width/.initial=.7}
-\ctikzset{bipoles/cisourceam/height/.initial=.7}
-\ctikzset{bipoles/cisourceam/width/.initial=.7}
-\ctikzset{bipoles/ecsource/height/.initial=.7}
-\ctikzset{bipoles/ecsource/width/.initial=.7}
-\ctikzset{bipoles/cvsource/height/.initial=.7}
-\ctikzset{bipoles/cvsource/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/height/.initial=.7}
-\ctikzset{bipoles/cvsourceam/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
-\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
-\ctikzset{bipoles/cisourcesin/width/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
-\ctikzset{bipoles/battery/height/.initial=.6}
-\ctikzset{bipoles/battery/width/.initial=.3}
-\ctikzset{bipoles/battery1/height/.initial=.6}
-\ctikzset{bipoles/battery1/width/.initial=.3}
-\ctikzset{bipoles/battery2/height/.initial=.6}
-\ctikzset{bipoles/battery2/width/.initial=.3}
-
-% % % ootransformer
-\ctikzset{bipoles/oosourcetrans/height/.initial=.6}
-\ctikzset{bipoles/oosourcetrans/width/.initial=.6}
-\ctikzset{bipoles/oosourcetrans/circlesize/.initial=.6}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/oosourcetrans/circleoffset/.initial=.4}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/oosourcetrans/vectorgroupscale/.initial=1}
-
-% % % oootransformer
-\ctikzset{bipoles/ooosource/height/.initial=.6}
-\ctikzset{bipoles/ooosource/circlesize/.initial=.55}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/ooosource/circleoffset/.initial=.45}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/ooosource/vectorgroupscale/.initial=1}
-
-% % % primary windings
-\newif\ifpgf@circ@prim@delta
-\newif\ifpgf@circ@prim@wye
-\newif\ifpgf@circ@prim@zig
-\pgfkeys{tikz/prim/.is choice}
-\pgfkeys{tikz/prim/delta/.add code={}{\pgf@circ@prim@deltatrue}}
-\pgfkeys{tikz/prim/wye/.add code={}{\pgf@circ@prim@wyetrue}}
-\pgfkeys{tikz/prim/zig/.add code={}{\pgf@circ@prim@zigtrue}}
-
-% % % secondary windings
-\newif\ifpgf@circ@sec@delta
-\newif\ifpgf@circ@sec@wye
-\newif\ifpgf@circ@sec@zig
-\pgfkeys{tikz/sec/.is choice}
-\pgfkeys{tikz/sec/delta/.add code={}{\pgf@circ@sec@deltatrue}}
-\pgfkeys{tikz/sec/wye/.add code={}{\pgf@circ@sec@wyetrue}}
-\pgfkeys{tikz/sec/zig/.add code={}{\pgf@circ@sec@zigtrue}}
-
-% % % tertiary windings (ooosource)
-\newif\ifpgf@circ@tert@delta
-\newif\ifpgf@circ@tert@wye
-\newif\ifpgf@circ@tert@zig
-\pgfkeys{tikz/tert/.is choice}
-\pgfkeys{tikz/tert/delta/.add code={}{\pgf@circ@tert@deltatrue}}
-\pgfkeys{tikz/tert/wye/.add code={}{\pgf@circ@tert@wyetrue}}
-\pgfkeys{tikz/tert/zig/.add code={}{\pgf@circ@tert@zigtrue}}
-
-% diodes
-
-\ctikzset{bipoles/diode/height/.initial=.50}
-\ctikzset{bipoles/diode/width/.initial=.40}
-\ctikzset{bipoles/bidirectionaldiode/height/.initial=1.1}
-\ctikzset{bipoles/bidirectionaldiode/width/.initial=1}
-\ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
-\ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
-\ctikzset{bipoles/varcap/height/.initial=.50}
-\ctikzset{bipoles/varcap/width/.initial=.45}
-
-% switches
-
-\ctikzset{bipoles/spst/height/.initial=.35}
-\ctikzset{bipoles/spst/width/.initial=.35}
-\ctikzset{bipoles/spst/depth/.initial=.2}
-\ctikzset{bipoles/nos/height/.initial=.3}
-\ctikzset{bipoles/nos/width/.initial=.35}
-\ctikzset{bipoles/nos/depth/.initial=.2}
-\ctikzset{bipoles/ncs/height/.initial=.35}
-\ctikzset{bipoles/ncs/width/.initial=.35}
-\ctikzset{bipoles/ncs/depth/.initial=.2}
-%%% reed switch
-\ctikzset{bipoles/reed/height/.initial=.4}
-\ctikzset{bipoles/reed/width/.initial=.8}% 0.35 in nos
-\ctikzset{bipoles/reed/depth/.initial=.4}
-
-% misc
-
-\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
-\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
-\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
-\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
-\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
-\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
-\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
-\ctikzset{bipoles/fuse/height/.initial=.20}
-\ctikzset{bipoles/fuse/width/.initial=.50}
-\ctikzset{bipoles/afuse/height/.initial=.20}
-\ctikzset{bipoles/afuse/width/.initial=.50}
-\ctikzset{bipoles/memristor/height/.initial=.30}
-\ctikzset{bipoles/memristor/wave height/.initial=.5}
-\ctikzset{bipoles/memristor/width/.initial=.80}
-\ctikzset{bipoles/open/height/.initial=.3} %necessary for curly voltages
-\ctikzset{bipoles/open/width/.initial=.3} %necessary for curly voltages
-\ctikzset{bipoles/open/voltage/straight label distance/.initial=0}
-\ctikzset{bipoles/open/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/short/height/.initial=0} %dummy height for voltage positioning
-\ctikzset{bipoles/short/width/.initial=0} %dummy width for voltage positioning
-%\ctikzset{bipoles/short/voltage/straight label distance/.initial=.2}
-%\ctikzset{bipoles/short/voltage/distance from node/.initial=.5}
-% multiwire
-\ctikzset{bipoles/multiwire/height/.initial=0.4}
-\ctikzset{bipoles/multiwire/width/.initial=0.2}
-\ctikzset{bipoles/multiwire/spacing/.initial=0.05}
-
-\ctikzset{bipoles/ammeter/height/.initial=.60}
-\ctikzset{bipoles/ammeter/width/.initial=.60}
-\ctikzset{bipoles/ohmmeter/height/.initial=.60}
-\ctikzset{bipoles/ohmmeter/width/.initial=.60}
-\ctikzset{bipoles/voltmeter/height/.initial=.60}
-\ctikzset{bipoles/voltmeter/width/.initial=.60}
-\ctikzset{bipoles/smeter/height/.initial=.60}
-\ctikzset{bipoles/smeter/width/.initial=.60}
-\ctikzset{bipoles/smeter/voltage/additional label shift/.initial=1}
-\ctikzset{bipoles/qmeter/depth/.initial=.40}
-\ctikzset{bipoles/qmeter/height/.initial=.80}
-\ctikzset{bipoles/qmeter/width/.initial=.60}
-% this must be specified for each one
-\ctikzset{bipoles/qvprobe/voltage/additional label shift/.initial=.5}
-\ctikzset{bipoles/qiprobe/voltage/additional label shift/.initial=.5}
-\ctikzset{bipoles/qpprobe/voltage/additional label shift/.initial=.5}
-\ctikzset{bipoles/iloop/width/.initial=.40}
-\ctikzset{bipoles/iloop/height/.initial=.60}
-
-\ctikzset{bipoles/oscope/height/.initial=.60}
-\ctikzset{bipoles/oscope/width/.initial=.60}
-\ctikzset{bipoles/oscope/voltage/additional label shift/.initial=1}
-
-
-% option to not rotate the new (Romano's) instruments
-\newif\ifpgf@circuit@straightinstruments\pgf@circuit@straightinstrumentstrue
-\pgfkeys{/tikz/straight instruments/.add code={}{\pgf@circuit@straightinstrumentstrue}}
-\ctikzset{straight instruments/.add code={}{\pgf@circuit@straightinstrumentstrue}}
-\pgfkeys{/tikz/rotated instruments/.add code={}{\pgf@circuit@straightinstrumentsfalse}}
-\ctikzset{rotated instruments/.add code={}{\pgf@circuit@straightinstrumentsfalse}}
-
-
-\ctikzset{bipoles/buffer/height/.initial=1}
-\ctikzset{bipoles/buffer/width/.initial=1}
-\ctikzset{bipoles/not port/width/.initial=1}
-\ctikzset{bipoles/not port/height/.initial=.8}
-\ctikzset{bipoles/not port/circle width/.initial=.15}
-\ctikzset{bipoles/lamp/height/.initial=.60}
-\ctikzset{bipoles/lamp/width/.initial=.60}
-\ctikzset{bipoles/bulb/height/.initial=.8}
-\ctikzset{bipoles/bulb/width/.initial=.8}
-\ctikzset{bipoles/tline/height/.initial=.3}
-\ctikzset{bipoles/tline/width/.initial=.8}
-\ctikzset{bipoles/squid/height/.initial=.60}
-\ctikzset{bipoles/squid/width/.initial=.60}
-\ctikzset{bipoles/barrier/height/.initial=.60}
-\ctikzset{bipoles/barrier/width/.initial=.60}
-\ctikzset{bipoles/openbarrier/gap/.initial=0.5}
-\ctikzset{bipoles/thermocouple/height/.initial=.250}
-\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
-\ctikzset{bipoles/thermocouple/width/.initial=.140}
-\ctikzset{bipoles/pushbutton/height/.initial=.5}
-\ctikzset{bipoles/pushbutton/height 2/.initial=.2}
-\ctikzset{bipoles/pushbutton/width/.initial=.50}
-
-\ctikzset{bipoles/twoport/width/.initial=.7}
-\ctikzset{bipoles/twoport/height/.initial=.7}
-\ctikzset{bipoles/twoport/text/.initial=}
-\ctikzset{bipoles/vco/width/.initial=.7}
-\ctikzset{bipoles/bandpass/width/.initial=.7}
-\ctikzset{bipoles/bandstop/width/.initial=.7}
-\ctikzset{bipoles/highpass/width/.initial=.7}
-\ctikzset{bipoles/lowpass/width/.initial=.7}
-\ctikzset{bipoles/adc/width/.initial=.7}
-\ctikzset{bipoles/dac/width/.initial=.7}
-\ctikzset{bipoles/dsp/width/.initial=.7}
-\ctikzset{bipoles/fft/width/.initial=.7}
-\ctikzset{bipoles/amp/width/.initial=.7}
-\ctikzset{bipoles/vamp/width/.initial=.7}
-\ctikzset{bipoles/piattenuator/width/.initial=.7}
-\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
-\ctikzset{bipoles/tattenuator/width/.initial=.7}
-\ctikzset{bipoles/vtattenuator/width/.initial=.7}
-\ctikzset{bipoles/phaseshifter/width/.initial=.7}
-\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
-\ctikzset{bipoles/detector/width/.initial=.7}
-
-% crossing wires
-\ctikzset{bipoles/crossing/size/.initial=.2}
-
-% Transistors starts here
-
-\newif\ifpgf@circuit@trans@depletiontype
-\pgf@circuit@trans@depletiontypefalse
-
-\newif\ifpgf@circuit@mos@arrows
-\ctikzset{tripoles/mos style/.is choice}
-\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
-\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
-\pgfkeys{/tikz/arrowmos/.add code={}{\pgf@circuit@mos@arrowstrue}}
-\pgfkeys{/tikz/noarrowmos/.add code={}{\pgf@circuit@mos@arrowsfalse}}
-
-% Fixed label positions
-\newif\ifpgf@circuit@transisors@fixlabels
-\pgf@circuit@transisors@fixlabelstrue
-\pgfkeys{/tikz/center transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
-\ctikzset{fix transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
-\pgfkeys{/tikz/legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
-\ctikzset{legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
-
-% Option solderdot for fet
-\newif\ifpgf@circuit@fet@solderdot
-\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-
-% Option bodydiode for fet
-\newif\ifpgf@circuit@fet@bodydiode
-\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-
-% Option draw fet without gate connection
-\newif\ifpgf@circuit@bpt@drawgate
-\pgf@circuit@bpt@drawgatetrue
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-
-% Option draw bpt with schottky base
-\newif\ifpgf@circuit@bpt@schottky
-\pgf@circuit@bpt@schottkyfalse
-\pgfkeys{/tikz/schottky base/.add code={}{\pgf@circuit@bpt@schottkytrue}}
-\ctikzset{schottky base/.add code={}{\pgf@circuit@bpt@schottkytrue}}
-\pgfkeys{/tikz/no schottky base/.add code={}{\pgf@circuit@bpt@schottkyfalse}}
-\ctikzset{no schottky base/.add code={}{\pgf@circuit@bpt@schottkyfalse}}
-\ctikzset{tripoles/schottky base size/.initial=0.07}
-
-% Option draw bpt without base connection
-\newif\ifpgf@circuit@bpt@drawbase
-\pgf@circuit@bpt@drawbasetrue
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-
-% Option draw bpt with optical input
-\newif\ifpgf@circuit@bpt@drawphoto
-\pgf@circuit@bpt@drawphotofalse
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-
-% Option draw fet without bulk connection -- Added by Burak Kelleci
-\newif\ifpgf@circuit@bpt@drawbulk
-\pgfkeys{/tikz/bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
-\ctikzset{bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
-\pgfkeys{/tikz/nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
-\ctikzset{nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
-
-% Option draw pmos with empty circle
-\newif\ifpgf@circuit@pmos@emptycircle
-\pgf@circuit@pmos@emptycirclefalse
-\ctikzset{tripoles/pmos style/.is choice}
-\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-% Option draw pmos with no circle
-\newif\ifpgf@circuit@pmos@nocircle
-\pgf@circuit@pmos@nocirclefalse
-\pgfkeys{/tikz/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
-\ctikzset{tripoles/pmos style/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
-% back to normal
-\pgfkeys{/tikz/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
-\ctikzset{tripoles/pmos style/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
-% arrows at the end, the correct way
-\newif\ifpgf@circuit@trans@arrowatend
-\pgf@circuit@trans@arrowatendfalse
-\ctikzset{transistors/arrow pos/.is choice}
-\ctikzset{transistors/arrow pos/legacy/.code={\pgf@circuit@trans@arrowatendfalse}}
-\ctikzset{transistors/arrow pos/end/.code={\pgf@circuit@trans@arrowatendtrue}}
-
-\newif\ifpgf@circuit@trans@ntype
-\pgf@circuit@trans@ntypetrue %default true
-%\newif\ifpgf@circuit@trans@ptype
-%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
-\ctikzset{tripoles/nmos/width/.initial=.7}
-\ctikzset{tripoles/nmos/gate height/.initial=.35}
-\ctikzset{tripoles/nmos/base height/.initial=.5}
-\ctikzset{tripoles/nmos/conn height/.initial=0}
-\ctikzset{tripoles/nmos/height/.initial=1.1}
-\ctikzset{tripoles/nmos/base width/.initial=.5}
-\ctikzset{tripoles/nmos/gate width/.initial=.62}
-\ctikzset{tripoles/nmos/arrow pos/.initial=.6}
-\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nmos/curr direction/.initial=1}
-
-\ctikzset{tripoles/pmos/width/.initial=.7}
-\ctikzset{tripoles/pmos/gate height/.initial=.35}
-\ctikzset{tripoles/pmos/base height/.initial=.5}
-\ctikzset{tripoles/pmos/conn height/.initial=0}
-\ctikzset{tripoles/pmos/height/.initial=1.1}
-\ctikzset{tripoles/pmos/base width/.initial=.5}
-\ctikzset{tripoles/pmos/gate width/.initial=.62}
-\ctikzset{tripoles/pmos/arrow pos/.initial=.4}
-\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pmos/curr direction/.initial=-1}
-
-\ctikzset{tripoles/hemt/width/.initial=.7}
-\ctikzset{tripoles/hemt/gate height/.initial=.35}
-\ctikzset{tripoles/hemt/base height/.initial=.5}
-\ctikzset{tripoles/hemt/conn height/.initial=0}
-\ctikzset{tripoles/hemt/height/.initial=1.1}
-\ctikzset{tripoles/hemt/base width/.initial=.5}
-\ctikzset{tripoles/hemt/gate width/.initial=.62}
-\ctikzset{tripoles/hemt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/hemt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/hemt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/hemt/curr direction/.initial=1}
-
-\ctikzset{tripoles/nfet/width/.initial=.7}
-\ctikzset{tripoles/nfet/gate height/.initial=.35}
-\ctikzset{tripoles/nfet/base height/.initial=.5}
-\ctikzset{tripoles/nfet/conn height/.initial=0}
-\ctikzset{tripoles/nfet/height/.initial=1.1}
-\ctikzset{tripoles/nfet/base width/.initial=.5}
-\ctikzset{tripoles/nfet/gate width/.initial=.62}
-\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pfet/width/.initial=.7}
-\ctikzset{tripoles/pfet/gate height/.initial=.35}
-\ctikzset{tripoles/pfet/base height/.initial=.5}
-\ctikzset{tripoles/pfet/conn height/.initial=0}
-\ctikzset{tripoles/pfet/height/.initial=1.1}
-\ctikzset{tripoles/pfet/base width/.initial=.5}
-\ctikzset{tripoles/pfet/gate width/.initial=.62}
-\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigfete/width/.initial=.7}
-\ctikzset{tripoles/nigfete/gate height/.initial=.35}
-\ctikzset{tripoles/nigfete/base height/.initial=.5}
-\ctikzset{tripoles/nigfete/conn height/.initial=.35}
-\ctikzset{tripoles/nigfete/height/.initial=1.1}
-\ctikzset{tripoles/nigfete/base width/.initial=.5}
-\ctikzset{tripoles/nigfete/gate width/.initial=.62}
-\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfete/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetd/width/.initial=.7}
-\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetd/base height/.initial=.5}
-\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetd/height/.initial=1.1}
-\ctikzset{tripoles/nigfetd/base width/.initial=.5}
-\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
-
-\ctikzset{tripoles/pigfete/width/.initial=.7}
-\ctikzset{tripoles/pigfete/gate height/.initial=.35}
-\ctikzset{tripoles/pigfete/base height/.initial=.5}
-\ctikzset{tripoles/pigfete/conn height/.initial=.35}
-\ctikzset{tripoles/pigfete/height/.initial=1.1}
-\ctikzset{tripoles/pigfete/base width/.initial=.5}
-\ctikzset{tripoles/pigfete/gate width/.initial=.62}
-\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetd/width/.initial=.7}
-\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetd/base height/.initial=.5}
-\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetd/height/.initial=1.1}
-\ctikzset{tripoles/pigfetd/base width/.initial=.5}
-\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
-
-\ctikzset{tripoles/npn/width/.initial=.6}
-\ctikzset{tripoles/npn/base height/.initial=.45}
-\ctikzset{tripoles/npn/base height 2/.initial=.15}
-\ctikzset{tripoles/npn/base height/.initial=.4}
-\ctikzset{tripoles/npn/conn height/.initial=0}
-\ctikzset{tripoles/npn/height/.initial=1.1}
-\ctikzset{tripoles/npn/base width/.initial=.5}
-\ctikzset{tripoles/npn/arrow pos/.initial=.5}
-\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/npn/curr direction/.initial=1}
-
-\ctikzset{tripoles/pnp/width/.initial=.6}
-\ctikzset{tripoles/pnp/base height/.initial=.45}
-\ctikzset{tripoles/pnp/base height 2/.initial=.15}
-\ctikzset{tripoles/pnp/base height/.initial=.4}
-\ctikzset{tripoles/pnp/conn height/.initial=0}
-\ctikzset{tripoles/pnp/height/.initial=1.1}
-\ctikzset{tripoles/pnp/base width/.initial=.5}
-\ctikzset{tripoles/pnp/arrow pos/.initial=.5}
-\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pnp/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigbt/width/.initial=.6}
-\ctikzset{tripoles/pigbt/gate height/.initial=.45}
-\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/pigbt/base height/.initial=.4}
-\ctikzset{tripoles/pigbt/outer base height/.initial=.4}
-\ctikzset{tripoles/pigbt/outer base thickness/.initial=1}
-\ctikzset{tripoles/pigbt/conn height/.initial=0}
-\ctikzset{tripoles/pigbt/height/.initial=1.1}
-\ctikzset{tripoles/pigbt/gate width/.initial=.62}
-\ctikzset{tripoles/pigbt/base width/.initial=.5}
-\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigbt/width/.initial=.6}
-\ctikzset{tripoles/nigbt/gate height/.initial=.45}
-\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/nigbt/base height/.initial=.4}
-\ctikzset{tripoles/nigbt/outer base height/.initial=.4}
-\ctikzset{tripoles/nigbt/outer base thickness/.initial=1}
-\ctikzset{tripoles/nigbt/conn height/.initial=0}
-\ctikzset{tripoles/nigbt/height/.initial=1.1}
-\ctikzset{tripoles/nigbt/gate width/.initial=.62}
-\ctikzset{tripoles/nigbt/base width/.initial=.5}
-\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/Lpigbt/width/.initial=.6}
-\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/outer base height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/outer base thickness/.initial=1}
-\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/Lnigbt/width/.initial=.6}
-\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/outer base height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/outer base thickness/.initial=1}
-\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/igbt/outer base height/.code={
- \ctikzset{tripoles/nigbt/outer base height/.initial=#1}
- \ctikzset{tripoles/pigbt/outer base height/.initial=#1}
- \ctikzset{tripoles/Lnigbt/outer base height/.initial=#1}
- \ctikzset{tripoles/Lpigbt/outer base height/.initial=#1}
- \ctikzset{tripoles/Lnigbt/conn height/.initial=#1}
- \ctikzset{tripoles/Lpigbt/conn height/.initial=#1}
-}}
-\ctikzset{tripoles/igbt/outer base thickness/.code={
- \ctikzset{tripoles/nigbt/outer base thickness=#1}
- \ctikzset{tripoles/pigbt/outer base thickness=#1}
- \ctikzset{tripoles/Lnigbt/outer base thickness=#1}
- \ctikzset{tripoles/Lpigbt/outer base thickness=#1}
-}}
-
-\ctikzset{tripoles/njfet/width/.initial=.7}
-\ctikzset{tripoles/njfet/gate height/.initial=.5}
-\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/njfet/gate width/.initial=.5}
-\ctikzset{tripoles/njfet/conn height/.initial=.35}
-\ctikzset{tripoles/njfet/height/.initial=1.1}
-\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/njfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pjfet/width/.initial=.7}
-\ctikzset{tripoles/pjfet/gate height/.initial=.5}
-\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/pjfet/gate width/.initial=.5}
-\ctikzset{tripoles/pjfet/conn height/.initial=.35}
-\ctikzset{tripoles/pjfet/height/.initial=1.1}
-\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/isfet/width/.initial=1}
-\ctikzset{tripoles/isfet/gate height/.initial=.35}
-\ctikzset{tripoles/isfet/base height/.initial=.5}
-\ctikzset{tripoles/isfet/height/.initial=1.1}
-\ctikzset{tripoles/isfet/base width/.initial=.3}
-\ctikzset{tripoles/isfet/gate width/.initial=.5}
-\ctikzset{tripoles/isfet/conn height/.initial=0}
-\ctikzset{tripoles/isfet/wave width/.initial=.16}
-\ctikzset{tripoles/isfet/wave amp/.initial=.06}
-\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
-\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
-\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/isfet/curr direction/.initial=1}
-%
-% multi-emitter and multi-collector BJTs by Romano Giannetti
-%
-\ctikzset{tripoles/bjt/emitters/.initial=1}
-\ctikzset{tripoles/bjt/collectors/.initial=1}
-\pgfkeys{/tikz/emitters/.add code={}{\ctikzset{tripoles/bjt/emitters=#1}}}
-\pgfkeys{/tikz/collectors/.add code={}{\ctikzset{tripoles/bjt/collectors=#1}}}
-\ctikzset{tripoles/bjt/pins width/.initial=0.3}
-\pgfkeys{/tikz/bjt pins width/.add code={}{\ctikzset{tripoles/bjt/pins width=#1}}}
-\ctikzset{tripoles/bjt/multi height/.initial=.5}
-\pgfkeys{/tikz/bjt multi height/.add code={}{\ctikzset{tripoles/bjt/multi height/.initial=#1}}}
-%
-\ctikzset{tripoles/bjt/width/.initial=.3}
-\ctikzset{tripoles/bjt/base height 2/.initial=.4}
-\ctikzset{tripoles/bjt/base height/.initial=1.1}
-\ctikzset{tripoles/bjt/height/.initial=.4}
-\ctikzset{tripoles/bjt/base width/.initial=1}
-\ctikzset{tripoles/bjt/arrow pos/.initial=.5}
-% do NOT touch these two!
-\ctikzset{tripoles/bjt/npn/curr direction/.initial=1}
-\ctikzset{tripoles/bjt/pnp/curr direction/.initial=-1}
-
-%% transistors stop here
-
-%% Logic ports
-
-\newif\ifpgf@circuit@europeanlogicport
-\ctikzset{logic ports/.is choice}
-\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue
- \tikzset{and port/.style={shape=european and port}}%
- \tikzset{or port/.style={shape=european or port}}%
- \tikzset{xor port/.style={shape=european xor port}}%
- \tikzset{buffer port/.style={shape=european buffer port}}%
- \tikzset{not port/.style={shape=european not port}}%
- \tikzset{nand port/.style={shape=european nand port}}%
- \tikzset{nor port/.style={shape=european nor port}}%
- \tikzset{xnor port/.style={shape=european xnor port}}%
-}}
-\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse
- \tikzset{and port/.style={shape=american and port}}%
- \tikzset{or port/.style={shape=american or port}}%
- \tikzset{xor port/.style={shape=american xor port}}%
- \tikzset{buffer port/.style={shape=american buffer port}}%
- \tikzset{not port/.style={shape=american not port}}%
- \tikzset{nand port/.style={shape=american nand port}}%
- \tikzset{nor port/.style={shape=american nor port}}%
- \tikzset{xnor port/.style={shape=american xnor port}}%
-}}
-
-\ctikzset{logic ports origin/.is choice}
-\ctikzset{logic ports origin/legacy/.code={
- \ctikzset{tripoles/american and port/origin/.initial=0.8}%
- \ctikzset{tripoles/american nand port/origin/.initial=0.8}%
- \ctikzset{tripoles/american nor port/origin/.initial=0.8}%
- \ctikzset{tripoles/american or port/origin/.initial=0.8}%
- \ctikzset{tripoles/american xor port/origin/.initial=0.8}%
- \ctikzset{tripoles/american xnor port/origin/.initial=0.8}%
- \ctikzset{tripoles/european and port/origin/.initial=0.8}%
- \ctikzset{tripoles/european nand port/origin/.initial=0.8}%
- \ctikzset{tripoles/european or port/origin/.initial=0.8}%
- \ctikzset{tripoles/european nor port/origin/.initial=0.8}%
- \ctikzset{tripoles/european xor port/origin/.initial=0.8}%
- \ctikzset{tripoles/european xnor port/origin/.initial=0.8}%
- \ctikzset{tripoles/european buffer port/origin/.initial=0.8}%
- \ctikzset{tripoles/european not port/origin/.initial=0.8}%
- }%
-}
-\ctikzset{logic ports origin/center/.code={%
- \ctikzset{tripoles/american and port/origin/.initial=0}%
- \ctikzset{tripoles/american nand port/origin/.initial=0}%
- \ctikzset{tripoles/american nor port/origin/.initial=0}%
- \ctikzset{tripoles/american or port/origin/.initial=0}%
- \ctikzset{tripoles/american xor port/origin/.initial=0}%
- \ctikzset{tripoles/american xnor port/origin/.initial=0}%
- \ctikzset{tripoles/european and port/origin/.initial=0}%
- \ctikzset{tripoles/european nand port/origin/.initial=0}%
- \ctikzset{tripoles/european or port/origin/.initial=0}%
- \ctikzset{tripoles/european nor port/origin/.initial=0}%
- \ctikzset{tripoles/european xor port/origin/.initial=0}%
- \ctikzset{tripoles/european xnor port/origin/.initial=0}%
- \ctikzset{tripoles/european buffer port/origin/.initial=0}%
- \ctikzset{tripoles/european not port/origin/.initial=0}%
- }%
-}
-
-\newif\ifpgfcirc@roundy@or@shapes\pgfcirc@roundy@or@shapesfalse
-\ctikzset{american or shape/.is choice}
-\ctikzset{american or shape/roundy/.code={\pgfcirc@roundy@or@shapestrue}}
-\ctikzset{american or shape/pointy/.code={\pgfcirc@roundy@or@shapesfalse}}
-
-\newif\ifpgfcirc@draw@leads\pgfcirc@draw@leadstrue
-\ctikzset{logic ports draw input leads/.is choice}
-\ctikzset{logic ports draw input leads/true/.code={\pgfcirc@draw@leadstrue}}
-\ctikzset{logic ports draw input leads/false/.code={\pgfcirc@draw@leadsfalse}}
-\tikzset{input leads/.code={\pgfcirc@draw@leadstrue}}
-\tikzset{no input leads/.code={\pgfcirc@draw@leadsfalse}}
-
-\ctikzset{tripoles/american and port/width/.initial=1.1}
-\ctikzset{tripoles/american and port/height/.initial=.8}
-\ctikzset{tripoles/american and port/port width/.initial=.7}
-\ctikzset{tripoles/american and port/input height/.initial=.5}
-\ctikzset{tripoles/american nand port/width/.initial=1.1}
-\ctikzset{tripoles/american nand port/height/.initial=.8}
-\ctikzset{tripoles/american nand port/port width/.initial=.7}
-\ctikzset{tripoles/american nand port/circle width/.initial=.15}
-\ctikzset{tripoles/american nand port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/width/.initial=1.1}
-\ctikzset{tripoles/american or port/height/.initial=.8}
-\ctikzset{tripoles/american or port/port width/.initial=.7}
-\ctikzset{tripoles/american or port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/input skip/.initial=.25}
-\ctikzset{tripoles/american or port/aaa/.initial=.6}
-\ctikzset{tripoles/american or port/bbb/.initial=.4}
-\ctikzset{tripoles/american or port/ccc/.initial=.5}
-\ctikzset{tripoles/american or port/ddd/.initial=.0}
-\ctikzset{tripoles/american nor port/width/.initial=1.1}
-\ctikzset{tripoles/american nor port/height/.initial=.8}
-\ctikzset{tripoles/american nor port/port width/.initial=.7}
-\ctikzset{tripoles/american nor port/input height/.initial=.5}
-\ctikzset{tripoles/american nor port/input skip/.initial=.25}
-\ctikzset{tripoles/american nor port/circle width/.initial=.15}
-\ctikzset{tripoles/american nor port/aaa/.initial=.6}
-\ctikzset{tripoles/american nor port/bbb/.initial=.4}
-\ctikzset{tripoles/american nor port/ccc/.initial=.5}
-\ctikzset{tripoles/american nor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xor port/width/.initial=1.1}
-\ctikzset{tripoles/american xor port/height/.initial=.8}
-\ctikzset{tripoles/american xor port/port width/.initial=.7}
-\ctikzset{tripoles/american xor port/input height/.initial=.5}
-\ctikzset{tripoles/american xor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xor port/distance/.initial=.1}
-\ctikzset{tripoles/american xnor port/width/.initial=1.1}
-\ctikzset{tripoles/american xnor port/height/.initial=.8}
-\ctikzset{tripoles/american xnor port/port width/.initial=.7}
-\ctikzset{tripoles/american xnor port/input height/.initial=.5}
-\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xnor port/distance/.initial=.1}
-\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
-\ctikzset{tripoles/american and port/origin/.initial=0.8}
-\ctikzset{tripoles/american and port/inputs/.initial=2}
-% variable number of inputs
-\ctikzset{tripoles/american nand port/origin/.initial=0.8}
-\ctikzset{tripoles/american nand port/inputs/.initial=2}
-\ctikzset{tripoles/american nor port/origin/.initial=0.8}
-\ctikzset{tripoles/american nor port/inputs/.initial=2}
-\ctikzset{tripoles/american nor port/angle/.initial=70}
-\ctikzset{tripoles/american nor port/inner/.initial=0.3}
-\ctikzset{tripoles/american or port/origin/.initial=0.8}
-\ctikzset{tripoles/american or port/inputs/.initial=2}
-\ctikzset{tripoles/american or port/angle/.initial=70}
-\ctikzset{tripoles/american or port/inner/.initial=0.3}
-\ctikzset{tripoles/american xor port/origin/.initial=0.8}
-\ctikzset{tripoles/american xor port/inputs/.initial=2}
-\ctikzset{tripoles/american xor port/angle/.initial=70}
-\ctikzset{tripoles/american xor port/inner/.initial=0.3}
-\ctikzset{tripoles/american xnor port/origin/.initial=0.8}
-\ctikzset{tripoles/american xnor port/inputs/.initial=2}
-\ctikzset{tripoles/american xnor port/angle/.initial=70}
-\ctikzset{tripoles/american xnor port/inner/.initial=0.3}
-
-\ctikzset{tripoles/european and port/width/.initial=1.4}
-\ctikzset{tripoles/european and port/height/.initial=.65}
-\ctikzset{tripoles/european and port/reserved/.initial=.6}
-\ctikzset{tripoles/european and port/input height/.initial=.6}
-\ctikzset{tripoles/european or port/width/.initial=1.4}
-\ctikzset{tripoles/european or port/height/.initial=.65}
-\ctikzset{tripoles/european or port/reserved/.initial=.6}
-\ctikzset{tripoles/european or port/input height/.initial=.6}
-\ctikzset{tripoles/european xor port/width/.initial=1.4}
-\ctikzset{tripoles/european xor port/height/.initial=.65}
-\ctikzset{tripoles/european xor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xor port/input height/.initial=.6}
-\ctikzset{tripoles/european nand port/width/.initial=1.4}
-\ctikzset{tripoles/european nand port/not height/.initial=.3}
-\ctikzset{tripoles/european nand port/not width/.initial=.8}
-\ctikzset{tripoles/european nand port/height/.initial=.65}
-\ctikzset{tripoles/european nand port/reserved/.initial=.6}
-\ctikzset{tripoles/european nand port/input height/.initial=.6}
-\ctikzset{tripoles/european buffer port/width/.initial=1.4}
-\ctikzset{tripoles/european buffer port/not height/.initial=.3}
-\ctikzset{tripoles/european buffer port/not width/.initial=.8}
-\ctikzset{tripoles/european buffer port/height/.initial=.65}
-\ctikzset{tripoles/european buffer port/reserved/.initial=.6}
-\ctikzset{tripoles/european buffer port/input height/.initial=0}
-\ctikzset{tripoles/european not port/width/.initial=1.4}
-\ctikzset{tripoles/european not port/not height/.initial=.3}
-\ctikzset{tripoles/european not port/not width/.initial=.8}
-\ctikzset{tripoles/european not port/height/.initial=.65}
-\ctikzset{tripoles/european not port/reserved/.initial=.6}
-\ctikzset{tripoles/european not port/input height/.initial=0}
-\ctikzset{tripoles/european xnor port/width/.initial=1.4}
-\ctikzset{tripoles/european xnor port/not height/.initial=.3}
-\ctikzset{tripoles/european xnor port/not width/.initial=.8}
-\ctikzset{tripoles/european xnor port/height/.initial=.65}
-\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xnor port/input height/.initial=.6}
-\ctikzset{tripoles/european nor port/width/.initial=1.4}
-\ctikzset{tripoles/european nor port/not height/.initial=.3}
-\ctikzset{tripoles/european nor port/not width/.initial=.8}
-\ctikzset{tripoles/european nor port/height/.initial=.65}
-\ctikzset{tripoles/european nor port/reserved/.initial=.6}
-\ctikzset{tripoles/european nor port/input height/.initial=.6}
-% variable number of inputs
-\ctikzset{tripoles/european and port/origin/.initial=0.8}
-\ctikzset{tripoles/european and port/inputs/.initial=2}
-\ctikzset{tripoles/european nand port/origin/.initial=0.8}
-\ctikzset{tripoles/european nand port/inputs/.initial=2}
-\ctikzset{tripoles/european or port/origin/.initial=0.8}
-\ctikzset{tripoles/european or port/inputs/.initial=2}
-\ctikzset{tripoles/european nor port/origin/.initial=0.8}
-\ctikzset{tripoles/european nor port/inputs/.initial=2}
-\ctikzset{tripoles/european xor port/origin/.initial=0.8}
-\ctikzset{tripoles/european xor port/inputs/.initial=2}
-\ctikzset{tripoles/european xnor port/origin/.initial=0.8}
-\ctikzset{tripoles/european xnor port/inputs/.initial=2}
-\ctikzset{tripoles/european buffer port/origin/.initial=0.8}
-\ctikzset{tripoles/european buffer port/inputs/.initial=1}%
-\ctikzset{tripoles/european not port/origin/.initial=0.8}
-\ctikzset{tripoles/european not port/inputs/.initial=1}%
-%%% parameters that are not used anymore after multi-input
-%%% gates --- left for compatibility of source code.
-\ctikzset{tripoles/american xor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
-% switches for logic gates
-%
-\pgfkeys{/tikz/number inputs/.initial=0}
-\pgfkeys{/tikz/number inputs/.default=0}
-
-%% flip-flop specific keys (most others are the same as chips)
-
-\ctikzset{multipoles/flipflop/font/.initial=\pgf@circ@font@small}
-\ctikzset{multipoles/flipflop/fontud/.initial=\pgf@circ@font@tiny}
-\ctikzset{multipoles/flipflop/width/.initial=1.2}
-\ctikzset{multipoles/flipflop/pin spacing/.initial=0.6}
-\ctikzset{multipoles/flipflop/clock wedge size/.initial=0.2}
-
-%% muxdemuxes keys
-
-\ctikzset{multipoles/muxdemux/base len/.initial=0.4}
-\ctikzset{multipoles/muxdemux/Lh/.initial=8.0}
-\ctikzset{multipoles/muxdemux/Rh/.initial=6.0}
-\ctikzset{multipoles/muxdemux/w/.initial=3.0}
-\ctikzset{multipoles/muxdemux/inset w/.initial=0.0}
-\ctikzset{multipoles/muxdemux/inset Lh/.initial=0.0}
-\ctikzset{multipoles/muxdemux/inset Rh/.initial=0.0}
-\ctikzset{multipoles/muxdemux/NL/.initial=8}
-\ctikzset{multipoles/muxdemux/NR/.initial=1}
-\ctikzset{multipoles/muxdemux/NB/.initial=3}
-\ctikzset{multipoles/muxdemux/NT/.initial=0}
-\ctikzset{multipoles/muxdemux/square pins/.initial=0}
-%
-% switches for op amps
-% changing input polarity
-%
-\newif\ifpgf@circuit@oa@iplusup\pgf@circuit@oa@iplusupfalse
-\pgfkeys{/tikz/noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
-\ctikzset{noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
-\pgfkeys{/tikz/noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
-\ctikzset{noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
-%
-% changing output polarity (for fully diff objects)
-%
-\newif\ifpgf@circuit@oa@oplusup\pgf@circuit@oa@oplusuptrue
-\pgfkeys{/tikz/noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
-\ctikzset{noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
-\pgfkeys{/tikz/noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
-\ctikzset{noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
-
-% Operational amplifier
-\ctikzset{tripoles/op amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/op amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/op amp/height/.initial=1.4} % Total height
-\ctikzset{tripoles/op amp/input height/.initial=.5} % Input port vertical separation
-\ctikzset{tripoles/op amp/up pos/.initial=.45} % Top and bottom anchor position
-\ctikzset{tripoles/op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Fully differential operational amplifier
-\ctikzset{tripoles/fd op amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/fd op amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/fd op amp/height/.initial=1.4} % Total height
-\ctikzset{tripoles/fd op amp/input height/.initial=.5} % Input port vertical separation
-\ctikzset{tripoles/fd op amp/output height/.initial=.5} % Output port vertical separation
-\ctikzset{tripoles/fd op amp/up pos/.initial=.45} % Top and bottom anchor position
-\ctikzset{tripoles/fd op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-\ctikzset{tripoles/en amp/width/.initial=1.7}
-\ctikzset{tripoles/en amp/port width/.initial=.7}
-\ctikzset{tripoles/en amp/height/.initial=1.6}
-\ctikzset{tripoles/en amp/input height/.initial=.3}
-\ctikzset{tripoles/en amp/up pos/.initial=.45}
-\ctikzset{tripoles/en amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-\ctikzset{tripoles/en amp/font2/.initial=\pgf@circ@font@twelve} % Absolute font size needed!
-\ctikzset{tripoles/en amp/text/.initial={$\mathstrut{\triangleright}\,{\infty}$}}
-\tikzset{
- en amp text/.code = {%
- \ctikzsetvalof{tripoles/en amp/text}{#1}%
- },
- en amp text A/.code = {%
- \ctikzsetvalof{tripoles/en amp/text}{$\mathstrut{\triangleright}\,\mathrm{A}$}%
- },
-}
-
-% Transconductance amplifier
-\ctikzset{tripoles/gm amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/gm amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/gm amp/height/.initial=1.4} % Left side of the trapezoid
-\ctikzset{tripoles/gm amp/height 2/.initial=0.5} % Right side of the trapezoid
-\ctikzset{tripoles/gm amp/input height/.initial=.5} % Input port vertical separation
-\ctikzset{tripoles/gm amp/up pos/.initial=.45} % Top and bottom anchor position
-\ctikzset{tripoles/gm amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Instrumentation amplifier
-\ctikzset{tripoles/inst amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/inst amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/inst amp/height/.initial=1.4} % Left side of the trapezoid
-\ctikzset{tripoles/inst amp/height 2/.initial=0.6} % Right side of the trapezoid
-\ctikzset{tripoles/inst amp/input height/.initial=.5} % Input ports vertical separation
-\ctikzset{tripoles/inst amp/up pos/.initial=.4} % Top and bottom anchor position
-\ctikzset{tripoles/inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
-\ctikzset{tripoles/inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Instrumentation amplifier with differential output
-\ctikzset{tripoles/fd inst amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/fd inst amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/fd inst amp/height/.initial=1.4} % Left side of the trapezoid
-\ctikzset{tripoles/fd inst amp/height 2/.initial=0.6} % Right side of the trapezoid
-\ctikzset{tripoles/fd inst amp/input height/.initial=.5} % Input ports vertical separation
-\ctikzset{tripoles/fd inst amp/output height/.initial=.5} % Output ports vertical separation
-\ctikzset{tripoles/fd inst amp/up pos/.initial=.4} % Top and bottom anchor position
-\ctikzset{tripoles/fd inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
-\ctikzset{tripoles/fd inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Instrumentation amplifier with gain resistor terminals
-\ctikzset{tripoles/inst amp ra/width/.initial=2.4} % Total width
-\ctikzset{tripoles/inst amp ra/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/inst amp ra/height/.initial=2.9} % Left side of the trapezoid
-\ctikzset{tripoles/inst amp ra/height 2/.initial=0.4} % Right side of the trapezoid
-\ctikzset{tripoles/inst amp ra/input height/.initial=.7} % Input ports vertical separation
-\ctikzset{tripoles/inst amp ra/up pos/.initial=.4} % Top and bottom anchor position
-\ctikzset{tripoles/inst amp ra/refv pos/.initial=.7} % Top and bottom voltage reference position
-\ctikzset{tripoles/inst amp ra/ra pos/.initial=.6} % Gain resistor terminals vertical separation
-\ctikzset{tripoles/inst amp ra/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Plain amplifier
-\ctikzset{tripoles/plain amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/plain amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/plain amp/height/.initial=1.4} % Total height
-\ctikzset{tripoles/plain amp/input height/.initial=.5} % Input ports vertical separation
-\ctikzset{tripoles/plain amp/up pos/.initial=.45} % Top and bottom anchor position
-
-% changing fonts and symbols of amplifiers
-\ctikzset{amplifiers/symbol font/.code={%
- \ctikzset{tripoles/inst amp ra/font=#1}%
- \ctikzset{tripoles/fd inst amp/font=#1}%
- \ctikzset{tripoles/inst amp/font=#1}%
- \ctikzset{tripoles/gm amp/font=#1}%
- \ctikzset{tripoles/en amp/font=#1}%
- \ctikzset{tripoles/fd op amp/font=#1}%
- \ctikzset{tripoles/op amp/font=#1}%
-}}
-\ctikzset{amplifiers/plus/.initial={$+$}}
-\ctikzset{amplifiers/minus/.initial={$-$}}
-\tikzset{amp symbol font/.code={%
- \ctikzset{amplifiers/symbol font={#1}}%
- }
-}
-\tikzset{amp plus/.code={\ctikzsetvalof{amplifiers/plus}{#1}}}
-\tikzset{amp minus/.code={\ctikzsetvalof{amplifiers/minus}{#1}}}
-\def\pgf@circ@ampli@plus{\ctikzvalof{amplifiers/plus}}
-\def\pgf@circ@ampli@minus{\ctikzvalof{amplifiers/minus}}
-
-\ctikzset{tripoles/thyristor/height/.initial=1.10}
-\ctikzset{tripoles/thyristor/height 2/.initial=.5}
-\ctikzset{tripoles/thyristor/width/.initial=1.0}
-\ctikzset{tripoles/thyristor/diode height/.initial=.5}
-\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
-\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
-\ctikzset{tripoles/triac/height/.initial=1.1}
-\ctikzset{tripoles/triac/width/.initial=1}
-\ctikzset{tripoles/triac/diode width left/.initial=.3}
-\ctikzset{tripoles/triac/diode width right/.initial=.3}
-
-%% Cute switches
-\ctikzset{bipoles/cuteswitch/shape/.initial={ocirc}}
-\ctikzset{bipoles/cuteswitch/height/.initial=.6}
-\ctikzset{bipoles/cuteswitch/height 2/.initial=.2}
-\ctikzset{bipoles/cuteswitch/width/.initial=.50}
-\ctikzset{bipoles/cuteswitch/thickness/.initial=1}
-
-\ctikzset{tripoles/spdt/width/.initial=.85}
-\ctikzset{tripoles/spdt/height/.initial=.45}
-\ctikzset{tripoles/spdt/margin/.initial=.45}
-
-\ctikzset{tripoles/toggleswitch/height/.initial=.8}
-\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
-\ctikzset{tripoles/toggleswitch/width/.initial=.80}
-
-\ctikzset{tripoles/mixer/width/.initial=0.7}
-\ctikzset{tripoles/adder/width/.initial=0.7}
-\ctikzset{tripoles/circulator/width/.initial=.7}
-\ctikzset{tripoles/oscillator/width/.initial=.7}
-
-
-\ctikzset{tripoles/wilkinson/height/.initial=1.3}
-\ctikzset{tripoles/wilkinson/width/.initial=1.3}
-
-\ctikzset{quadpoles/transformer/inner/.initial=0.4}
-\ctikzset{quadpoles/transformer/width/.initial=1.5}
-\ctikzset{quadpoles/transformer/width1/.initial=.4}
-\ctikzset{quadpoles/transformer/height/.initial=1.5}
-\ctikzset{quadpoles/transformer/height1/.initial=.8}
-\ctikzset{quadpoles/transformer core/inner/.initial=0.4}
-\ctikzset{quadpoles/transformer core/width/.initial=1.5}
-\ctikzset{quadpoles/transformer core/height/.initial=1.5}
-\ctikzset{quadpoles/transformer core/core height/.initial=.5}
-\ctikzset{quadpoles/transformer core/core width/.initial=.05}
-\ctikzset{quadpoles/gyrator/inner/.initial=0.4}
-\ctikzset{quadpoles/gyrator/width/.initial=1.5}
-\ctikzset{quadpoles/gyrator/height/.initial=1.5}
-\ctikzset{quadpoles/fourport/width/.initial=1.3}
-\ctikzset{quadpoles/fourport/height/.initial=1.3}
-\ctikzset{quadpoles/coupler/width/.initial=1.3}
-\ctikzset{quadpoles/coupler/height/.initial=1.3}
-\ctikzset{quadpoles/coupler2/width/.initial=1.3}
-\ctikzset{quadpoles/coupler2/height/.initial=1.3}
-
-\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
-
-\ctikzset{quadpoles style/.is choice}
-\ctikzset{quadpoles style/inward/.code={% default value
- \ctikzset{quadpoles/transformer/inner=0.4}%
- \ctikzset{quadpoles/transformer/width=1.5}%
- \ctikzset{quadpoles/transformer core/inner=0.4}%
- \ctikzset{quadpoles/transformer core/width=1.5}%
- \ctikzset{quadpoles/gyrator/inner=0.4}%
- \ctikzset{quadpoles/gyrator/width=1.5}%
- }%
-}
-\ctikzset{quadpoles style/inline/.code={% now horizontal baffle
- \ctikzset{quadpoles/transformer/inner=1}%
- \ctikzset{quadpoles/transformer/width=0.6}%
- \ctikzset{quadpoles/transformer core/inner=1}%
- \ctikzset{quadpoles/transformer core/width=0.6}%
- \ctikzset{quadpoles/gyrator/inner=1} % FIXME
- \ctikzset{quadpoles/gyrator/width=0.6}%
- }%
-}
-
-%
-% multipoles
-%
-\ctikzset{multipoles/thickness/.initial=2}
-\ctikzset{multipoles/font/.initial=\pgf@circ@font@tiny}
-% DIP (dual in line package) chips
-\ctikzset{multipoles/dipchip/width/.initial=1.2}
-\ctikzset{multipoles/dipchip/num pins/.initial=8}
-\ctikzset{multipoles/dipchip/pin spacing/.initial=0.4}
-\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/dipchip/num pins=#1}}}
-% QFP (quad flat package) chips
-\ctikzset{multipoles/qfpchip/num pins/.initial=8}
-\ctikzset{multipoles/qfpchip/pin spacing/.initial=0.4}
-\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/qfpchip/num pins=#1}}}
-% chip numbers
-\newif\ifpgf@circuit@chip@shownumbers\pgf@circuit@chip@shownumberstrue
-\pgfkeys{/tikz/show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
-\ctikzset{show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
-\pgfkeys{/tikz/hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
-\ctikzset{hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
-\newif\ifpgf@circuit@chip@straightnumbers\pgf@circuit@chip@straightnumberstrue
-\pgfkeys{/tikz/straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
-\ctikzset{straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
-\pgfkeys{/tikz/rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
-\ctikzset{rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
-% external chip pins
-\ctikzset{multipoles/external pins thickness/.initial=1}
-\ctikzset{multipoles/external pins width/.initial=0.2}
-\ctikzset{multipoles/external pad fraction/.initial=0}
-\pgfkeys{/tikz/external pins width/.add code={}{\ctikzset{multipoles/external pins width=#1}}}
-\pgfkeys{/tikz/external pad fraction/.add code={}{\ctikzset{multipoles/external pad fraction=#1}}}
-% topmarks
-\newif\ifpgf@circuit@chip@topmark\pgf@circuit@chip@topmarktrue
-\pgfkeys{/tikz/topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
-\ctikzset{topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
-\pgfkeys{/tikz/no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
-\ctikzset{no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
-
-% rotary switch by Romano
-\ctikzset{multipoles/rotary/thickness/.initial=1}
-\ctikzset{multipoles/rotary/shape/.initial=ocirc}
-\ctikzset{multipoles/rotary/channels/.initial=5}
-\ctikzset{multipoles/rotary/angle/.initial=60}
-\ctikzset{multipoles/rotary/wiper/.initial=20}
-\ctikzset{multipoles/rotary/arrow/.is choice}
-\newif\ifpgf@circ@rotaryarrow\pgf@circ@rotaryarrowfalse
-\newif\ifpgf@circ@rotaryarrow@cw\pgf@circ@rotaryarrow@cwfalse
-\newif\ifpgf@circ@rotaryarrow@ccw\pgf@circ@rotaryarrow@ccwfalse
-\ctikzset{multipoles/rotary/arrow/none/.code={\pgf@circ@rotaryarrowfalse\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwfalse}}
-\ctikzset{multipoles/rotary/arrow/both/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwtrue}}
-\ctikzset{multipoles/rotary/arrow/cw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwfalse}}
-\ctikzset{multipoles/rotary/arrow/ccw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwtrue}}
-
-\tikzset{%
- rotary switch/.style args={#1in#2wiper#3}{%
- shape=rotaryswitch,
- /tikz/circuitikz/multipoles/rotary/channels=#1,
- /tikz/circuitikz/multipoles/rotary/angle=#2,
- /tikz/circuitikz/multipoles/rotary/wiper=#3,
- },
- rotary switch -/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=none,
- },
- rotary switch <-/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=ccw,
- },
- rotary switch ->/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=cw,
- },
- rotary switch <->/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=both,
- },
- % Notice that these should be the same as the initial values of the keys
- rotary switch/.default={5 in 60 wiper 20},
- rotary switch -/.default={5 in 60 wiper 20},
- rotary switch <-/.default={5 in 60 wiper 20},
- rotary switch ->/.default={5 in 60 wiper 20},
- rotary switch <->/.default={5 in 60 wiper 20},
-}
-
-% %Mechanical section
-\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
-\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
-\ctikzset{bipoles/spring/height/.initial=.5}
-\ctikzset{bipoles/spring/width/.initial=.5}
-\ctikzset{bipoles/inerter/height/.initial=.7}
-\ctikzset{bipoles/inerter/width/.initial=.175}
-\ctikzset{bipoles/mass/height/.initial=.55}
-\ctikzset{bipoles/mass/box height/.initial=.4}
-\ctikzset{bipoles/mass/width/.initial=.5}
-
-\ctikzset{bipoles/damper/height/.initial=.35}
-\ctikzset{bipoles/damper/length/.initial=.3}
-\ctikzset{bipoles/damper/width/.initial=.4}
-
-
-\ctikzset{bipole/.is family}
-\ctikzset{bipole/kind/.initial=}
-\ctikzset{bipole/name/.initial=}
-\newif\ifpgf@circuit@bipole@isvoltage
-\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
-\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
-\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
-\newif\ifpgf@circuit@bipole@strokedsymbol
-\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
-\newif\ifpgf@circuit@bipole@iscurrent
-\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
-
-\ctikzset{bipole/voltage/.is family}
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-\newif\ifpgf@circuit@bipole@voltage@below
-\ctikzset{bipole/voltage/position/.is choice}
-\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
-\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
-
-\ctikzset{bipole/voltage/label/unit/.initial=}
-\ctikzset{bipole/voltage/label/name/.initial=}
-
-\ctikzset{bipole/current/.is family}
-\newif\ifpgf@circuit@bipole@current@backward
-\ctikzset{bipole/current/direction/.is choice}
-\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
-\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
-\newif\ifpgf@circuit@bipole@current@before
-\ctikzset{bipole/current/x position/.is choice}
-\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
-\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
-\newif\ifpgf@circuit@bipole@current@below
-\ctikzset{bipole/current/y position/.is choice}
-\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
-\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
-\ctikzset{bipole/current/label/unit/.initial=}
-\ctikzset{bipole/current/label/name/.initial=}
-
-\ctikzset{bipole/flow/.is family}
-\newif\ifpgf@circuit@bipole@flow@backward
-\ctikzset{bipole/flow/direction/.is choice}
-\ctikzset{bipole/flow/direction/forward/.code={\pgf@circuit@bipole@flow@backwardfalse}}
-\ctikzset{bipole/flow/direction/backward/.code={\pgf@circuit@bipole@flow@backwardtrue}}
-\newif\ifpgf@circuit@bipole@flow@before
-\ctikzset{bipole/flow/x position/.is choice}
-\ctikzset{bipole/flow/x position/after/.code={\pgf@circuit@bipole@flow@beforefalse}}
-\ctikzset{bipole/flow/x position/before/.code={\pgf@circuit@bipole@flow@beforetrue}}
-\newif\ifpgf@circuit@bipole@flow@below
-\ctikzset{bipole/flow/y position/.is choice}
-\ctikzset{bipole/flow/y position/above/.code={\pgf@circuit@bipole@flow@belowfalse}}
-\ctikzset{bipole/flow/y position/below/.code={\pgf@circuit@bipole@flow@belowtrue}}
-\ctikzset{bipole/flow/label/unit/.initial=}
-\ctikzset{bipole/flow/label/name/.initial=}
-\ctikzset{flow/distance/.initial = .5}
-\ctikzset{flow/offset/.initial = .2}%distance between flow-arrow and conductor
-
-\ctikzset{bipole/label/.is family}
-\ctikzset{bipole/label/position/.initial=90}
-\ctikzset{bipole/label/unit/.initial=}
-\ctikzset{bipole/label/name/.initial=}
-\ctikzset{bipole/annotation/.is family}
-\ctikzset{bipole/annotation/position/.initial=-90}
-\ctikzset{bipole/annotation/unit/.initial=}
-\ctikzset{bipole/annotation/name/.initial=}
-
-\newif\ifpgf@circuit@europeanresistor
-\ctikzset{resistor/.is choice}
-\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
-\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
-
-\ctikzset{inductor/.is choice}
-\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
-\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
-\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
-
-%
-% Flipping arrows in LED and photodiodes
-%
-\newif\ifpgf@led@fliparrows
-\newif\ifpgf@pd@fliparrows
-\pgf@led@fliparrowsfalse
-\pgf@pd@fliparrowsfalse
-%
-% by default the arrows start (LED) and go (PD) to the anode.
-%
-\ctikzset{led arrows from anode/.code=\pgf@led@fliparrowsfalse}
-\ctikzset{pd arrows to anode/.code=\pgf@pd@fliparrowsfalse}
-%
-% but they can start form the cathode (LED) or go to it (PD)
-%
-\ctikzset{led arrows from cathode/.code=\pgf@led@fliparrowstrue}
-\ctikzset{pd arrows to cathode/.code=\pgf@pd@fliparrowstrue}
-
-\newif\ifpgf@circuit@strokediode
-\newif\ifpgf@circuit@fulldiode
-\pgf@circuit@strokediodefalse
-\pgf@circuit@fulldiodefalse
-
-\ctikzset{diode/.is choice}
-\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
-\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
-\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
-
-\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full}}
-\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty}}
-\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke}}
-
-\ctikzset{thickness/.initial=2}
-\ctikzset{color/.initial=black}
-\pgfkeys{/tikz/color/.add code={}{\ctikzset{color={#1}}}}
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circ@siunitx@res
-
-%
-% voltage and current options
-%
-
-\newif\ifpgf@circuit@europeancurrent
-\newif\ifpgf@circuit@europeanvoltage
-\newif\ifpgf@circuit@bipole@voltage@straight
-
-\ctikzset{voltage/.is choice}
-%
-% straight is expected to be a subset of european, so disable it in american style
-%
-\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse\pgf@circuit@bipole@voltage@straightfalse}}
-\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue\pgf@circuit@bipole@voltage@straightfalse}}
-\ctikzset{voltage/straight/.code = {\pgf@circuit@europeanvoltagetrue\pgf@circuit@bipole@voltage@straighttrue}}
-\ctikzset{voltage/curved/.code = {\pgf@circuit@europeanvoltagetrue\pgf@circuit@bipole@voltage@straighttrue}}
-
-\ctikzset{current/.is choice}
-\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse}
-\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue}
-
-% this is left for backward compatibility...
-\ctikzset{straight/.is choice}
-\ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}}
-\ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}}
-\ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight}
-% never used, removed (RG 2020-05-17)
-% \ctikzset{straightvoltage value/.initial=true}
-% \ctikzset{straightvoltage/.style = {/tikz/circuitikz/straight=true}}
-
-%
-% voltage is used also to set parameters, apart for the /.is choice
-% above. I hope it is ok --- would be a mess otherwise
-%
-
-\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
-\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
-\ctikzset{voltage/bump a/.initial=1.2}
-\ctikzset{voltage/bump b/.initial=1.5}
-\ctikzset{voltage/shift/.initial=0.0} % shift form the cable of voltage symbols
-\ctikzset{voltage shift/.style={voltage/shift=#1}}
-\tikzset{voltage shift/.style={\circuitikzbasekey/voltage/shift=#1}}
-\ctikzset{voltage/european label distance/.initial=1.4}
-\ctikzset{voltage/american label distance/.initial=1.1}
-% shaping the +/- sign, see pgfcircvoltage.tex
-\ctikzset{voltage/american font/.initial={}}
-\ctikzset{voltage/american plus/.initial={$+$}}
-\ctikzset{voltage/american minus/.initial={$-$}}
-
-% special cases for voltage positions
-\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
-\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
-\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
-\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
-\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
-\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
-\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
-%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
-\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
-%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
-%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
-%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
-%
-% american open voltage adjusting
-%
-\newif\ifpgf@adjust@open@voltage\pgf@adjust@open@voltagetrue
-\ctikzset{american open voltage/.is choice}
-\ctikzset{american open voltage/center/.code={\pgf@adjust@open@voltagetrue}}
-\ctikzset{american open voltage/legacy/.code={\pgf@adjust@open@voltagefalse}}
-
-%
-% currents
-%
-\ctikzset{current/distance/.initial = .5}
-
-%
-% voltage and current styles
-%
-
-\tikzset{american currents/.style = {\circuitikzbasekey/current = american}}
-\tikzset{european currents/.style = {\circuitikzbasekey/current = european}}
-\tikzset{american voltages/.style = {\circuitikzbasekey/voltage = american}}
-\tikzset{european voltages/.style = {\circuitikzbasekey/voltage = european}}
-\tikzset{straight voltages/.style = {\circuitikzbasekey/voltage = straight}}
-\tikzset{american resistors/.style = {\circuitikzbasekey/resistor = american}}
-\tikzset{european resistors/.style = {\circuitikzbasekey/resistor = european}}
-
-\newif\ifpgf@circuit@europeangfsurgearrester
-\ctikzset{gas filled surge arrester choice/.is choice}
-\ctikzset{gas filled surge arrester choice/european/.code= {\pgf@circuit@europeangfsurgearrestertrue}}
-\ctikzset{gas filled surge arrester choice/american/.code= {\pgf@circuit@europeangfsurgearresterfalse}}
-
-\tikzset{american gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=american}}
-\tikzset{european gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=european}}
-\tikzset{american inductors/.style = {\circuitikzbasekey/inductor = american}}
-\tikzset{european inductors/.style = {\circuitikzbasekey/inductor = european}}
-\tikzset{cute inductors/.style = {\circuitikzbasekey/inductor = cute}}
-\tikzset{american ports/.style = {\circuitikzbasekey/logic ports = american}}
-\tikzset{european ports/.style = {\circuitikzbasekey/logic ports = european}}
-
-%
-% general styles
-%
-
-\tikzset{european/.style = {european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester set}}
-\tikzset{american/.style = {american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester set}}
-\tikzset{cute/.style = {european currents, european voltages, american resistors, cute inductors, american ports}}
-
-
-% noise sources
-\ctikzset{bipoles/noise sources/fillcolor/.initial=gray!50}
-
-\ctikzset{label/align/.is choice}
-\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
-\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
-\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
-
-% seven segment displays by RGtti
-
-\newif\ifpgf@circ@sevenseg@dot
-\newif\ifpgf@circ@sevenseg@box
-\def\pgf@circ@sevenseg@dotstate{empty}
-\ctikzset{seven seg/.is family}
-\ctikzset{seven seg/dot/.is choice}
-% none means no dot, not space for it. Empty means no dot, but space
-\ctikzset{seven seg/dot/none/.code={\pgf@circ@sevenseg@dotfalse}}
-\ctikzset{seven seg/dot/empty/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{empty}}}
-\ctikzset{seven seg/dot/off/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{off}}}
-\ctikzset{seven seg/dot/on/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{on}}}
-%
-\ctikzset{seven seg/width/.initial=0.4}% relative to \pgf@circ@Rlen
-\ctikzset{seven seg/thickness/.initial=4pt}% segment thickness
-\ctikzset{seven seg/segment sep/.initial=0.2pt}% gap between segments
-\ctikzset{seven seg/box sep/.initial=1pt}% external box gap
-\ctikzset{seven seg/color on/.initial=red}% color for segment "on"
-\ctikzset{seven seg/color off/.initial=gray!20!white} % ...and "off"
-\ctikzset{seven seg/box/.is choice}
-\ctikzset{seven seg/box/off/.code={\pgf@circ@sevenseg@boxfalse}}
-\ctikzset{seven seg/box/on/.code={\pgf@circ@sevenseg@boxtrue}}
-
-\ctikzset{seven seg/bits/.initial=0000000}
-
-\ctikzset{seven seg/value/.code={%
- \edef\@@tmp{#1}%
- \edef\@@n{0} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111110}\fi
- \edef\@@n{1} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110000}\fi
- \edef\@@n{2} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1101101}\fi
- \edef\@@n{3} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111001}\fi
- \edef\@@n{4} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110011}\fi
- \edef\@@n{5} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011011}\fi
- \edef\@@n{6} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011111}\fi
- \edef\@@n{7} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110000}\fi
- \edef\@@n{8} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111111}\fi
- \edef\@@n{9} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111011}\fi
- \edef\@@n{10}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
- \edef\@@n{11}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
- \edef\@@n{12}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
- \edef\@@n{13}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
- \edef\@@n{14}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
- \edef\@@n{15}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
- \edef\@@n{A} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
- \edef\@@n{B} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
- \edef\@@n{C} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
- \edef\@@n{D} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
- \edef\@@n{E} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
- \edef\@@n{F} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
- \edef\@@n{a} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
- \edef\@@n{b} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
- \edef\@@n{c} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
- \edef\@@n{d} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
- \edef\@@n{e} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
- \edef\@@n{f} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
- \edef\@@n{-} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0000001}\fi
-}}
-
-\tikzset{%
- seven segment val/.style args={#1dot#2box#3}{%
- shape=bare7seg,
- /tikz/circuitikz/seven seg/value=#1,
- /tikz/circuitikz/seven seg/dot=#2,
- /tikz/circuitikz/seven seg/box=#3,
- },
- seven segment bits/.style args={#1dot#2box#3}{%
- shape=bare7seg,
- /tikz/circuitikz/seven seg/bits=#1,
- /tikz/circuitikz/seven seg/dot=#2,
- /tikz/circuitikz/seven seg/box=#3,
- },
-}
-
-
-%%%%%%%%%% new
-\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
-
-% Electronic tubes: diodetube, triode, tetrode and pentode
-\ctikzset{tubes/width/.initial=1} % relative width
-\ctikzset{tubes/height/.initial=1.4} % relative height
-\ctikzset{tubes/tube radius/.initial=0.40} % radius of tube circle
-\ctikzset{tubes/anode distance/.initial=0.40} % distance from center
-\ctikzset{tubes/anode width/.initial=0.40} % width of an anode/plate
-\ctikzset{tubes/grid protrusion/.initial=0.25} % distance from center
-\ctikzset{tubes/grid dashes/.initial=5} % number of grid dashes
-\ctikzset{tubes/grid separation/.initial=0.2} % separation between grids
-\ctikzset{tubes/grid shift/.initial=0.0} % y shift grids from center
-\ctikzset{tubes/cathode distance/.initial=0.40} % distance from grid
-\ctikzset{tubes/cathode width/.initial=0.40} % width of an cathode
-\ctikzset{tubes/cathode corners/.initial=0.06} % corners of the cathode wire
-\ctikzset{tubes/cathode right extend/.initial=0.075} % extension at the right side
-\ctikzset{tubes/filament distance/.initial=0.1} % distance from cathode
-\ctikzset{tubes/filament angle/.initial=15} % Angle from centerpoint
-
-\newif\ifpgf@circuit@tubes@filament\pgf@circuit@tubes@filamentfalse
-\pgfkeys{/tikz/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
-\ctikzset{tubes/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
-\newif\ifpgf@circuit@tubes@nocathode\pgf@circuit@tubes@nocathodefalse
-\pgfkeys{/tikz/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
-\ctikzset{tubes/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
-\newif\ifpgf@circuit@tubes@fullcathode\pgf@circuit@tubes@fullcathodefalse
-\pgfkeys{/tikz/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
-\ctikzset{tubes/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
-
-% powerelectronic blocks
-\ctikzset{bipoles/sacdc/width/.initial=.7}
-\ctikzset{bipoles/sdcac/width/.initial=.7}
-\ctikzset{bipoles/tacdc/width/.initial=.7}
-\ctikzset{bipoles/tdcac/width/.initial=.7}
-\ctikzset{quadpoles/gridnode/width/.initial=.7} %not sure if quadpole?
-
-%%%---------- close: tex/pgfcirc.defines
-%%%%%%%%%%% Springe nach tex/pgfcircutils
-%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-\def\pgf@circ@handleSI#1{
- \noexpandarg
- \def\pgf@temp{}
- \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
- \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
-
- \ifnum\pgf@circ@handleSI@unit@len=0
- \pgf@circ@siunitx@resfalse
- \else
- \IfEndWith{#1}{>}{
- \pgf@circ@siunitx@restrue
- \noexpandarg
- \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
- %\typeout{si |#1|}
- }{
- \pgf@circ@siunitx@resfalse
- %\typeout{no si |#1|}
- }
-\fi
-}
-
-\def\pgf@circ@ifkeyempty#1{
- \pgfextra{
- \ctikzset{#1/.get=\pgf@circ@temp}
- \edef\pgf@temp{}
- }
- \ifx\pgf@circ@temp\pgf@temp
- }
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Math routines
-
-\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% useful commands
-
-\ifpgfutil@format@is@latex
- %% flipping text
- \def\ctikzflipx#1{\scalebox{-1}[1]{#1}}
- \def\ctikzflipy#1{\scalebox{1}[-1]{#1}}
- \def\ctikzflipxy#1{\scalebox{-1}[-1]{#1}}
- % text mode overbar
- % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
- \def\ctikztextnot#1{$\overline{\hbox{#1}}\m@th$}
-\else\ifpgfutil@format@is@plain
- % text mode overbar
- % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
- \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
-\else\ifpgfutil@format@is@context
- % text mode overbar
- % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
- \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
-\fi\fi\fi
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% switch to use fpu in reciprocal scale transformations
-%%
-%% this code has been contributed by Schrรถdinger's cat
-%% https://tex.stackexchange.com/a/529159/38080
-%%
-\tikzset{use fpu reciprocal/.code={%
-\def\pgfmathreciprocal@##1{%
- \begingroup
- \pgfkeys{/pgf/fpu=true,/pgf/fpu/output format=fixed}%
- \pgfmathparse{1/##1}%
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
-}}}%
-
-%%%---------- close: tex/pgfcircutils
-
-%%%%%%%%%%% Springe nach tex/pgfcircshapes
-%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Other shapes
-
-%% Nothing
-
-\pgfdeclareshape{emptyshape}{
- \savedanchor{\northeast}{%
- \pgf@x=.5\wd\pgfnodeparttextbox%
- \pgf@y=.5\ht\pgfnodeparttextbox%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
- \anchor{center}{
- \pgfpointorigin
- }
-}
-%
-% Provision for changing opacity. Only expert use, see the manual.
-%
-\ctikzset{poles/open fill opacity/.initial=1.0}% better not touch it
-\tikzset{open poles opacity/.code={%
- \ctikzset{poles/open fill opacity=#1}%
-}}
-\ctikzset{poles/full fill opacity/.initial=1.0}% better not touch it
-\tikzset{full poles opacity/.code={%
- \ctikzset{poles/full fill opacity=#1}%
-}}
-
-%% Full terminal
-
-\pgfdeclareshape{circ}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Empty round terminal
-
-\pgfdeclareshape{ocirc}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
- }
-
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfsetcolor{\ctikzvalof{color}}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{white}
- % ...but override it if the class is defined!
- % note that this element has no class, but will inherit it when used
- % into another component
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Diamond terminal
-
-\pgfdeclareshape{diamondpole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
- \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
- \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
- \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
- % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
- \pgfpointintersectionoflines
- {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
- % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgf@x=\@@switchx\pgf@x
- \pgf@y=\@@switchy\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgftransformrotate{45}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% Diamond terminal, unfilled
-
-\pgfdeclareshape{odiamondpole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
- \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
- \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
- \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
- % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
- \pgfpointintersectionoflines
- {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
- % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgf@x=\@@switchx\pgf@x
- \pgf@y=\@@switchy\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgftransformrotate{45}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\ctikzvalof{color}}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{white}
- % ...but override it if the class is defined!
- % note that this element has no class, but will inherit it when used
- % into another component
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% square terminal, filled
-
-\pgfdeclareshape{squarepole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpointborderrectangle
- {\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-%% square terminal, unfilled
-
-\pgfdeclareshape{osquarepole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpointborderrectangle
- {\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\ctikzvalof{color}}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{white}
- % ...but override it if the class is defined!
- % note that this element has no class, but will inherit it when used
- % into another component
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-% BNC connector
-
-\pgfdeclareshape{bnc}{
- \anchor{center}{
- \pgfpointorigin
- }
- % BNC size is 2.5 times the size of the internal "ocirc"
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgf@y=2.5\pgf@y
- \pgf@x=-\pgf@y
- }
- % center is on the opening
- \anchor{center}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{zero}{ \pgfpointorigin }
- \anchor{hot}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{shield}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- % geo-anchors
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{right}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{left}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
- }
- \behindforegroundpath{
- \pgfextracty{\pgf@circ@res@other}{\northwest}
- \pgf@circ@res@step=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgfsetcolor{\ctikzvalof{color}}
- % external circle
- \pgfscope
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{-2\pgf@circ@res@other}{-2\pgf@circ@res@other}}
- {\pgfpoint{2\pgf@circ@res@other}{2\pgf@circ@res@other}}
- % next the opening to the right
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- {\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@step}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@other}
- \pgfusepath{draw}
- \endpgfscope
- % internal circle
- \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@step}
- \pgf@circ@draworfill
- % and the contact line to the right
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-%% Fill for correct rectangular joins
-
-\pgfdeclareshape{rectjoinfill}{
- \savedanchor{\northeast}{%
- \pgf@x=.5\pgflinewidth%
- \pgf@y=.5\pgflinewidth%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfpathrectanglecorners
- {\pgfpoint{0}{.5\pgflinewidth}}
- {\pgfpoint{0}{-.5\pgflinewidth}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% transistor arrow
-
-\def\pgf@circ@find@linescale{
- % find the scale inverse of the scale factor: line width do not scale
- % with scale=..., transform shape so we have to counteract it.
- \iftikz@fullytransformed % this is true if `transform shape` is active
- % from @Circumscribe https://tex.stackexchange.com/a/474035/38080
- % Note that this trick is not working inside a `spy` environment...
- \pgfgettransformentries{\scaleA}{\scaleB}{\scaleC}{\scaleD}{\whatevs}{\whatevs}%
- \pgfmathsetmacro{\@@factor}{1.0/sqrt(abs(\scaleA*\scaleD-\scaleB*\scaleC))}%
- \else
- \pgfmathsetmacro{\@@factor}{1.0}
- \fi
-}
-
-\pgfdeclareshape{trarrow}{%
- % this arrow is only filled but grows with the linewidth, more or less
- % like currarrow do
- \savedanchor{\northeast}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \pgf@circ@find@linescale
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgfpoint{0.7*\pgf@circ@res@step +0.5*\@@factor*\pgflinewidth}
- {0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
- }
- % The arrow size should be more or less the same of a currarrow, which is
- % both filled and stroke, for backward output compatibility (more or less)
- %
- % angle \beta W is \pgf@circ@Rlen/\ctikzvalof{current arrow scale}
- % |-\__ currarrow as the tip at (W,0)
- % | | and the upper tail at (-0.7*W, 0.8*W)
- % | \__ it then "overshoot" do to the linew width L
- % | \__ xangle \alpha
- % ---0------->
- %
- % \beta = atan(0.7/0.8) \alpha=atan(0.8/1.7)
- % tip overshoot is (L/2)/sin(\alpha) = 1.743*L only in x direction
- % tail overshoot is -(L/2) in x, and (L/2)/sin(\beta) = 0.7539*L in y
- %
- \savedanchor{\northwest}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@circ@find@linescale
- \pgfpoint{-0.7*\pgf@circ@res@step -0.5*\@@factor*\pgflinewidth}
- {0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
- }
- \savedanchor{\tip}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@circ@find@linescale
- \pgfpoint{\pgf@circ@res@step + 1.743*\@@factor*\pgflinewidth}{0pt}
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{tip}{
- \tip
- }
- \anchor{btip}{% this anchor is behind the tip of half a linewidth
- \tip
- \pgf@circ@find@linescale
- \pgf@circ@res@temp=\@@factor\pgflinewidth
- \advance\pgf@x by -.5\pgf@circ@res@temp
- }
- \behindforegroundpath{
- \pgfscope
- \northwest
- \pgf@circ@res@up=\pgf@y
- \pgf@circ@res@left=\pgf@x
- \tip
- \pgf@circ@res@step = \pgf@x
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathclose
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{fill} % just fill
- \endpgfscope
- }
-}
-
-%% Current arrow
-
-\pgfdeclareshape{currarrow}{
- \savedanchor{\northeast}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@x=.5\pgf@circ@res@step
- \pgf@y=\pgf@x%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{tip}{
- \pgfpointorigin
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@x =\pgf@circ@res@step
- }
- \behindforegroundpath{
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
-
- \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{draw,fill}
-
- \endpgfscope
- }
-}
-
-%% Flow arrow
-
-\pgfdeclareshape{flowarrow}{
- \savedanchor{\northeast}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@y=.5\pgf@circ@res@step
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 4
- \pgf@x=\pgf@circ@res@step%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{text}{% text centered above
- \pgfpointorigin
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox}
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{tip}{
- \pgfpointorigin
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@x =\pgf@circ@res@step
- }
- \behindforegroundpath{
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 4
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{draw}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfnode{currarrow}{tip}{}{}{\pgfusepath{fill}}
- \endpgfscope
- }
-}
-
-%% Input arrow
-
-\pgfdeclareshape{inputarrow}{
- \savedanchor{\northeast}{% this is really not northeast, really -northwest
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@y=.5\pgf@circ@res@step
- \pgf@x=1.7\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax\pgf@x=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast\pgf@x=0cm\relax}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@x=0cm\relax}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \savedanchor{\tip}{
- \pgfpointorigin
- }
- \anchor{center}{
- \tip
- }
- \anchor{tip}{
- \tip
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 16
-
- \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{fill}
-
- \endpgfscope
- }
-}
-
-
-%% box
-
-\pgfdeclareshape{box}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@circ@res@step = 0.5\pgf@circ@res@step
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-%% box scaled with blocks
-
-\pgfdeclareshape{blockbox}{
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{blocks/scale}\pgf@circ@Rlen}}
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{blocks/scale}\pgf@circ@Rlen}
- \pgfscope
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@step = 0.5\pgf@circ@res@step
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-% full nodes for wire crossing
-
-\pgfdeclareshape{jump crossing}
-{
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \behindbackgroundpath{
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- % horizontal jumper
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
- \pgfsetbeveljoin
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % vertical, broken path
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0pt}{0.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-\pgfdeclareshape{plain crossing}
-{
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \behindbackgroundpath{
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- % horizontal jumper
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % vertical, broken path
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{0.1\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0pt}{0.1\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-
-%%%---------- close: tex/pgfcircshapes
-%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
-%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Monopoles
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%
-%% Grounds
-%%%%%%%%%%%%%
-
-
-%% Ground symbol
-% #1 -> name
-% #2 -> width
-% #3 -> depth
-% #4 -> code
-\long\def\pgf@circ@declareground#1#2#3#4{
- \pgfdeclareshape{#1}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{grounds}} % class of these components
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\southeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
- \pgf@x=#2\pgf@x
- \pgf@y=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
- \pgf@y=-#3\pgf@y
- }
- \anchor{north}{\pgfpointorigin}
- \anchor{north east}{\southeast\pgf@y=0pt\relax}
- \anchor{east}{\southeast\pgf@y=.5\pgf@y}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\southeast\pgf@y=.5\pgf@y\pgf@x=-\pgf@x}
- \anchor{north west}{\southeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- \anchor{center}{\pgfpointorigin}
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- #4
- \endpgfscope
- }
- }
-}
-
-
-\pgf@circ@declareground{ground}{0.6}{1.6}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-\pgf@circ@declareground{tlground}{0.6}{0.4}{
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-
-\pgf@circ@declareground{rground}{0.6}{1}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{monopoles/rground}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-\pgf@circ@declareground{tground}{0.6}{0}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-}
-
-\pgf@circ@declareground{sground}{0.6}{1.8}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
- \pgfpathclose
- \pgf@circ@draworfill
-}
-
-% noiseless ground
-\pgf@circ@declareground{nground}{0.9}{1.6}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.9\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpatharc{0}{180}{0.9\pgf@circ@res@step}
- \pgfusepath{draw}
-}
-
-% protective ground
-\pgf@circ@declareground{pground}{0.9}{1.8}{
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0pt}{-0.9\pgf@circ@res@step}}{0.9\pgf@circ@res@step}
- \pgf@circ@draworfill
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-% chassis ground
-\pgf@circ@declareground{cground}{1}{2}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-1.00\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{ 0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{ 0.50\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.25\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-% Contributed by @fotesan https://github.com/fotesan
-% european ground
-\pgf@circ@declareground{eground}{1.1}{1.7}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.1\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-\pgf@circ@declareground{eground2}{1.1}{1.7}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.45\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%%%%%%
-%% Power supplies
-%%%%%%%%%%%%%%%%%%
-
-% Vcc
-\pgfdeclareshape{vcc}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{power supplies}} % class of these components
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \saveddimen{\scaledwidth}{% thanks to @Schrรถdinger's cat on https://tex.stackexchange.com/a/506249/38080
- \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
- \pgfmathsetmacro{\gscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
- \pgfmathsetlength{\pgf@x}{(\ctikzvalof{\ctikzclass/scale}*\gscale*\ctikzvalof{monopoles/vcc/width})*\pgf@circ@Rlen}%
- }
- \savedanchor{\northeast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@circ@res@step
- \pgf@y=3\pgf@x%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
- \anchor{south}{\pgfpointorigin}
- \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{center}{\pgfpointorigin}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- \anchor{text}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=2\pgf@circ@res@step
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgfscope
- \edef\pgf@circ@temp{\ctikzvalof{monopoles/vcc/arrow}}\edef\pgf@temp{legacy}
- \ifx\pgf@temp\pgf@circ@temp
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \else
- \pgfsetarrowsend{\pgf@circ@temp}
- \fi
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% Vee
-\pgfdeclareshape{vee}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{power supplies}} % class of these components
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \saveddimen{\scaledwidth}{% thanks to @Schrรถdinger's cat on https://tex.stackexchange.com/a/506249/38080
- \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
- \pgfmathsetmacro{\gscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
- \pgfmathsetlength{\pgf@x}{(\ctikzvalof{\ctikzclass/scale}*\gscale*\ctikzvalof{monopoles/vcc/width})*\pgf@circ@Rlen}%
- }
- \savedanchor{\northeast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@circ@res@step
- \pgf@y=-3\pgf@x%
- }
- \anchor{south}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
- \anchor{north}{\pgfpointorigin}
- \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast}
- \anchor{south west}{\northeast\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast\pgf@y=0pt\relax}
- \anchor{north west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{center}{\pgfpointorigin}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- \anchor{text}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=-2\pgf@circ@res@step
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
-
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgfscope
- \edef\pgf@circ@temp{\ctikzvalof{monopoles/vee/arrow}}\edef\pgf@temp{legacy}
- \ifx\pgf@temp\pgf@circ@temp
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \else
- \pgfsetarrowsend{\pgf@circ@temp}
- \fi
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-%%%%%%%%%%%%%%%%
-%% RF elements
-%%%%%%%%%%%%%%%%
-
-% Legacy tlinestub
-% Contributed by Leonardo Azzinnari
-\pgfdeclareshape{tlinestub}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\northeast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
- \pgf@x=1.2\pgf@circ@res@step
- \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
- \pgf@y=.2\pgf@circ@res@step%
- }
- % the center is on the left side of the shape for facility of usage
- \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0.5\pgf@x\relax}
- \anchor{west}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=0cm\relax}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@x=0cm\pgf@y=-\pgf@y}
- \anchor{center}{\pgfpointorigin}
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
-
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
- \pgf@circ@res@step=0.6\pgf@circ@scaled@Rlen
-
- \pgfscope\begin{pgftransparencygroup}
- \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgf@circ@maybefill
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \end{pgftransparencygroup} \endpgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- }
-}
-
-%% New antennas without tails
-
-% main body of antennas
-\def\pgf@circ@antennabody{%
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{2\pgf@circ@res@step}}
- \pgfsetbeveljoin
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{2\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-% Waves for the antennas.
-\def\pgf@circ@antennawaves{%
- \pgfscope
- % define a triangle for clipping the waves
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathclose
- \pgfusepath{clip}
- % ...and build the waves as clipped circles
- \pgf@circ@count@a=8\pgf@circ@res@other=0.5\pgf@circ@res@step
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>2
- \pgfpathcircle{\pgfpoint{0pt}{\pgf@circ@res@step}}{\the\pgf@circ@count@a*\pgf@circ@res@other}
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% additional shape with the waves
-\pgfdeclareshape{waves}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0pt}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
- \anchor{bottom}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{north east}{\northeast}
- \anchor{east}{\northeast\pgf@y=0pt}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@step=0.5\pgf@circ@res@step
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfscope
- % define a triangle for clipping the waves
- \pgfpathmoveto{\pgfpoint{-2\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfpathclose
- \pgfusepath{clip}
- % ...and build the waves as clipped circles
- \c@pgf@counta=8\pgf@circ@res@other=0.5\pgf@circ@res@step
- \pgfmathloop%
- \ifnum\c@pgf@counta>1
- \pgfpathcircle{\pgfpoint{-2\pgf@circ@res@step}{0pt}}{\the\c@pgf@counta*\pgf@circ@res@other}
- \advance\c@pgf@counta-1\relax%
- \repeatpgfmathloop
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% the three types of antennas: simple, TX, RX. Notice that you can flip them...
-
-\pgfdeclareshape{bareantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=2\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{bottom}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{south}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@antennabody
- }
-}
-
-\pgfdeclareshape{bareTXantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=2\pgf@circ@res@step
- }
- \savedanchor{\savedwaves}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=4.2\pgf@circ@res@step
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
- \pgf@x=\dimexpr-\pgf@x-\wd\pgfnodeparttextbox\relax
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{waves}{\savedwaves}
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{bottom}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{south}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@antennabody
- \pgf@circ@antennawaves
- }
-}
-
-\pgfdeclareshape{bareRXantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=2\pgf@circ@res@step
- }
- \savedanchor{\savedwaves}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=-4.2\pgf@circ@res@step
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{waves}{\savedwaves}
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{bottom}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{south}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@antennabody
- \pgftransformxshift{-5.2\pgf@circ@res@step}
- \pgf@circ@antennawaves
- }
-}
-
-% Microstrip monopoles
-
-\pgfdeclareshape{mslstub}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\southeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
- \pgf@y=-.5\pgf@y
- }
- \savedanchor{\northwest}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- }
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{east}{\southeast\pgf@y=0pt\relax}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
- \anchor{north west}{\northwest}
- %
- \anchor{center}{\northwest\pgf@y=0pt\relax}
- \anchor{left}{\northwest\pgf@y=0pt\relax}
- \anchor{right}{\southeast\pgf@y=0pt\relax}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- \behindbackgroundpath{
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@right}{\southeast}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@down}{\southeast}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{msrstub}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\southeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt\relax
- }
- \savedanchor{\northwest}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- \pgf@y=\ctikzvalof{monopoles/msrstub/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- }
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{east}{\southeast\pgf@y=0pt\relax}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
- \anchor{north west}{\northwest}
- %
- \anchor{center}{\pgfpointorigin}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- \behindbackgroundpath{
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@right}{\southeast}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@down}{\southeast}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointpolar{135}{\pgf@circ@res@step}}
- \pgfpatharc{135}{45}{\pgf@circ@res@step}
- \pgfpathlineto{\pgfpointpolar{45}{\pgf@circ@res@up}}
- \pgfpatharc{45}{135}{\pgf@circ@res@up}
- \pgfclosepath
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{msport}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\southeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
- \pgf@y=-.5\pgf@y
- }
- \savedanchor{\northwest}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- }
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{east}{\southeast\pgf@y=0pt\relax}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
- \anchor{north west}{\northwest}
- %
- \anchor{center}{\northwest\pgf@y=0pt\relax}
- \anchor{left}{\northwest\pgf@y=0pt\relax}
- \anchor{right}{\southeast\pgf@y=0pt\relax}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr-.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- }
- \behindbackgroundpath{
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@right}{\southeast}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@down}{\southeast}
- \pgfmathsetlength{\pgf@circ@res@step}{0.5*\pgf@circ@res@up}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-% Legacy antennas (with tails)
-\def\pgf@circ@shift@antenna@xy#1#2{%
- \pgf@y=\dimexpr\pgf@y+#2\pgf@circ@res@step
- \pgf@x=\dimexpr\pgf@x+#1\pgf@circ@res@step
-\relax}
-
-% Legacy antenna
-\pgfdeclareshape{antenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=4\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{2}}
- \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{0}{3}\relax}
- \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{4}\relax}
- \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{3}}
- \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
- \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
- \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{0}{4}}
- \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{4}}
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
-
- \pgftransformxshift{ -4\pgf@circ@res@step }
-
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
-}
-
-% Legacy TX antenna
-\pgfdeclareshape{txantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=4\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
- \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
- \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
- \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
- \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{4}{2}}
- \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
- \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
- \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
- % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
-}
-
-% Legacy RX antenna
-\pgfdeclareshape{rxantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=4\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
- \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
- \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
- \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
- \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{4}{2}}
- \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
- \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
- \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
- % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- }
-}
-
-% Legacy match
-\pgfdeclareshape{match}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\northeast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@scaled@Rlen
- \pgf@x=2\pgf@circ@res@step
- \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@circ@res@step%
- }
- % the center is on the left side of the shape for facility of usage
- \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=0pt\pgf@x=0.5\pgf@x\relax}
- \anchor{west}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=0cm\relax}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\pgfpointorigin}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@scaled@Rlen
- \pgf@x=1.5\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \pgf@y=-1.5\ht\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@scaled@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
- \pgfusepath{fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \endpgfscope
- }
-}
-
-%%%---------- close: tex/pgfcircmonopoles
-%%%%%%%%%%% Springe nach tex/pgfcircbipoles
-%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%% Generic macro for defining a bipole shape
-% #1 - additional anchors
-% #2 - lower y-size of the bipole (from the center).
-% #3 - #shape is the name of the shape
-% #4 - upper y-size of the bipole (from the center)
-% #5 - width of the bipole
-% #6 - macros drawing the bipole
-%
-\long\def\pgfcircdeclarebipole{%
- \pgfcircdeclarebipolescaled{default}}
-
-%% Generic macro for defining a bipole shape
-% #1 - scale factor
-% #2 - additional anchors
-% #3 - lower y-size of the bipole (from the center).
-% #4 - #shape is the name of the shape
-% #5 - upper y-size of the bipole (from the center)
-% #6 - width of the bipole
-% #7 - macros drawing the bipole
-%
-\long\def\pgfcircdeclarebipolescaled#1#2#3#4#5#6#7{
- \pgfdeclareshape{#4shape}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{#1}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\northeast}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@y=#5\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=#6\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\northeastborder}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@y=#5\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=#6\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwestborder}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@y=-#3\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=-#6\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwest}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@y=-#3\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-#6\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\centerpoint}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@circ@res@down=-#3\pgf@circ@scaled@Rlen
- \pgf@circ@res@up=#5\pgf@circ@scaled@Rlen
- \pgfpointorigin
- \pgf@y=\pgf@circ@res@up
- \advance\pgf@y by\pgf@circ@res@down
- \pgf@y=.5\pgf@y
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{n}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{north east}{
- \northeast
- }
- \anchor{north west}{
- \northeast
- \pgf@x=-\pgf@x
- }
- \anchor{ne}{
- \northeast
- }
- \anchor{nw}{
- \northeast
- \pgf@x=-\pgf@x
- }
- \anchor{e}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{s}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{south east}{
- \southwest
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \southwest
- }
- \anchor{se}{
- \southwest
- \pgf@x=-\pgf@x
- }
- \anchor{sw}{
- \southwest
- }
- \anchor{w}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{north}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{east}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{south}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{west}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{right}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{above}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{left}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{below}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{a}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{b}{
- \southwest
- \pgf@y=0cm
- }
- \savedanchor{\textanchor}{%
- \pgf@y=\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \anchor{text}{
- \textanchor
- }
- \anchorborder{%
- \ifpgf@circuit@bipole@inverted
- \pgf@circ@res@left=-\pgf@x
- \pgf@circ@res@right=-\pgf@y
- \else
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@right=\pgf@y
- \fi
- \ifdim\pgf@circ@res@right>0cm
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\northeastborder}
- \else
- \southwestborder
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@right}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
- \fi
- }
-
- #2
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@zero = 0cm
- \pgf@circ@res@left = -\pgf@x
- \pgf@circ@res@right = \pgf@x
- \southwest
- \pgf@circ@res@down = \pgf@y
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- #7
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- }
- }
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Standard bipole shapes declarations
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%
-% Resistive components
-%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% Short circuit
-
-%%% NOTICE that the short is really NOT drawn; we trust the fact that its
-%%% natural length is zero.
-\pgfcircdeclarebipole
-{}
-{0}
-{short}
-{0}
-{0}
-{ }
-
-%% Open circuit
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/open/height}}
-{open}
-{\ctikzvalof{bipoles/open/height}}
-{\ctikzvalof{bipoles/open/width}}
-{ }
-
-% multiwire(s)
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/multiwire/height}}
-{multiwire}
-{\ctikzvalof{bipoles/multiwire/height}}
-{\ctikzvalof{bipoles/multiwire/width}}
-{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/multiwire/height}}
-{bmultiwire}
-{\ctikzvalof{bipoles/multiwire/height}}
-{\ctikzvalof{bipoles/multiwire/width}}
-{
- \pgf@circ@res@other=\ctikzvalof{bipoles/multiwire/spacing}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/multiwire/height}}
-{tmultiwire}
-{\ctikzvalof{bipoles/multiwire/height}}
-{\ctikzvalof{bipoles/multiwire/width}}
-{
- \pgf@circ@res@other=\ctikzvalof{bipoles/multiwire/spacing}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+2\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-}
-
-%
-%
-%% Generic bipole - used as resistor by some (bleah)
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/generic/height}}
-{generic}
-{\ctikzvalof{bipoles/generic/height}}
-{\ctikzvalof{bipoles/generic/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-
-%
-% generic crossed, suggested by Radvรกnyi Patrik Tamรกs <patrikradvanyi@gmail.com>
-% inherit "generic" properties
-%
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/generic/height}}
-{xgeneric}
-{\ctikzvalof{bipoles/generic/height}}
-{\ctikzvalof{bipoles/generic/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- % cross it
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-%% Generic empty tunable
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/tgeneric/height}}
-{tgeneric}
-{\ctikzvalof{bipoles/tgeneric/height}}
-{\ctikzvalof{bipoles/tgeneric/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Generic asymmetric bipole
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/ageneric/height}}
-{ageneric}
-{\ctikzvalof{bipoles/ageneric/height}}
-{\ctikzvalof{bipoles/ageneric/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-%% Memristor
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/memristor/height}}
-{memristor}
-{\ctikzvalof{bipoles/memristor/height}}
-{\ctikzvalof{bipoles/memristor/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-%% Photoresistor
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/photoresistor/height 2}}
-{photoresistor}
-{\ctikzvalof{bipoles/photoresistor/height}}
-{\ctikzvalof{bipoles/photoresistor/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Thermistor
-\pgfcircdeclarebipolescaled{resistors}
-{{% anchor for labelling the type of dependency
- \anchor{label}{%
- \southwest
- \pgf@x=0.4\pgf@x
- \pgf@y=1.2\pgf@y
- }%
-}}
-{\ctikzvalof{bipoles/thermistor/height}}
-{thermistor}
-{\ctikzvalof{bipoles/thermistor/height}}
-{\ctikzvalof{bipoles/thermistor/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- %\pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- %\endpgfscope
-}
-
-%% Thermistor PTC
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/thermistorptc/height 2}}
-{thermistorptc}
-{\ctikzvalof{bipoles/thermistorptc/height}}
-{\ctikzvalof{bipoles/thermistorptc/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Thermistor NTC
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/thermistorntc/height 2}}
-{thermistorntc}
-{\ctikzvalof{bipoles/thermistorntc/height}}
-{\ctikzvalof{bipoles/thermistorntc/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Generic tunable
-\pgfcircdeclarebipolescaled{resistors}
-{
- \savedanchor{\wiper}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@ya=\ctikzvalof{bipoles/generic potentiometer/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@ya
- \pgf@xa=\ctikzvalof{bipoles/generic potentiometer/width}\pgf@circ@scaled@Rlen
- \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/generic potentiometer/wiper pos}-0.5)*\pgf@xa}
- }
- \anchor{wiper}{\wiper}
- \anchor{W}{\wiper}
-}
-{\ctikzvalof{bipoles/generic potentiometer/height 2}}
-{genericpotentiometer}
-{\ctikzvalof{bipoles/generic potentiometer/height}}
-{\ctikzvalof{bipoles/generic potentiometer/width}}
-{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
- \pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \pgfextractx{\pgf@circ@res@other}{\wiper}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Zig zag resistores
-\def\pgf@circ@zigzag#1{%
- \divide \pgf@circ@res@step by \numexpr4*\zigs\relax
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \pgf@circ@count@a=\zigs\relax
- % first half zig
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}}
- \pgfmathloop%
- \advance\pgf@circ@count@a by -1\relax% Loop zigs -1 times
- \ifnum\pgf@circ@count@a>0
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}}
- \repeatpgfmathloop%
- % last zig and a half
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-}
-
-%% Resistor
-\pgfcircdeclarebipolescaled{resistors}
-{
-\savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
-}
-{\ctikzvalof{bipoles/resistor/height}}
-{resistor}
-{\ctikzvalof{bipoles/resistor/height}}
-{\ctikzvalof{bipoles/resistor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \pgf@circ@zigzag{1}
-}
-
-
-%% Variable resistor
-\pgfcircdeclarebipolescaled{resistors}
-{
-\savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
-}
-{\ctikzvalof{bipoles/vresistor/height}}
-{vresistor}
-{\ctikzvalof{bipoles/vresistor/height}}
-{\ctikzvalof{bipoles/vresistor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/vresistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \pgf@circ@zigzag{.5}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Potentiometer
-\pgfcircdeclarebipolescaled{resistors}
-{
- \savedanchor{\wiper}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@ya=\ctikzvalof{bipoles/potentiometer/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@ya
- \pgf@xa=\ctikzvalof{bipoles/potentiometer/width}\pgf@circ@scaled@Rlen
- \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/potentiometer/wiper pos}-0.5)*\pgf@xa}
- }
- \anchor{wiper}{\wiper}
- \anchor{W}{\wiper}
- \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
-}
-{\ctikzvalof{bipoles/potentiometer/height 2}}
-{potentiometer}
-{\ctikzvalof{bipoles/potentiometer/height}}
-{\ctikzvalof{bipoles/potentiometer/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/potentiometer/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \pgf@circ@zigzag{1}
-
- \pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \pgfextractx{\pgf@circ@res@other}{\wiper}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Resistive sensor
-\pgfcircdeclarebipolescaled{resistors}
-{% anchor for labelling the type of dependency
- \anchor{label}{\southwest\pgf@x=0.4\pgf@x}%
- \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
-}
-{\ctikzvalof{bipoles/resistivesens/height}}
-{resistivesens}
-{\ctikzvalof{bipoles/resistivesens/height}}
-{\ctikzvalof{bipoles/resistivesens/width}}
-{%
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistivesens/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \pgf@circ@zigzag{.5}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-.9\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%%%%%%%%%%%%%%
-%% Capacitors
-%%%%%%%%%%%%%
-
-%% Plain Capacitor
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/capacitor/height}}
-{capacitor}
-{\ctikzvalof{bipoles/capacitor/height}}
-{\ctikzvalof{bipoles/capacitor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
-}
-
-%% Capacitive sensor
-\pgfcircdeclarebipolescaled{capacitors}
-{
- \anchor{label}{\southwest\pgf@x=2.6\pgf@x\pgf@y=1.2\pgf@y}%
-}
-{\ctikzvalof{bipoles/capacitor/height}}
-{capacitivesens}
-{\ctikzvalof{bipoles/capacitor/height}}
-{\ctikzvalof{bipoles/capacitor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{2.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-2.6\pgf@circ@res@right}{1.2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-4.4\pgf@circ@res@right}{1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Polar Capacitor (DEPRECATED)
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/pcapacitor/height}}
-{polarcapacitor}
-{\ctikzvalof{bipoles/pcapacitor/height}}
-{\ctikzvalof{bipoles/pcapacitor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgftransformrotate{-90}
- \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-%% Curved capacitor
-% see https://tex.stackexchange.com/questions/509594/polar-capacitor-orientation-in-circuitikz-seems-wrong
-% for a rationale
-%
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/ccapacitor/height}}
-{ccapacitor}
-{\ctikzvalof{bipoles/ccapacitor/height}}
-{\ctikzvalof{bipoles/ccapacitor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+ \ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgftransformrotate{-90}
- \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}}
- \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% Electrolytic Capacitor
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/ecapacitor/height}}
-{ecapacitor}
-{\ctikzvalof{bipoles/ecapacitor/height}}
-{\ctikzvalof{bipoles/ecapacitor/width}}
-{
- \pgfsetrectcap
- % % % Draw plus pole
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
- % % Draw minus pole
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfsetfillcolor{\ctikzvalof{color}}
- \pgfusepath{draw,fill}
- \pgfsetfillcolor{\ctikzvalof{color}}
- % % plus pole annotation
- \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
- {\ctikzvalof{bipoles/ecapacitor/font} $+$}
-}
-
-%% Variable Capacitor
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/vcapacitor/height}}
-{vcapacitor}
-{\ctikzvalof{bipoles/vcapacitor/height}}
-{\ctikzvalof{bipoles/vcapacitor/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfusepath{draw}
-}
-
-
-%% Piezoelectric Element
-
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/piezoelectric/height}}
-{piezoelectric}
-{\ctikzvalof{bipoles/piezoelectric/height}}
-{\ctikzvalof{bipoles/piezoelectric/width}}
-{
- % \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
- % \divide \pgf@circ@res@step by 5
-
- %% Outer markings
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %% Inner Box
- \pgf@circ@res@step = \pgf@circ@res@right \divide \pgf@circ@res@step by 10
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners
- {\pgfpoint{\pgf@circ@res@left+4*\pgf@circ@res@step}{\pgf@circ@res@up-\pgf@circ@res@step}}
- {\pgfpoint{\pgf@circ@res@right-4*\pgf@circ@res@step}{\pgf@circ@res@down+\pgf@circ@res@step}}
- \pgf@circ@draworfill
- \endpgfscope
-}
-
-%%%%%%%%%%%%%%%
-%% Inductors
-%%%%%%%%%%%%%%%
-
-%% cute inductor
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
- \ctikzvalof{bipoles/cuteinductor/height} :% even
- -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
-{cuteinductor}
-{\ctikzvalof{bipoles/cuteinductor/height}}
-{\ctikzvalof{bipoles/cuteinductor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% cute inductive sensor
-\pgfcircdeclarebipolescaled{inductors}
-{% anchor for labelling the type of dependency
- \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}%
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
- \ctikzvalof{bipoles/cuteinductor/height} :% even
- -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
-{scuteinductor}
-{\ctikzvalof{bipoles/cuteinductor/height}}
-{\ctikzvalof{bipoles/cuteinductor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% cute choke
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
- \ctikzvalof{bipoles/cuteinductor/height} :% even
- -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/cutechoke/lower coil height}}
-{cutechoke}
-{\ctikzvalof{bipoles/cutechoke/height}}
-{\ctikzvalof{bipoles/cutechoke/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cutechoke/coil aspect}*\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen/(\ctikzvalof{bipoles/cutechoke/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cutechoke/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cutechoke/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cutechoke/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
- \pgfusepath{stroke}
-
- \ifpgf@circuit@bipole@twolineschoke
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
- \pgfusepath{stroke}
- \fi
-}
-
-%% variable cute inductor
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
- \ctikzvalof{bipoles/cuteinductor/height} :% even
- -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}
-{vcuteinductor}
-{\ctikzvalof{bipoles/vcuteinductor/height}}
-{\ctikzvalof{bipoles/vcuteinductor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% american inductor
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?%
- 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even
- 0) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/americaninductor/height 2}}
-{americaninductor}
-{\ctikzvalof{bipoles/americaninductor/height}}
-{\ctikzvalof{bipoles/americaninductor/width}}
-{
- \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-
-%% american inductive sensor
-\pgfcircdeclarebipolescaled{inductors}
-{% anchor for labelling the type of dependency
- \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}%
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?%
- 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even
- 0) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/americaninductor/height 2}}
-{samericaninductor}
-{\ctikzvalof{bipoles/americaninductor/height}}
-{\ctikzvalof{bipoles/americaninductor/width}}
-{
- \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% variable american inductor
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/vamericaninductor/coils},2) ?%
- 2*\ctikzvalof{bipoles/vamericaninductor/coil height} :% even
- 0) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/vamericaninductor/height 2}}
-{vamericaninductor}
-{\ctikzvalof{bipoles/vamericaninductor/height}}
-{\ctikzvalof{bipoles/vamericaninductor/width}}
-{
- \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@scaled@Rlen
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/vamericaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Generic bipole, filled - used as inductor by some
-\pgfcircdeclarebipolescaled{inductors}
-{
- \anchor{midtap}{\northeast\pgf@x=0pt\relax}
-}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{fullgeneric}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{\ctikzvalof{bipoles/fullgeneric/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfusepath{draw,fill}
-}
-
-%% Generic sensor, filled - used as inductive sensor by some
-\pgfcircdeclarebipolescaled{inductors}
-{% anchor for labelling the type of dependency
- \anchor{label}{\southwest\pgf@x=0.4\pgf@x\pgf@y=2\pgf@y}%
- \anchor{midtap}{\northeast\pgf@x=0pt\relax}
-}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{sfullgeneric}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{\ctikzvalof{bipoles/fullgeneric/width}}
-{
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw,fill}
- %\pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{2\pgf@circ@res@down}}
- \pgfusepath{draw}
- %\endpgfscope
-}
-
-%% Generic full tunable
-\pgfcircdeclarebipolescaled{inductors}
-{
- \anchor{midtap}{\northeast\pgf@x=0pt\relax}
-}
-{\ctikzvalof{bipoles/tfullgeneric/height}}
-{tfullgeneric}
-{\ctikzvalof{bipoles/tfullgeneric/height}}
-{\ctikzvalof{bipoles/tfullgeneric/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw,fill}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%%%%%%%%%%%
-%% Battery
-%%%%%%%%%%%
-
-%% Battery
-\pgfcircdeclarebipolescaled{batteries}
-{}
-{\ctikzvalof{bipoles/battery/height}}
-{battery}
-{\ctikzvalof{bipoles/battery/height}}
-{\ctikzvalof{bipoles/battery/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 6
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \ifpgf@circ@fixbatteries
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-}
-
-
-%% Battery 1 % poles with equl thickness
-
-\pgfcircdeclarebipolescaled{batteries}
-{}
-{\ctikzvalof{bipoles/battery1/height}}
-{battery1}
-{\ctikzvalof{bipoles/battery1/height}}
-{\ctikzvalof{bipoles/battery1/width}}
-{
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \ifpgf@circ@fixbatteries
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-}
-
-%% Battery 2 % negative pole thicker
-
-\pgfcircdeclarebipolescaled{batteries}
-{}
-{\ctikzvalof{bipoles/battery2/height}}
-{battery2}
-{\ctikzvalof{bipoles/battery2/height}}
-{\ctikzvalof{bipoles/battery2/width}}
-{
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \ifpgf@circ@fixbatteries
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{3\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{3\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%
-%% Round and diamond sources
-%%%%%%%%%%%
-
-%% Independent voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsource/height}}
-{vsource}
-{\ctikzvalof{bipoles/vsource/height}}
-{\ctikzvalof{bipoles/vsource/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-%% To change the internal symbols of the voltage source american style
-\ctikzset{bipoles/vsourceam/inner plus/.initial={$+$}}
-\ctikzset{bipoles/vsourceam/inner minus/.initial={$-$}}
-%% Independent voltage source - American style
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsourceam/height}}
-{vsourceAM}
-{\ctikzvalof{bipoles/vsourceam/height}}
-{\ctikzvalof{bipoles/vsourceam/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfsetcolor{\ctikzvalof{color}}
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner plus}}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner minus}}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner minus}}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner plus}}
- \fi
-}
-
-%% Independent sinusoidal voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsourcesin/height}}
-{vsourcesin}
-{\ctikzvalof{bipoles/vsourcesin/height}}
-{\ctikzvalof{bipoles/vsourcesin/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Square Voltage source - contributed by Alistair Kwan
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsourcesquare/height}}
-{vsourcesquare}
-{\ctikzvalof{bipoles/vsourcesquare/height}}
-{\ctikzvalof{bipoles/vsourcesquare/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Triangle Voltage source - contributed by Ralf Farkas
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsourcetri/height}}
-{vsourcetri}
-{\ctikzvalof{bipoles/vsourcetri/height}}
-{\ctikzvalof{bipoles/vsourcetri/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% PV Source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/pvsource/height}}
-{pvsource}
-{\ctikzvalof{bipoles/pvsource/height}}
-{\ctikzvalof{bipoles/pvsource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %Arrow Part
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty Source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/esource/height}}
-{esource}
-{\ctikzvalof{bipoles/esource/height}}
-{\ctikzvalof{bipoles/esource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-}
-
-%% DC Current Source with open shape
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/dcisource/height}}
-{dcisource}
-{\ctikzvalof{bipoles/dcisource/height}}
-{\ctikzvalof{bipoles/dcisource/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@maybefill
- \edef\@@angle{\ctikzvalof{bipoles/dcisource/angle}}
- \pgfpathmoveto{\pgfpointpolar{\@@angle}{\pgf@circ@res@up}}
- \pgfpatharc{\@@angle}{-\@@angle}{\pgf@circ@res@up}
- \pgfpathmoveto{\pgfpointpolar{180-\@@angle}{\pgf@circ@res@up}}
- \pgfpatharc{180-\@@angle}{180+\@@angle}{\pgf@circ@res@up}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% DC-Voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/dcvsource/height}}
-{dcvsource}
-{\ctikzvalof{bipoles/dcvsource/height}}
-{\ctikzvalof{bipoles/dcvsource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
- \pgfusepath{draw}
-}
-
-%% Independent current source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isource}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
-}
-
-%% Independent double oo source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/oosource/height}}
-{oosource}
-{\ctikzvalof{bipoles/oosource/height}}
-{\ctikzvalof{bipoles/oosource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
- \pgf@circ@maybefill
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
- \pgf@circ@draworfill
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
- \pgfusepath{draw}
-}
-
-% % % winding symbols
-% triangle
-\def\pgf@circ@delta#1{
- \pgfscope
- \pgftransformscale{-.01\pgf@circ@res@left*#1}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \pgftransformrotate{-\pgfcircmathresult}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0}{.866\pgf@circ@res@up}}
- \pgfpathclose
- \pgfusepath{stroke}
- \endpgfscope
-}
-
-% star
-\def\pgf@circ@wye#1{
- \pgfscope
- \pgftransformscale{-.015\pgf@circ@res@left*#1}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \pgftransformrotate{-\pgfcircmathresult}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpointorigin}
- \pgfpathlineto{\pgfpointpolar{-30}{\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpointpolar{-150}{\pgf@circ@res@down}}
- \pgfusepath{stroke}
- \endpgfscope
-}
-
-% zigzag
-\def\pgf@circ@zig#1{
- \pgfscope
- \pgftransformscale{-.015\pgf@circ@res@left*#1}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \pgftransformrotate{-\pgfcircmathresult}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpointpolar{90}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{60}{\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpointpolar{210}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{0}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpointpolar{330}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{-60}{\pgf@circ@res@up}}
- \pgfusepath{stroke}
- \endpgfscope
-}
-
-% % % % round three-phase transformer
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/oosourcetrans/height}}
-{oosourcetrans}
-{\ctikzvalof{bipoles/oosourcetrans/height}}
-{\ctikzvalof{bipoles/oosourcetrans/width}}
-{
-
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
- \pgf@circ@maybefill
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@right}{0}}
- {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
- \pgf@circ@draworfill
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
- \pgfusepath{draw}
-
-
-% % % % draw inner symbols
-
- %%primary winding
- \ifpgf@circ@prim@delta
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
- \pgf@circ@delta{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@prim@wye
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
- \pgf@circ@wye{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@prim@zig
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
- \pgf@circ@zig{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
- \endpgfscope
- \fi\fi\fi
-
- %%secondary winding
- \ifpgf@circ@sec@delta
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
- \pgf@circ@delta{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@sec@wye
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
- \pgf@circ@wye{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@sec@zig
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
- \pgf@circ@zig{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
- \endpgfscope
- \fi\fi\fi
-}
-
-
-% % % % ooosource for three phase transformer
-\pgfcircdeclarebipolescaled{sources}
-{
- \anchor{right}{
- \northeast
- \pgf@y=0pt
- \pgfmathparse{
- \ctikzvalof{bipoles/ooosource/circleoffset}* sin(30) +
- %%the sqrt must be > 0, the circles have to intersect
- sqrt(
- pow(\ctikzvalof{bipoles/ooosource/circlesize},2) -
- pow(\ctikzvalof{bipoles/ooosource/circleoffset}*cos(30),2)
- )
- }
- \pgf@x=\pgfmathresult\pgf@x
- }
- \anchor{east}{
- \northeast
- \pgf@y=0pt
- }
- \savedanchor{\centerprim}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen
- \pgf@y=0pt
- \pgf@x=.5\pgf@circ@scaled@Rlen
- }
- \anchor{centerprim}{
- \centerprim
- }
- \savedanchor{\centersec}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen
- \pgfpointpolar{60}{.5\pgf@circ@scaled@Rlen}
- \pgf@y=-\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{centersec}{
- \centersec
- }
- \savedanchor{\centertert}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen
- \pgfpointpolar{60}{.5\pgf@circ@scaled@Rlen}
- \pgf@y=\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{centertert}{
- \centertert
- }
-
- % add some anchors in case the are needed :)
- \anchor{prim1}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centerprim}{\pgfpointpolar{135}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{prim2}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centerprim}{\pgfpointpolar{-135}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{sec1}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centersec}{\pgfpointpolar{0}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{sec2}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centersec}{\pgfpointpolar{45}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{sec3}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centersec}{\pgfpointpolar{90}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{tert1}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centertert}{\pgfpointpolar{0}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{tert2}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centertert}{\pgfpointpolar{-45}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{tert3}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centertert}{\pgfpointpolar{-90}{.5\pgf@circ@scaled@Rlen}}
- }
-}
-{\ctikzvalof{bipoles/ooosource/height}}
-{ooosource}
-{\ctikzvalof{bipoles/ooosource/height}}
-{\ctikzvalof{bipoles/ooosource/height}}
-{
-% \pgf@circ@res@other = \ctikzvalof{bipoles/ooosource/vectorgroup} \pgf@circ@scaled@Rlen
-
-% % filling
-% left
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@left}{0}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left}
- \pgf@circ@maybefill
-
- % up
- \pgfscope
- \pgfpointorigin
- \pgfpathcircle{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}
- \pgf@circ@maybefill
- \endpgfscope
-% down
- \pgfscope
- \pgfpointorigin
- \pgfpathcircle{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}
- \pgf@circ@draworfill
- \endpgfscope
-
-% drawing
- % left
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@left}{0}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left}
- \pgfusepath{draw}
-
- % up
- \pgfscope
- \pgfpointorigin
- \pgfpathcircle{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}
- \pgfusepath{draw}
- \endpgfscope
-
-% % % draw inner symbols
-
-% % primary winding
- \ifpgf@circ@prim@delta
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left}
- \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@prim@wye
- \pgfscope
- \pgftransformxshift{.6\pgf@circ@res@left}
- \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@prim@zig
- \pgfscope
- \pgftransformxshift{.6\pgf@circ@res@left}
- \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
- \fi\fi\fi
-
-% % secondary winding
- \ifpgf@circ@sec@delta
- \pgfscope
- \pgfpointorigin
- \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
- \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@sec@wye
- \pgfscope
- \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
- \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@sec@zig
- \pgfscope
- \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
- \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
- \fi\fi\fi
-
-% % tertiary winding
- \ifpgf@circ@tert@delta
- \pgfscope
- \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
- \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@tert@wye
- \pgfscope
- \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
- \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@tert@zig
- \pgfscope
- \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
- \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
- \fi\fi\fi
-}
-
-%% Independent current source - American
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isourceam/height}}
-{isourceAM}
-{\ctikzvalof{bipoles/isourceam/height}}
-{\ctikzvalof{bipoles/isourceam/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% Independent sinusoidal current source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isourcesin}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty controlled source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/ecsource/height}}
-{ecsource}
-{\ctikzvalof{bipoles/ecsource/height}}
-{\ctikzvalof{bipoles/ecsource/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-}
-
-%% Controlled voltage source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsource/height}}
-{cvsource}
-{\ctikzvalof{bipoles/cvsource/height}}
-{\ctikzvalof{bipoles/cvsource/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-%% To change the internal symbols of the controlled voltage source american style
-\ctikzset{bipoles/cvsourceam/inner plus/.initial={$+$}}
-\ctikzset{bipoles/cvsourceam/inner minus/.initial={$-$}}
-%% Controlled voltage source - American
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsourceam/height}}
-{cvsourceAM}
-{\ctikzvalof{bipoles/cvsourceam/height}}
-{\ctikzvalof{bipoles/cvsourceam/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfsetcolor{\ctikzvalof{color}}
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{\ctikzvalof{bipoles/cvsourceam/inner plus}}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{\ctikzvalof{bipoles/cvsourceam/inner minus}}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{\ctikzvalof{bipoles/cvsourceam/inner minus}}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{\ctikzvalof{bipoles/cvsourceam/inner plus}}
- \fi
-}
-
-%% Controlled sinusoidal voltage source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{cvsourcesin}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{\ctikzvalof{bipoles/cvsourcesin/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Controlled sinusoidal current source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{cisourcesin}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{\ctikzvalof{bipoles/cvsourcesin/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Controlled current source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cisource/height}}
-{cisource}
-{\ctikzvalof{bipoles/cisource/height}}
-{\ctikzvalof{bipoles/cisource/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Controlled current source - American
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cisourceam/height}}
-{cisourceAM}
-{\ctikzvalof{bipoles/cisourceam/height}}
-{\ctikzvalof{bipoles/cisourceam/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% Cute Independent voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsource/height}}
-{vsourceC}
-{\ctikzvalof{bipoles/vsource/height}}
-{\ctikzvalof{bipoles/vsource/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Cute Independent current source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isourceC}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Cute Controlled voltage source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsource/height}}
-{cvsourceC}
-{\ctikzvalof{bipoles/cvsource/height}}
-{\ctikzvalof{bipoles/cvsource/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Cute Controlled current source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cisource/height}}
-{cisourceC}
-{\ctikzvalof{bipoles/cisource/height}}
-{\ctikzvalof{bipoles/cisource/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@down}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Noise voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsource/height}}
-{vsourceN}
-{\ctikzvalof{bipoles/vsource/height}}
-{\ctikzvalof{bipoles/vsource/width}}
-{
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- %
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax
- \edef\pgf@noise@temp{dashed}
- \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}}
- \ifx\pgf@noise@temp\pgf@noise@fill
- % fillable in this case
- \pgf@circ@draworfillandclip
- \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thinner\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- %
- \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \else
- \pgfsetfillcolor{\pgf@noise@fill}
- \pgfusepath{draw,fill}
- \fi
- \endpgfscope
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-%% Noise current source
-
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isourceN}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- %
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax
- \edef\pgf@noise@temp{dashed}
- \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}}
- \ifx\pgf@noise@temp\pgf@noise@fill
- % fillable in this case
- \pgf@circ@draworfillandclip
- \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thinner\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- %
- \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \else
- \pgfsetfillcolor{\pgf@noise@fill}
- \pgfusepath{draw,fill}
- \fi
- \endpgfscope
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%%
-%% Diodes
-%%%%%%%%%%%%%%
-
-%% Black generic diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fulldiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black Zener diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black alternative zigzag Zener diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullzzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black Schottky diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullsdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Black tunnel diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fulltdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%
-% draw LED arrows
-%
-\def\pgf@circ@draw@ledarrows{%
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \ifpgf@led@fliparrows
- \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-0.6\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@right}{0.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{1.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \else
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
- \fi
-}
-%
-% ---and photodiode arrows
-%
-\def\pgf@circ@draw@pdarrows{%
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latexslim}
- \ifpgf@pd@fliparrows
- \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-0.6\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@right}{0.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{1.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \else
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
- \fi
-}
-%% Black light emitting diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fulllediode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgf@circ@draw@ledarrows
-}
-
-%% Black photodiode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullpdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgf@circ@draw@pdarrows
-}
-
-%% Black varcap
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/varcap/height}}
-{fullvarcap}
-{\ctikzvalof{bipoles/varcap/height}}
-{\ctikzvalof{bipoles/varcap/width}}
-{
- \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgfsetlinewidth{\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfusepath{draw,fill}
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Code for the diode triangle
-\def\pgf@circ@basicdiodeshape{
- % \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfscope
- % to allow filling, we need to draw explicitly the stroke here.
- \pgfsetlinewidth{\pgfstartlinewidth}
- \ifpgf@circuit@bipole@strokedsymbol
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
- % \endpgfscope
-}
-
-%% Empty generic diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptydiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty Zener diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptyzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty alternative zigzag Zener diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptyzzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-%% Empty Schottky diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptysdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty tunnel diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptytdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty light emitting diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptylediode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgf@circ@draw@ledarrows
-}
-
-%% Empty photodiode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptypdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgf@circ@draw@pdarrows
-}
-
-%% Empty varcap
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/varcap/height}}
-{emptyvarcap}
-{\ctikzvalof{bipoles/varcap/height}}
-{\ctikzvalof{bipoles/varcap/width}}
-{
- \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgfsetlinewidth{\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- % \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfscope
- % to allow filling, we need to draw explicitily the stroke here.
- \pgfsetlinewidth{\pgfstartlinewidth}
- \ifpgf@circuit@bipole@strokedsymbol
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty bidirectionaldiode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{emptybidirectionaldiode}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{\ctikzvalof{bipoles/bidirectionaldiode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgf@circ@draworfill
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%% Full bidirectionaldiode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{fullbidirectionaldiode}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{\ctikzvalof{bipoles/bidirectionaldiode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw, fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%% Black thyristor
-\pgfcircdeclarebipolescaled{diodes}
-{
- \anchor{gate}{\northeast}
- \anchor{anode}{\southwest\pgf@y=0cm}
- \anchor{G}{\northeast}
- \anchor{cathode}{\northeast\pgf@y=0cm }
-}
-{\ctikzvalof{tripoles/thyristor/height 2}}
-{fullthyristor}
-{\ctikzvalof{tripoles/thyristor/height}}
-{\ctikzvalof{tripoles/thyristor/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty thyristor
-
-\pgfcircdeclarebipolescaled{diodes}
-{
- \anchor{gate}{\northeast}
- \anchor{anode}{\southwest\pgf@y=0cm}
- \anchor{G}{\northeast}
- \anchor{cathode}{\northeast\pgf@y=0cm }
-}
-{\ctikzvalof{tripoles/thyristor/height 2}}
-{emptythyristor}
-{\ctikzvalof{tripoles/thyristor/height}}
-{\ctikzvalof{tripoles/thyristor/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfscope
- % to allow filling, we need to draw explicitily the stroke here.
- \pgfsetlinewidth{\pgfstartlinewidth}
- \ifpgf@circuit@bipole@strokedsymbol
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%% Empty triac
-\pgfcircdeclarebipolescaled{diodes}
-{
- \anchor{gate}{\northeast}
- \anchor{anode}{\southwest\pgf@y=0cm}
- \anchor{G}{\northeast}
- \anchor{cathode}{\northeast\pgf@y=0cm }
-}
-{\ctikzvalof{tripoles/triac/height}}
-{emptytriac}
-{\ctikzvalof{tripoles/triac/height}}
-{\ctikzvalof{tripoles/triac/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgf@circ@draworfill
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%% Full triac
-\pgfcircdeclarebipolescaled{diodes}
-{
- \anchor{gate}{\northeast}
- \anchor{anode}{\southwest\pgf@y=0cm}
- \anchor{G}{\northeast}
- \anchor{cathode}{\northeast\pgf@y=0cm }
-}
-{\ctikzvalof{tripoles/triac/height}}
-{fulltriac}
-{\ctikzvalof{tripoles/triac/height}}
-{\ctikzvalof{tripoles/triac/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%
-%% switches
-%%%%%%%%%%%%%
-
-%% (Closing) SPST
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/spst/depth}}
-{cspst}
-{\ctikzvalof{bipoles/spst/height}}
-{\ctikzvalof{bipoles/spst/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpointpolar{90}{1.2\pgf@circ@res@right}}
- \pgfpatharc{90}{-20}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfsetbeveljoin
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Opening SPST
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/spst/depth}}
-{ospst}
-{\ctikzvalof{bipoles/spst/height}}
-{\ctikzvalof{bipoles/spst/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
- \pgfpatharc{-10}{90}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfsetbeveljoin
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Normal open Switch
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/nos/depth}}
-{nos}
-{\ctikzvalof{bipoles/nos/height}}
-{\ctikzvalof{bipoles/nos/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{draw}
-}
-
-%% Normal closed Switch
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/ncs/depth}}
-{ncs}
-{\ctikzvalof{bipoles/ncs/height}}
-{\ctikzvalof{bipoles/ncs/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Push Button
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/pushbutton/height 2}}
-{pushbutton}
-{\ctikzvalof{bipoles/pushbutton/height}}
-{\ctikzvalof{bipoles/pushbutton/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-
-%% Normally closed Push Button
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/pushbutton/height 2}}
-{ncpushbutton}
-{\ctikzvalof{bipoles/pushbutton/height}}
-{\ctikzvalof{bipoles/pushbutton/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- % Warning, if the nodes will have a class, we have to touch this.
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp}}
- \pgfpathmoveto{\pgfpoint{0}{-\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- %
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-%%% reed switches
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/reed/depth}}
-{reed}
-{\ctikzvalof{bipoles/reed/height}}
-{\ctikzvalof{bipoles/reed/width}}
-{
- % this is designed to be the same as a "nos".
- \pgfmathsetmacro{\@@tmpx}{0.9*\ctikzvalof{bipoles/nos/width}/\ctikzvalof{bipoles/reed/width}}
- \pgfmathsetmacro{\@@tmpy}{\ctikzvalof{bipoles/nos/height}/\ctikzvalof{bipoles/reed/height}}
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- % eclosure
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@up}{\pgf@circ@res@up}}
- \pgfpatharc{90}{-90}{\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@up}{-\pgf@circ@res@up}}
- \pgfpatharc{270}{90}{\pgf@circ@res@up}
- \pgfpathclose
- \pgf@circ@draworfill
- % switch
- \pgfpathmoveto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{\@@tmpy\pgf@circ@res@up}}
- % connection lines
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- % connection lines
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-}
-
-% cute switch "to" shapes help function
-% #1 -> name
-% #2 -> barposition
-% #3 -> arrowcode
-\long\def\pgfcircdeclarecutesw#1#2#3{
- \pgfcircdeclarebipolescaled{switches}
- {
- \savedanchor\midlever{
- % these values are calculated when we create the definition of the shape.
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgf@circ@res@down = -.5\pgf@y
- \pgf@circ@res@up = .5\pgf@y
- \pgfextracty{\pgf@circ@res@other}{#2}
- \pgf@x=0pt
- \pgf@y=.5\pgf@circ@res@other
- }
- % radius of the connector
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- % If cnnecting nodes are scaled, we have to modify this
- \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % shape type
- \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
- % mid of the lever, to stack switches
- \anchor{mid}{\midlever}
- \anchor{cout}{\northeast \pgf@y=0cm}
- \anchor{cin}{\southwest\pgf@y=0cm}
- \anchor{out}{\northeast \pgf@y=0cm\advance\pgf@x by \radius}
- \anchor{in}{\southwest\pgf@y=0cm\advance\pgf@x by -\radius}
- }
- {\ctikzvalof{bipoles/cuteswitch/height 2}}
- {#1}
- {\ctikzvalof{bipoles/cuteswitch/height}}
- {\ctikzvalof{bipoles/cuteswitch/width}}{
- \pgfscope
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- % If cnnecting nodes are scaled, we have to modify this
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgfsetlinewidth{2\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{#2}
- \pgfsetroundcap\pgfusepath{draw}
- \endpgfscope
- \pgfscope % arrow
- #3
- \endpgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-out}{\pgfusepath{draw}}
- }
-}
-
-%% closed cute switch
-\pgfcircdeclarecutesw{cuteclosedswitch}
- {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
- {}
-
-%% open cute switch
-\pgfcircdeclarecutesw{cuteopenswitch}
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- {}
-
-%% closing cute switch
-\pgfcircdeclarecutesw{cuteclosingswitch}
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- {
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{70}{1.2\pgf@circ@res@right}}
- \pgfpatharc{70}{-10}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
- }
-
-%% opening cute switch
-\pgfcircdeclarecutesw{cuteopeningswitch}
- {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
- {
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
- \pgfpatharc{-10}{60}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
- }
-
-%%%%%%%%%%%%%%%%%
-%% Instruments
-%%%%%%%%%%%%%%%%%
-
-% % METERINGSHAPE
-\long\def\drawmeteringcircle{
- \def\pgf@circ@temp{right}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \def\pgf@circ@temp{below}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \pgf@circ@res@step=1.2\pgf@circ@res@up
- \fi
- \fi
- %draw connections to circle
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- %draw circle
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgf@circ@draworfill
- \endpgfscope
- %draw arrow
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%AMPEREMETER
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/ammeter/height}}
-{ammeter}
-{\ctikzvalof{bipoles/ammeter/height}}
-{\ctikzvalof{bipoles/ammeter/width}}
-{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\pgf@circ@font@bold{A}}{}{}
-}
-%OHMMETER
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/ohmmeter/height}}
-{ohmmeter}
-{\ctikzvalof{bipoles/ohmmeter/height}}
-{\ctikzvalof{bipoles/ohmmeter/width}}
-{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
-}
-%VOLTMETER
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/voltmeter/height}}
-{voltmeter}
-{\ctikzvalof{bipoles/voltmeter/height}}
-{\ctikzvalof{bipoles/voltmeter/width}}
-{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\pgf@circ@font@bold{V}}{}{}
-
-}
-
-% oscilloscope, suggested by @nobrl https://github.com/circuitikz/circuitikz/issues/176
-\pgfcircdeclarebipolescaled{instruments}
-{
- \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
- \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/oscope/height}}
-{oscope}
-{\ctikzvalof{bipoles/oscope/height}}
-{\ctikzvalof{bipoles/oscope/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\southwest}
- \pgfextracty{\pgf@circ@res@down}{\southwest}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfscope
- \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- % this would create a round (analog?) scope...
- % \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \endpgfscope
- % get the rotation
- \ifpgf@circuit@straightinstruments
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \else
- \edef\rot{0}
- \fi
- % and unrotate the scope
- \pgfscope
- \pgftransformrotate{\rot}
- % grid
- \pgfscope
- \pgfsetlinewidth{0.5\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfpathgrid[stepx=\pgf@circ@res@step, stepy=\pgf@circ@res@step]%
- {\pgfpoint{0.75\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- {\pgfpoint{0.75\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfsetstrokeopacity{0.5}
- \pgfusepath{draw}
- \endpgfscope
- % function displayed, thanks to
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% generic round meter with always horizontal text, no arrow
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/esource/height}}
-{rmeter}
-{\ctikzvalof{bipoles/esource/height}}
-{\ctikzvalof{bipoles/esource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- % draw the text label
- % get the rotation
- \ifpgf@circuit@straightinstruments
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \else
- \edef\rot{0}
- \fi
- % and unrotate the scope
- \pgfscope
- \pgfsetcolor{\ctikzvalof{color}}
- \pgftransformrotate{\rot}
- \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
- \endpgfscope
-}
-
-% generic round meter with always horizontal text, with arrow
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/esource/height}}
-{rmeterwa}
-{\ctikzvalof{bipoles/esource/height}}
-{\ctikzvalof{bipoles/esource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- % draw the text label
- % get the rotation
- \ifpgf@circuit@straightinstruments
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \else
- \edef\rot{0}
- \fi
- % and unrotate the scope
- \pgfscope
- \pgftransformrotate{\rot}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfsetlinewidth{\pgfstartlinewidth}
- % arrow: create a center hole to have better visual
- \pgfscope
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
- {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
- % next open a circle into it
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{.6\pgf@circ@res@up}}{\pgfpoint{.6\pgf@circ@res@left}{0}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfsetarrowsend{latexslim}
- % the arrow is better if it has a bit of breath and it's not 45ยบ
- \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@right}{1.2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- \pgftext[center]{\ctikzvalof{bipoles/twoport/text}}
- \endpgfscope
-}
-
-% generic square meter with always horizontal text
-\pgfcircdeclarebipolescaled{instruments}
-{
- \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
- \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/smeter/height}}
-{smeter}
-{\ctikzvalof{bipoles/smeter/height}}
-{\ctikzvalof{bipoles/smeter/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\southwest}
- \pgfextracty{\pgf@circ@res@down}{\southwest}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfscope
- \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
- \endpgfscope
- % get the rotation
- \ifpgf@circuit@straightinstruments
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \else
- \edef\rot{0}
- \fi
- % and unrotate the scope
- \pgfscope
- \pgftransformrotate{\rot}
- % the metering window
- \pgfscope
- \def\@starta{105}\def\@stopa{75}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftransformshift{\pgfpoint{0pt}{-1.8\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{\@starta}{2\pgf@circ@res@up}}
- \pgfpatharc{\@starta}{\@stopa}{2\pgf@circ@res@up}
- \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
- \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
- \pgfclosepath
- \pgfpathmoveto{\pgfpointpolar{80}{2\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{80}{2.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- \pgftext[center, y=0.5\pgf@circ@res@down]{\ctikzvalof{bipoles/twoport/text}}
- \endpgfscope
-}
-
-% probes qucs style:
-% #1 : name
-% #2 : extra code
-\long\def\pgfcirc@qucsprobe#1#2{
- \pgfcircdeclarebipolescaled{instruments}
- {
- \anchor{v+}{\southwest\pgf@x=0.6\pgf@x}
- \anchor{v-}{\southwest\pgf@x=-0.6\pgf@x}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- }
- {\ctikzvalof{bipoles/qmeter/depth}}
- {#1}
- {\ctikzvalof{bipoles/qmeter/height}}
- {\ctikzvalof{bipoles/qmeter/width}}
- {
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\southwest}
- \pgfextracty{\pgf@circ@res@down}{\southwest}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfscope
- \pgfscope
- \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
- \endpgfscope
- \def\@starta{103}\def\@stopa{77}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfscope
- \pgftransformshift{\pgfpoint{0pt}{-1.7\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{\@starta}{2.1\pgf@circ@res@up}}
- \pgfpatharc{\@starta}{\@stopa}{2.1\pgf@circ@res@up}
- \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
- \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
- \pgfclosepath
- \pgfpathmoveto{\pgfpointpolar{83}{2.1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{83}{2.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgf@circ@draworfill
- \endpgfscope
- #2
- \endpgfscope
- }
-}
-
-\pgfcirc@qucsprobe{qiprobe}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- \pgfnode{currarrow}{center}{}{}{}
-}
-
-\pgfcirc@qucsprobe{qvprobe}{
- \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{0pt}}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
- \pgfusepath{draw}
- \pgfscope
- % "+" and "-", drawn so that they scale correctly
- \pgfsetlinewidth{2\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-1.5\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-3.5\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-\pgfcirc@qucsprobe{qpprobe}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- \pgfnode{currarrow}{center}{}{}{}
- \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{-4\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{-4\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfscope
- % "+" and "-", drawn so that they scale correctly
- \pgfsetlinewidth{2\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-2\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-4\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right-4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% current loop for oscope and similar: stylized
-\pgfcircdeclarebipolescaled{instruments}
-{
- \anchor{i}{\northeast\pgf@x=0pt\relax}
- \anchor{text}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/iloop/height}}
-{iloop}
-{\ctikzvalof{bipoles/iloop/height}}
-{\ctikzvalof{bipoles/iloop/width}}
-{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@down=-\pgf@circ@res@up
- \pgf@circ@res@left=-\pgf@circ@res@right
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcolor{\ctikzvalof{color}}
- % external ellipse
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
- {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
- % next the opening to the left
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
- {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathellipse{\pgfpointorigin}{
- \pgfpoint{0pt}{0.8\pgf@circ@res@up}}{
- \pgfpoint{0.4\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- % internal wire
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % and the contact line up
- \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% current loop for oscope and similar: real (double connection)
-\pgfcircdeclarebipolescaled{instruments}
-{
- \anchor{i+}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@step=0.4\pgf@circ@res@right
- \pgf@circ@res@other=0.8\pgf@circ@res@up
- \pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgf@y=\pgf@circ@res@up
- }
- \anchor{i-}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@step=0.4\pgf@circ@res@right
- \pgf@circ@res@other=0.8\pgf@circ@res@up
- \pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgf@y=\pgf@circ@res@up
- }
- \anchor{text}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/iloop/height}}
-{iloop2}
-{\ctikzvalof{bipoles/iloop/height}}
-{\ctikzvalof{bipoles/iloop/width}}
-{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@down=-\pgf@circ@res@up
- \pgf@circ@res@left=-\pgf@circ@res@right
- % must be the same than internal i+ and i- anchors definition
- \pgf@circ@res@step=0.4\pgf@circ@res@right
- \pgf@circ@res@other=0.8\pgf@circ@res@up
- \def\@plus{\pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}}
- \def\@minus{\pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}}
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcolor{\ctikzvalof{color}}
- % external ellipse
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
- {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
- % next the opening to the left
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
- {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathmoveto{\@plus}
- \pgfpatharc{105}{435}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfusepath{draw}
- \endpgfscope
- % internal wire
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % and the contact line up
- % I use ...left and ---right as temporal lengths here to avoid defining more
- \pgfextractx{\pgf@circ@res@left}{\@plus}
- \pgfextractx{\pgf@circ@res@right}{\@minus}
- \pgfpathmoveto{\@plus}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathmoveto{\@minus}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% Varistor
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/varistor/height}}
-{varistor}
-{\ctikzvalof{bipoles/varistor/height}}
-{\ctikzvalof{bipoles/varistor/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\pgf@circ@font@tiny\textsf{U}}}
-}
-
-%%%%%%%%%%%%%%
-%% RF bipoles
-%%%%%%%%%%%%%%
-
-% transmission line
-\pgfcircdeclarebipolescaled{RF}
-{}
-{\ctikzvalof{bipoles/tline/height}}
-{tline}
-{\ctikzvalof{bipoles/tline/height}}
-{\ctikzvalof{bipoles/tline/width}}
-{
- \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
- \begin{pgftransparencygroup}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
- {\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{-\pgf@circ@res@up}}
- \pgf@circ@draworfill
- \end{pgftransparencygroup}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{stroke}
-}
-
-% microstrip transmission line
-\pgfcircdeclarebipolescaled{RF}
-{}
-{\ctikzvalof{bipoles/mstline/height}}
-{mstline}
-{\ctikzvalof{bipoles/mstline/height}}
-{\ctikzvalof{bipoles/mstline/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-
-%%%%%%%%%%%%%%%%%%%
-%% Block diagrams
-%%%%%%%%%%%%%%%%%%%
-
-%% Draw the two-port fillable box
-\def\pgf@circ@twoportbox{
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \endpgfscope
-}
-
-%% Generic two port box
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/twoport/height}}
-{twoport}
-{\ctikzvalof{bipoles/twoport/height}}
-{\ctikzvalof{bipoles/twoport/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw outer box
- \pgf@circ@twoportbox
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
-}
-
-%% voltage controled oscillator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/vco/width}}
-{vco}
-{\ctikzvalof{bipoles/twoport/width}}
-{\ctikzvalof{bipoles/vco/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw circle
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
- \pgf@circ@draworfill
- \endpgfscope
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% bandpass filter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/bandpass/width}}
-{bandpass}
-{\ctikzvalof{bipoles/bandpass/width}}
-{\ctikzvalof{bipoles/bandpass/width}}
-{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% bandstop filter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/bandstop/width}}
-{bandstop}
-{\ctikzvalof{bipoles/bandstop/width}}
-{\ctikzvalof{bipoles/bandstop/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/bandstop/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225% 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt}% always draw solid line for inner symbol
- \pgfsetarrows{-}%never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% highpass filter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/highpass/width}}
-{highpass}
-{\ctikzvalof{bipoles/highpass/width}}
-{\ctikzvalof{bipoles/highpass/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% lowpass filter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/lowpass/width}}
-{lowpass}
-{\ctikzvalof{bipoles/lowpass/width}}
-{\ctikzvalof{bipoles/lowpass/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% ADC
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/adc/width}}
-{adc}
-{\ctikzvalof{bipoles/adc/width}}
-{\ctikzvalof{bipoles/adc/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{A}
- \def\textii{D}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{A}
- \def\textii{D}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DAC
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/dac/width}}
-{dac}
-{\ctikzvalof{bipoles/dac/width}}
-{\ctikzvalof{bipoles/dac/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{D}
- \def\textii{A}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{D}
- \def\textii{A}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DSP
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/dsp/width}}
-{dsp}
-{\ctikzvalof{bipoles/dsp/width}}
-{\ctikzvalof{bipoles/dsp/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{DSP}}
-}
-
-%% FFT
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/fft/width}}
-{fft}
-{\ctikzvalof{bipoles/fft/width}}
-{\ctikzvalof{bipoles/fft/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{FFT}}
-}
-
-%% Amplifier
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{amp}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \pgf@circ@draworfill
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
-
- \pgfsetarrows{-} %never draw arrows
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgf@circ@draworfill
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-}
-
-
-%% variable amplifier
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{vamp}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
-
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgf@circ@draworfill
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
- % draw arrow
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% pi attenuator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/piattenuator/width}}
-{piattenuator}
-{\ctikzvalof{bipoles/piattenuator/width}}
-{\ctikzvalof{bipoles/piattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable pi attenuator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/vpiattenuator/width}}
-{vpiattenuator}
-{\ctikzvalof{bipoles/vpiattenuator/width}}
-{\ctikzvalof{bipoles/vpiattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% T attenuator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/tattenuator/width}}
-{tattenuator}
-{\ctikzvalof{bipoles/tattenuator/width}}
-{\ctikzvalof{bipoles/tattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable T attenuator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/vtattenuator/width}}
-{vtattenuator}
-{\ctikzvalof{bipoles/vtattenuator/width}}
-{\ctikzvalof{bipoles/vtattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% phase shifter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{phaseshifter}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-}
-
-%% variable phase shifter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{vphaseshifter}
-{\ctikzvalof{bipoles/vphaseshifter/width}}
-{\ctikzvalof{bipoles/vphaseshifter/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% detector
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/detector/width}}
-{detector}
-{\ctikzvalof{bipoles/detector/width}}
-{\ctikzvalof{bipoles/detector/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{0.8\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@fulldiode
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
- \else
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
- \fi
-
-}
-
-%% single phase ac/dc converter
-\pgfcircdeclarebipolescaled{blocks}
-{
- \anchor{dc1}{
- \northeast
- \pgf@y=.4\pgf@y
- }
- \anchor{dc2}{
- \northeast
- \pgf@y=-.4\pgf@y
- }
-}
-{\ctikzvalof{bipoles/sacdc/width}}
-{sacdc}
-{\ctikzvalof{bipoles/sacdc/width}}
-{\ctikzvalof{bipoles/sacdc/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/sacdc/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % draw sin wave
- \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- % draw equal sign
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.375\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.375\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.625\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.625\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-
-
-%% single phase dc/ac converter
-\pgfcircdeclarebipolescaled{blocks}
-{
- \anchor{dc1}{
- \northeast
- \pgf@y=.4\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{dc2}{
- \northeast
- \pgf@y=-.4\pgf@y
- \pgf@x=-\pgf@x
- }
-}
-{\ctikzvalof{bipoles/sdcac/width}}
-{sdcac}
-{\ctikzvalof{bipoles/sdcac/width}}
-{\ctikzvalof{bipoles/sdcac/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/sdcac/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % draw sin wave
- \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- % draw equal sign
- \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.375\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.375\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.625\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.625\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-
-%% threephase ac/dc converter
-\pgfcircdeclarebipolescaled{blocks}
-{
- \anchor{dc1}{
- \northeast
- \pgf@y=.4\pgf@y
- }
- \anchor{dc2}{
- \northeast
- \pgf@y=-.4\pgf@y
- }
- \anchor{ac1}{
- \northeast
- \pgf@y=.6\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{ac2}{
- \northeast
- \pgf@y=0\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{ac3}{
- \northeast
- \pgf@y=-.6\pgf@y
- \pgf@x=-\pgf@x
- }
-}
-{\ctikzvalof{bipoles/tacdc/width}}
-{tacdc}
-{\ctikzvalof{bipoles/tacdc/width}}
-{\ctikzvalof{bipoles/tacdc/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/tacdc/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % draw sin waves
- \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.65\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.35\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
-
-
-
-
- % draw equal sign
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.375\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.375\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.625\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.625\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-
-%% threephase dc/ac converter
-\pgfcircdeclarebipolescaled{blocks}
-{
- \anchor{dc1}{
- \northeast
- \pgf@y=.4\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{dc2}{
- \northeast
- \pgf@y=-.4\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{ac1}{
- \northeast
- \pgf@y=.6\pgf@y
- }
- \anchor{ac2}{
- \northeast
- \pgf@y=0\pgf@y
- }
- \anchor{ac3}{
- \northeast
- \pgf@y=-.6\pgf@y
- }
-}
-{\ctikzvalof{bipoles/tdcac/width}}
-{tdcac}
-{\ctikzvalof{bipoles/tdcac/width}}
-{\ctikzvalof{bipoles/tdcac/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/tdcac/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % draw sin waves
- \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.65\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.35\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
-
-
-
-
- % draw equal sign
- \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.375\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.375\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.625\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.625\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%
-%% MECHANICAL SYMBOLS
-%%%%%%%%%%%%%%%%%%%%%%%
-
-%% mechanical capacitance - stiffness/spring
-
-\pgfcircdeclarebipolescaled{mechanicals}
-{}
-{\ctikzvalof{bipoles/spring/height}}
-{spring}
-{\ctikzvalof{bipoles/spring/height}}
-{\ctikzvalof{bipoles/spring/width}}{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@scaled@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% mechanical capacitance - inerter
-\pgfcircdeclarebipolescaled{mechanicals}
-{}
-{\ctikzvalof{bipoles/inerter/height}}
-{inerter}
-{\ctikzvalof{bipoles/inerter/height}}
-{\ctikzvalof{bipoles/inerter/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-
-
-%% mechanical inductance - mass
-\pgfcircdeclarebipolescaled{mechanicals}
-{}
-{\ctikzvalof{bipoles/mass/box height}}
-{mass}
-{\ctikzvalof{bipoles/mass/height}}
-{\ctikzvalof{bipoles/mass/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-}
-
-%% mechanical resistor - damper
-\pgfcircdeclarebipolescaled{mechanicals}
-{}
-{\ctikzvalof{bipoles/damper/height}}
-{damper}
-{\ctikzvalof{bipoles/damper/height}}
-{\ctikzvalof{bipoles/damper/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@maybefill
-
- % line into the damper
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {\pgf@circ@res@zero}}
- \pgfusepath{stroke}
-
- % damper box
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
-
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-
- % damper vertical element
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{stroke}
-
-}
-%% mechanical viscoelastic element, suggested by @alex
-%% in https://tex.stackexchange.com/questions/484268/combined-spring-damper-in-circuitikz
-\pgfcircdeclarebipolescaled{mechanicals}
-{} % extra anchors
-{\ctikzvalof{bipoles/damper/height}} % depth (under the path line)
-{viscoe} % name
-{\ctikzvalof{bipoles/damper/height}} % height (above the path line)
-{\ctikzvalof{bipoles/damper/width}} % width
-{ % draw the bipole
- \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@maybefill
-
- % spring into the damper
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfsetcornersarced{\pgfpoint{.25\pgf@circ@res@up}{.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.75\pgf@circ@res@left}{.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@left}{-.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{.75\pgf@circ@res@up}}
- \pgfusepath{stroke}
- \endpgfscope
- % damper box
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
-
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-
- % damper vertical element
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{stroke}
-
-}
-
-%%%%%%%%%%%%%%%%
-%% Crossing
-%%%%%%%%%%%%%%%%
-
-%% crossing bipole (but see also nodes)
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/crossing/size}}
-{crossing}
-{\ctikzvalof{bipoles/crossing/size}}
-{\ctikzvalof{bipoles/crossing/size}}{
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
- \pgfsetbeveljoin
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Miscellaneous bipoles
-%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% loudspeaker and microphone
-
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/loudspeaker/depth}}
-{loudspeaker}
-{\ctikzvalof{bipoles/loudspeaker/height}}
-{\ctikzvalof{bipoles/loudspeaker/width}}{
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{.4\pgf@circ@res@up}}
- \pgfpathclose
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/mic/depth}}
-{mic}
-{\ctikzvalof{bipoles/mic/height}}
-{\ctikzvalof{bipoles/mic/width}}{
-
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0pt}{.6\pgf@circ@res@up}}{.4\pgf@circ@res@up}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{0pt}}
- % 0.25358 is 0.6-0.4*cos(30)
- \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% european gas filled surge arrester
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
-{european gas filled surge arrester}
-{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
-{\ctikzvalof{bipoles/european gas filled surge arrester/width}}
-{
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@draworfill
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
-}
-
-%% american gas filled surge arrester
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
-{american gas filled surge arrester}
-{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
-{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope{}
-
- \pgfcircle{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\ctikzvalof{bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\ctikzvalof{bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
- \pgfusepath{fill}
-}
-
-%% thermocouple
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/thermocouple/height 2}}
-{thermocouple}
-{\ctikzvalof{bipoles/thermocouple/height}}
-{\ctikzvalof{bipoles/thermocouple/width}}
-{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-}
-
-%% fuse
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/fuse/height}}
-{fuse}
-{\ctikzvalof{bipoles/fuse/height}}
-{\ctikzvalof{bipoles/fuse/width}}
-{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@draworfill
-}
-
-%% asymmetric fuse
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/afuse/height}}
-{afuse}
-{\ctikzvalof{bipoles/afuse/height}}
-{\ctikzvalof{bipoles/afuse/width}}
-{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-%% SQUID added by Cor Molenaar 5 March 2010
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/squid/height}}
-{squid}
-{\ctikzvalof{bipoles/squid/height}}
-{\ctikzvalof{bipoles/squid/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-% Generic barrier added by Cor Molenaar 5 March 2010
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/barrier/height}}
-{barrier}
-{\ctikzvalof{bipoles/barrier/height}}
-{\ctikzvalof{bipoles/barrier/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
-
- \pgfusepath{draw}
-}
-
-%
-% open version of the barrier symbol
-% suggested by Radvรกnyi Patrik Tamรกs <patrikradvanyi@gmail.com>
-%
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/barrier/height}}
-{openbarrier}
-{\ctikzvalof{bipoles/barrier/height}}
-{\ctikzvalof{bipoles/barrier/width}}
-{
- % this is set with normal wire linewidth
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/openbarrier/gap}*\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/openbarrier/gap}*\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-
- % do the cross part
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
-
- \pgfusepath{draw}
-}
-%% Lamp
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/lamp/height}}
-{lamp}
-{\ctikzvalof{bipoles/lamp/height}}
-{\ctikzvalof{bipoles/lamp/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% bulb
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/bulb/height}}
-{bulb}
-{\ctikzvalof{bipoles/bulb/height}}
-{\ctikzvalof{bipoles/bulb/width}}
-{%
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{0.8\pgf@circ@res@up}}{\pgfpoint{0.8\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
- \pgfsetbeveljoin
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-% end of pgfcircbipoles.tex
-%%%---------- close: tex/pgfcircbipoles
-%%%%%%%%%%% Springe nach tex/pgfcirctripoles
-%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Tripoles
-
-%%%%%%%%%%%%%
-%% switches
-%%%%%%%%%%%%%
-
-% Legacy spdt
-\pgfdeclareshape{spdt}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/spdt/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out 1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{out 2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@res@other = \ctikzvalof{tripoles/spdt/margin}\pgf@circ@res@left
-
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfscope
- \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
- \pgfpathlineto{
- \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
- {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
- }
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-
-% cute switch "node" shapes, matching with cute "to" shapes
-% #1 -> name
-% #2 -> barposition
-% #3 -> arrowcode
-\long\def\pgfcircdeclarecutespdt#1#2#3{
- \pgfdeclareshape{#1}
- {
- \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.25\pgf@x
- }
- \savedanchor\midlever{
- % these values are calculated when we create the definition of the shape.
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgf@circ@res@down = -.5\pgf@y
- \pgf@circ@res@up = .5\pgf@y
- \pgfextracty{\pgf@circ@res@other}{#2}
- \pgf@x=0pt
- \pgf@y=.5\pgf@circ@res@other
- }
- % radius of the connector
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % shape type
- \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
- % mid of the lever, to stack switches
- \anchor{mid}{\midlever}
- % center anchors
- \anchor{cin}{ \northwest \pgf@y=0pt}
- \anchor{cout 1}{ \northwest \pgf@x=-\pgf@x }
- \anchor{cout 2}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- % horizontal angles
- \anchor{in}{ \northwest \pgf@y=0pt\advance\pgf@x by -\radius}
- \anchor{out 1}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius}
- \anchor{out 2}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius \pgf@y=-\pgf@y }
-
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \pgf@circ@res@temp=\radius\relax
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgfsetlinewidth{2\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{#2}
- \pgfsetroundcap\pgfusepath{draw}
- \endpgfscope
- \pgfscope % arrow
- #3
- \endpgfscope
- % terminals
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfnode{\cshape}{center}{}{\thisshape-out 1}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfnode{\cshape}{center}{}{\thisshape-out 2}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
- \endpgfscope
-
- }
- }
-}
-
-\pgfcircdeclarecutespdt{cute spdt up}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
-{}
-
-\pgfcircdeclarecutespdt{cute spdt mid}
-{\pgfpoint{\pgf@circ@res@right}{0pt}}
-{}
-
-\pgfcircdeclarecutespdt{cute spdt down}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
-{}
-
-\pgfcircdeclarecutespdt{cute spdt up arrow}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{70}{1.5\pgf@circ@res@right}}
- \pgfpatharc{70}{-50}{1.5\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclarecutespdt{cute spdt mid arrow}
-{\pgfpoint{\pgf@circ@res@right}{0pt}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfsetarrowsstart{latexslim}
- \pgfpathmoveto{\pgfpointpolar{-60}{1.5\pgf@circ@res@right}}
- \pgfpatharc{-60}{60}{1.5\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclarecutespdt{cute spdt down arrow}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{-50}{1.5\pgf@circ@res@right}}
- \pgfpatharc{-50}{70}{1.5\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% Logic ports
-%%
-%% Code from John Kormylo at tex.stackexchange.com
-%% See https://tex.stackexchange.com/questions/372993/is-it-possible-to-implement-multiple-input-logic-ports-with-circuitikz
-%% Integration and fixes from Romano Giannetti and TheTeXnician <38565529+TheTeXnician@users.noreply.github.com>
-%%
-
-\newcount\pgf@circ@res@count% reserve global register
-
-\def\pgf@circ@logicport@input#1% #1 = \pgfmathcounter
-{%
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
-}%
-
-% #1 = \pgfmathcounter #2=type #3 specificic port
-% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor, 4 for european.
-\def\pgf@circ@logicport@baseinput#1#2#3%
-{%
- % and and nand
- \ifnum #2=1\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@x=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@left
- \fi
- % or and nor
- \ifnum #2=2\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american #3 port/angle}}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\pgf@y
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgf@x=\pgf@circ@res@other
- \fi
- % xor and xnor
- \ifnum #2=3\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american #3 port/angle}{\pgf@circ@math@angle}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\ctikzvalof{tripoles/american #3 port/distance}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
- % this compensates for the effect of the line width on the gap between the arcs
- \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
- \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
-
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@circ@res@temp=\pgf@y
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \advance\pgf@circ@res@other by -\pgf@circ@math@distance
- \pgf@x=\pgf@circ@res@other
- \fi
- % european
- \ifnum #2=4\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@other}{\left}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@x=\pgf@circ@res@other
- \fi
-}%
-
-%%% american
-\long\def\pgfcircdeclarelogicport#1#2#3{%
- \pgfdeclareshape{american #1 port}%
- {%
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro\resize{% automatic
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@up = \ctikzvalof{tripoles/american #1 port/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgf@circ@res@down = -\pgf@circ@res@up
- \pgf@circ@res@right = \ctikzvalof{tripoles/american #1 port/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right = .5\pgf@circ@res@right
- \pgf@circ@res@left = -\pgf@circ@res@right
- }%
- \savedmacro\inputs{% get number of inputs
- \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
- \ifnum\pgf@circ@res@count=0
- \pgf@circ@res@count=\ctikzvalof{tripoles/american #1 port/inputs}\relax%
- \fi
- \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
- \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
- \def\inputs{\the\pgf@circ@res@count}%
- }%
- \savedanchor\step{% 1/2 gap at edges
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step = \ctikzvalof{tripoles/american #1 port/height}\pgf@circ@scaled@Rlen
- \divide\pgf@circ@res@step by \pgf@circ@res@count
- \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
- }%
- \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \savedanchor\left{\pgfpoint{\ctikzvalof{tripoles/american #1 port/port width}\pgf@circ@res@left}{0pt}}
- \savedanchor\right{\pgfpoint{\ctikzvalof{tripoles/american #1 port/port width}\pgf@circ@res@right}{0pt}}
- \savedanchor\origin{\pgfpoint{\ctikzvalof{tripoles/american #1 port/origin}\pgf@circ@res@right}{0pt}}
-
- \anchor{center}{\origin}% for backwards compatibility
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- % create input anchors
- \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@american #1 port\endcsname{%
- \pgfmathloop%
- \ifnum\pgfmathcounter>\pgf@circ@res@count%
- \else%
- %\pgfutil@ifundefined{pgf@anchor@american #1 port@in \pgfmathcounter}{%
- \expandafter\xdef\csname pgf@anchor@american #1 port@in \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
- }%
- \expandafter\xdef\csname pgf@anchor@american #1 port@bin \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{#2}{#1}% defined above
- }%
- %}{}%
- \repeatpgfmathloop%
- }
-
- \anchor{out}{\northeast\pgf@y=0pt}
- \anchor{bout}{\right\pgf@y=0pt}
-
-
- \anchor{left}{\left}% edges of component minus leads
- \anchor{right}{\right}
-
- \anchor{north east}{\northeast}% see \Compass macro
- \anchor{south west}{\southwest}
- \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfpoint{0cm}{\pgf@circ@res@up}}
- \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{0cm}}
- \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfpoint{0cm}{\pgf@circ@res@down}}
- \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{0cm}}
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- #3
- }
-}
-}
-%%% american and %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{and}{1}{
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@temp}}
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
- % output lead
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@right}
- {0pt}}
- \pgfusepath{draw}
-
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgf@circ@res@other=\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@left
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpatharc{-90}{90}{-2\pgf@circ@res@other and \pgf@circ@res@up}
- \pgfpathclose
- \pgf@circ@draworfill
- }
-%%% american nand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \pgfcircdeclarelogicport{nand}{1}{
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@temp}}
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@right} {0pt}}
-
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgf@circ@res@step = \ctikzvalof{tripoles/american nand port/circle width}\pgf@circ@res@right
- \pgf@circ@res@other = \ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@right
- \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpatharc{-90}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}
- \pgfpathclose
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgf@circ@draworfill
-}
-%%% american nor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{nor}{2}{
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american nor port/angle}}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/port width}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american nor port/angle}}%
- \pgf@circ@res@step = \ctikzvalof{tripoles/american nor port/circle width}\pgf@circ@res@right
- \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
- \advance\pgf@circ@res@other by -\pgf@circ@res@step
-
- % main shape
- \ifpgfcirc@roundy@or@shapes
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpathclose
- \else
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathclose
- \fi
-
- % not dot
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgf@circ@draworfill
-}
-%%% american or %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{or}{2}{
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american or port/angle}}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/port width}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american or port/angle}}%
-
- % main shape
- \ifpgfcirc@roundy@or@shapes
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpathclose
- \else
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathclose
- \fi
-
- \pgf@circ@draworfill
-}
-%%% american xor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{xor}{3}{
- \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xor port/angle}{\pgf@circ@math@angle}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\ctikzvalof{tripoles/american xor port/distance}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
- % this compensates for the effect of the line width on the gap between the arcs
- \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
- \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \advance\pgf@circ@res@other by -\pgf@circ@math@distance
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/port width}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american xor port/angle}}%
-
- % main shape
- \ifpgfcirc@roundy@or@shapes
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpathclose
- \else
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathclose
- \fi
- \pgf@circ@draworfill
-
- \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
-
- \pgfusepath{draw}
-}
-%%% american xnor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{xnor}{3}{
- \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xnor port/angle}{\pgf@circ@math@angle}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\ctikzvalof{tripoles/american xor port/distance}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
- % this compensates for the effect of the line width on the gap between the arcs
- \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
- \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \advance\pgf@circ@res@other by -\pgf@circ@math@distance
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american xnor port/angle}}%
- \pgf@circ@res@step = \ctikzvalof{tripoles/american xnor port/circle width}\pgf@circ@res@right
- \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
- \advance\pgf@circ@res@other by -\pgf@circ@res@step
-
- % main shape
- \ifpgfcirc@roundy@or@shapes
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpathclose
- \else
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathclose
- \fi
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@left
- \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
-
- \pgfusepath{draw}
-}
-
-%%% Original one-input ports
-
-\pgfdeclareshape{american not port}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{bin}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{bin 1}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgf@circ@draworfill
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgf@circ@draworfill
- \endpgfscope
-
- \ifpgfcirc@draw@leads
- %input leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
- \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
- }
-}
-
-\pgfdeclareshape{american buffer port}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{bin}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{bin 1}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgf@circ@draworfill
- \endpgfscope
-
- \ifpgfcirc@draw@leads
- %input leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
- \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
- }
-}
-\pgfdeclareshape{invschmitt}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{bin}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{bin 1}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgf@circ@draworfill
- \endpgfscope
-
- \ifpgfcirc@draw@leads
- %input leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
- \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- %draw inner shape
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- }
-}
-
-\pgfdeclareshape{schmitt}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{bin}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{bin 1}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-.7\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \ifpgfcirc@draw@leads
- %input leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
- \fi
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- %draw inner shape
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- }
-}
-
-
-%%% start european logic ports, from John Kormylo
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-
-% #1 - name
-% #2 - text inside
-% #3 - number of inputs
-% #4 = is it a not?
-%
-% option to add a circle for not-output, see
-% https://github.com/circuitikz/circuitikz/issues/385
-%
-\newif\ifpgf@circ@european@port@circle\pgf@circ@european@port@circlefalse
-\newif\ifpgf@circ@european@port@circle@ieee\pgf@circ@european@port@circle@ieeefalse
-\ctikzset{tripoles/european not shape/.initial=ocirc}
-\ctikzset{tripoles/european not symbol/.is choice}
-\ctikzset{tripoles/european not symbol/triangle/.code={\pgf@circ@european@port@circlefalse}}
-\ctikzset{tripoles/european not symbol/circle/.code={%
-\pgf@circ@european@port@circletrue\pgf@circ@european@port@circle@ieeefalse\ctikzset{tripoles/european not shape=ocirc}}}
-\ctikzset{tripoles/european not symbol/ieee circle/.code={%
-\pgf@circ@european@port@circletrue\pgf@circ@european@port@circle@ieeetrue\ctikzset{tripoles/european not shape=notcirc}}}
-
-\long\def\pgfcircdeclareeurologicport#1#2#3#4{
- \pgfdeclareshape{european #1 port}
- {
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \saveddimen{\boutshift}{%
- \ifpgf@circ@european@port@circle
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \edef\pgf@temp{ocirc}
- \edef\pgf@circ@temp{\ctikzvalof{tripoles/european not shape}}
- \ifx\pgf@temp\pgf@circ@temp % it's ocirc
- \pgfmathsetlength{\pgf@x}{2*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \else % it's ieee not circ
- \pgf@circ@notradius % defined together with ieeestd ports
- \pgf@x=2\pgf@circ@res@temp
- \fi
- \else
- \pgf@x=0pt
- \fi
- }
- \savedmacro\resize{% automatic
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@up = \ctikzvalof{tripoles/european #1 port/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgf@circ@res@down = -\pgf@circ@res@up
- \pgf@circ@res@right = \ctikzvalof{tripoles/european #1 port/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right = .5\pgf@circ@res@right
- \pgf@circ@res@left = -\pgf@circ@res@right
- }%
- \savedmacro\inputs{% get number of inputs
- \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
- \ifnum\pgf@circ@res@count=0
- \pgf@circ@res@count=\ctikzvalof{tripoles/european #1 port/inputs}\relax%
- \fi
- \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
- \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
- \def\inputs{\the\pgf@circ@res@count}%
- }%
- \savedanchor\step{% 1/2 gap at edges
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step = \ctikzvalof{tripoles/european #1 port/height}\pgf@circ@scaled@Rlen
- \divide\pgf@circ@res@step by #3
- \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
- }%
- \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}%
- \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}%
- \savedanchor\left{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
- \savedanchor\right{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}%
- \savedanchor\origin{\pgfpoint{\ctikzvalof{tripoles/european #1 port/origin}\pgf@circ@res@right}{0pt}}%
-
- \anchor{center}{\origin}% for backwards compatibility
- % the text anchor overlaps the logic symbol
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}%
- % create input anchors
- \ifnum#3=1\relax
- \anchor{in}{\southwest\pgfpoint{\pgf@x}{0pt}}% or \step
- \anchor{in 1}{\southwest\pgfpoint{\pgf@x}{0pt}}% or \step
- \anchor{bin}{\left\pgfpoint{\pgf@x}{0pt}}% or \step
- \anchor{bin 1}{\left\pgfpoint{\pgf@x}{0pt}}% or \step
- \else
- \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@european #1 port\endcsname{%
- \pgfmathloop%
- \ifnum\pgfmathcounter>#3%
- \else%
- %\pgfutil@ifundefined{pgf@anchor@european #1 port@in \pgfmathcounter}{% redundant
- \expandafter\xdef\csname pgf@anchor@european #1 port@in \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
- }%
- \expandafter\xdef\csname pgf@anchor@european #1 port@bin \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{4}{#1}% defined above
- }%
- %}{}%
- \repeatpgfmathloop%
- }
- \fi
- \anchor{out}{\northeast\pgf@y=0pt}
- \anchor{bout}{\right\advance\pgf@x by \boutshift\pgf@y=0pt}
-
- \anchor{left}{\left}% edges of component minus leads
- \anchor{right}{\right}
-
- \anchor{north east}{\northeast}% see \Compass macro
- \anchor{south west}{\southwest}
- \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfpoint{0cm}{\pgf@circ@res@up}}
- \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{0cm}}
- \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfpoint{0cm}{\pgf@circ@res@down}}
- \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{0cm}}
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathrectanglecorners
- {\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \endpgfscope
- \ifpgfcirc@draw@leads
- %input leads
- \ifnum#3=1\relax
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}%
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
- \else
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- %\pgf@circ@res@count = #3\relax% redundant
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}
- {\pgf@circ@res@temp}}
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
- \fi
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{%
- \pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
- %
- \pgfusepath{draw}
- %
- \edef\pgf@temp{not}
- \edef\pgf@circ@temp{#4}
- \ifx\pgf@temp\pgf@circ@temp % is a not
- \ifpgf@circ@european@port@circle
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}
- % reset linewidth for IEEE ports, otherwise they will multiply...
- \ifpgf@circ@european@port@circle@ieee\pgfsetlinewidth{\pgfstartlinewidth}\fi
- \pgfnode{\ctikzvalof{tripoles/european not shape}}{west}{}{NOT}{\pgfusepath{stroke}}
- \endpgfscope
- \else
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/european #1 port/not height}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \fi
- \fi
- %
- \pgfpathmoveto{\pgfpointorigin}
- \pgftext{#2}
- }
- }
-}
-\pgfcircdeclareeurologicport{and}{\&}{\pgf@circ@res@count}{}
-\pgfcircdeclareeurologicport{or}{$\ge 1$}{\pgf@circ@res@count}{}
-\pgfcircdeclareeurologicport{xor}{$=1$}{\pgf@circ@res@count}{}
-\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
-\pgfcircdeclareeurologicport{buffer}{$1$}{1}{}
-\pgfcircdeclareeurologicport{nand}{\&}{\pgf@circ@res@count}{not}
-\pgfcircdeclareeurologicport{nor}{$\ge 1$}{\pgf@circ@res@count}{not}
-\pgfcircdeclareeurologicport{xnor}{$=1$}{\pgf@circ@res@count}{not}
-
-%% end european logic ports
-
-%%%%%%%%%%%%%%%%%%%%%%%%
-%% Transistors
-%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-\long\def\pgfcircdeclaretransistor#1#2#3{
- \pgfdeclareshape{#1}
- {
- \savedmacro{\ctikzclass}{\edef\ctikzclass{transistors}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northeast{% upper right
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/#1/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=0pt
- }
- \savedanchor\left{%center left
- \pgf@y=0pt
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/#1/width}\pgf@circ@scaled@Rlen
- }
- \savedanchor\right{%center right -- added by Burak Kelleci % this is really 0,0
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{text}{
- \northeast
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@transisors@fixlabels
- \ifpgf@circuit@fet@bodydiode
- % try to put the text to the right of the flyback diode
- \pgfmathsetlength{\pgf@circ@res@other}{(
- \ctikzvalof{tripoles/#1/bodydiode distance}*
- \ctikzvalof{tripoles/#1/width} +
- \ctikzvalof{tripoles/#1/bodydiode scale}*
- \ctikzvalof{bipoles/diode/height}/2
- )*\pgf@circ@scaled@Rlen}
- \advance\pgf@x by \pgf@circ@res@other
- \fi
- % add a bit of space to avoid central (substrate) terminal if drawn
- \advance\pgf@x by 0.05\pgf@circ@scaled@Rlen\relax
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- \else
- \pgf@y=.7\pgf@y
- \pgf@x= \pgf@circ@scaled@Rlen
- \pgf@x=0.1\pgf@x
- \fi
- }
- \anchor{pathstart}{ % south
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{pathend}{
- \northeast
- }
- \anchor{north}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \northeast
- \pgf@y=0pt
- }
- \anchor{south}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{south west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- }
- \anchor{north east}{
- \northeast
- }
- \anchor{north west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{south east}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{B}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{base}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{bulk}{ %added by Burak Kelleci
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \right
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{nobulk}{ %added by Burak Kelleci
- \left
- \pgf@x=\ctikzvalof{tripoles/#1/base width}\pgf@x
- }
- \anchor{G}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{gate}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{nobase}{
- \left
- \pgf@x=\ctikzvalof{tripoles/#1/base width}\pgf@x
- }
- \anchor{nogate}{
- \left
- \pgf@x=\ctikzvalof{tripoles/#1/gate width}\pgf@x
- }
- \anchor{E}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{emitter}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{C}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{collector}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{D}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{drain}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{body C in}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- \pgf@y=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y
- }
- \anchor{body E in}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- \pgf@y=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y
- }
- \anchor{body C out}{
- \northeast
- \pgf@ya=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- \pgf@ya=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@ya
- \pgf@y=\pgf@ya
- \left
- \pgf@x=-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@x
- \pgf@y=\pgf@ya
- }
- \anchor{body E out}{
- \northeast
- \pgf@ya=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- \pgf@ya=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@ya
- \pgf@y=\pgf@ya
- \left
- \pgf@x=-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@x
- \pgf@y=\pgf@ya
- }
- #2
- \backgroundpath{
- \pgftransformationadjustments
- \pgfsetcolor{\ctikzvalof{color}}
- %
- \ifnum \ctikzvalof{tripoles/#1/curr direction} > 0
- \pgf@circuit@trans@ntypetrue
- \else
- \pgf@circuit@trans@ntypefalse
- \fi
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = \pgf@x
- \left
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- %
- #3
- % BODY DIODE
- \ifpgf@circuit@fet@bodydiode
- \drawbodydiode{#1}
- \fi
- %
- }
-}
-}
-
-\long\def\drawbodydiode#1{
- \pgfscope
- \pgftransformshift{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgftransformrotate{90}
- % diode scale and bodydiode scale interacts. We want the size of the diode
- % proportional to the transistor, so we will:
- % 1) undo diode scale 2) apply transistor scale (using the current class) 3) apply bodydiode scale
- \pgfmathsetmacro{\@@BDscale}{\ctikzvalof{tripoles/#1/bodydiode scale}* \ctikzvalof{\ctikzclass/scale}/\ctikzvalof{diodes/scale}}
- \pgftransformscale{\@@BDscale}
- \ifpgf@circuit@fulldiode
- \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \else
- \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \fi
- \endpgfscope
- % Draw stroke line
- \ifpgf@circuit@strokediode
- \pgfpathmoveto{\pgfpointanchor{pgf@bodydiode}{west}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
- \pgfusepath{stroke}
- \fi
- %Draw upper connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope{}
- %Draw lower connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope
-}
-
-\long\def\declarebpt#1{
- \pgfcircdeclaretransistor{#1}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/base height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/base height}\pgf@y
- }
- }{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % drawing base
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \ifpgf@circuit@bpt@schottky
- % upper
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
- % % lower
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transistor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \edef\@@anchor{center}
- \ifpgf@circuit@trans@ntype
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{btip}
- \pgftransformlineattime{1.0}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{\ctikzvalof{tripoles/#1/arrow pos}}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}%
- }
- \fi
- \else % p-type
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{tip}
- \pgftransformlineattime{1.0}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}%
- }
- \else
- \pgftransformlineattime{\ctikzvalof{tripoles/#1/arrow pos}}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}%
- }
- \fi
- \fi
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \ifpgf@circuit@bpt@drawphoto
- \pgfscope
- \pgfsetarrowsstart{latexslim}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
- \else
- \ifpgf@circuit@bpt@drawbase
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
- \fi
- }
-}
-
-\declarebpt{npn}
-\declarebpt{pnp}
-%
-% multi-emitter and multi-collector BJTs by Romano Giannetti
-%
-\def\pgf@circ@bjt@C@anchor#1{% #1: collector number
- \pgfextractx{\pgf@circ@res@temp}{\basedimension}
- \pgfextracty{\pgf@circ@res@other}{\basedimension}
- \ifnum\cdir>0 % NPN, above
- \pgfpoint{\pgf@circ@res@temp}{%
- \pgf@circ@res@other+\pgfverticaltransformationadjustment*.5*\pgflinewidth+(#1-1)*\multistep}
- \else % PNP, below
- \pgfpoint{\pgf@circ@res@temp}{%
- -\pgf@circ@res@other-\pgfverticaltransformationadjustment*.5*\pgflinewidth-(#1-1)*\multistep}
- \fi
-}
-\def\pgf@circ@bjt@E@anchor#1{% #1: collector number
- \pgfextractx{\pgf@circ@res@temp}{\basedimension}
- \pgfextracty{\pgf@circ@res@other}{\basedimension}
- \ifnum\cdir<0 % PNP, above
- \pgfpoint{\pgf@circ@res@temp}{%
- \pgf@circ@res@other+\pgfverticaltransformationadjustment*.5*\pgflinewidth+(#1-1)*\multistep}
- \else % PNP, below
- \pgfpoint{\pgf@circ@res@temp}{%
- -\pgf@circ@res@other-\pgfverticaltransformationadjustment*.5*\pgflinewidth-(#1-1)*\multistep}
- \fi
-}
-
-\long\def\declarebjt#1{
- \pgfdeclareshape{bjt#1}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{transistors}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- % \cdir is 1 for npn, -1 for pnp
- \savedmacro{\cdir}{\edef\cdir{\ctikzvalof{tripoles/bjt/#1/curr direction}}}
- \savedmacro{\numE}{\edef\numE{\ctikzvalof{tripoles/bjt/emitters}}}
- \savedmacro{\numC}{\edef\numC{\ctikzvalof{tripoles/bjt/collectors}}}
- % step up or down for the additional C/Es
- \saveddimen{\multistep}{\pgfmathsetlength{\pgf@x}{%
- \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
- \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}}
- \saveddimen{\external}{\pgfmathsetlength{\pgf@x}{%
- \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}}
- \savedanchor\basedimension{% these are the dimensions if nC=1 y nE=1
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\northeast{% upper right
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@step}{%
- \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
- \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \ifnum\cdir> 0
- \edef\numup{\numC}\edef\numdown{\numE}
- \else
- \edef\numup{\numE}\edef\numdown{\numC}
- \fi
- \pgfmathsetlength{\pgf@y}{0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
- + (\numup-1)*\pgf@circ@res@step+\pgfverticaltransformationadjustment*.5*\pgflinewidth
- + \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\southeast{% lower right
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@step}{%
- \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
- \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \ifnum\cdir> 0
- \edef\numup{\numC}\edef\numdown{\numE}
- \else
- \edef\numup{\numE}\edef\numdown{\numC}
- \fi
- \pgfmathsetlength{\pgf@y}{-0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
- - (\numdown-1)*\pgf@circ@res@step-\pgfverticaltransformationadjustment*.5*\pgflinewidth
- - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\southwest{% lower left
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@step}{%
- \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
- \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \ifnum\cdir> 0
- \edef\numup{\numC}\edef\numdown{\numE}
- \else
- \edef\numup{\numE}\edef\numdown{\numC}
- \fi
- \pgfmathsetlength{\pgf@y}{-0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
- - (\numdown-1)*\pgf@circ@res@step-\pgfverticaltransformationadjustment*.5*\pgflinewidth
- - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{tripoles/bjt/width}*\pgf@circ@scaled@Rlen
- - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\southwest\pgf@x=0cm\relax}
- \anchor{west}{\southwest\pgf@y=0cm}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@ya=\pgf@y\southwest\pgf@y=\pgf@ya}
- \anchor{south west}{\southwest}
- \anchor{south east}{\southeast}
-
- \anchor{text}{\northeast\pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax}
- \anchor{B}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x\advance\pgf@x by -\external}
- \anchor{base}{\basedimension\pgf@y=0cm\pgf@x=-\pgf@x\advance\pgf@x by -\external}
- \anchor{nobase}{\basedimension\pgf@y=0cm\pgf@x=-\pgf@x}
- % center of the base "bar"
- \anchor{cbase}{\basedimension\pgf@x=-\pgf@x
- \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
- }
- % geometrical centers
- \anchor{vcenter}{\pgf@x=0cm\relax
- \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
- }
- \anchor{gcenter}{%
- \northeast\pgf@xa=0.5\pgf@x
- \southwest\advance\pgf@xa by 0.5\pgf@x
- \pgf@x=\pgf@xa
- \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
- }
- % external connections
- \anchor{E}{
- \ifnum\cdir>0% npn, emitter down
- \southeast
- \else
- \northeast
- \fi
- }% first emitter
- \anchor{emitter}{\ifnum\cdir>0\southeast\else\northeast\fi}% first emitter
- \anchor{C}{\ifnum\cdir<0\southeast\else\northeast\fi}
- \anchor{collector}{\ifnum\cdir<0\southeast\else\northeast\fi}
-
- \backgroundpath{
- \pgftransformationadjustments
- \pgfsetcolor{\ctikzvalof{color}}
- %
- % set the type and up and down number of connections
- %
- \ifnum\cdir> 0
- \pgf@circuit@trans@ntypetrue
- \edef\numup{\numC}
- \edef\numdown{\numE}
- \else
- \pgf@circuit@trans@ntypefalse
- \edef\numup{\numE}
- \edef\numdown{\numC}
- \fi
- \basedimension
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = \pgf@x
- \pgf@circ@res@left = -\pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\multistep
- %
- % set arrow positions options
- %
- \edef\@@anchor{center}\edef\@@pos{\ctikzvalof{tripoles/#1/arrow pos}}
- \ifpgf@circuit@trans@arrowatend
- \edef\@@pos{1.0}
- \ifpgf@circuit@trans@ntype % arrow is toward outside, push it a bit
- \edef\@@anchor{btip}
- \else
- \edef\@@anchor{tip}
- \fi
- \fi
- %
- % Drawing upper connections
- %
- \pgfscope
- \pgf@circ@count@a=\numup\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \advance\pgf@circ@count@a-1\relax
- \pgfmathsetlength{\pgf@circ@res@other}{\the\pgf@circ@count@a*\multistep}%
- \ifnum\pgf@circ@count@a=\numexpr\numup-1\relax % draw the external pin connection
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\external+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
- \pgfpathlineto{\pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
- \else
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
- \fi
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@up+\pgf@circ@res@other}}%
- \pgfsetroundcap % better when connecting to sloped lines
- \pgfusepath{draw}
- \ifpgf@circuit@trans@ntype\else % it's a PNP; draw arrow
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}%
- }{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@up+\pgf@circ@res@other}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
- \repeatpgfmathloop
- \endpgfscope
- %
- % Drawing base
- %
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \ifpgf@circuit@bpt@schottky
- % upper
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
- % lower
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
- \fi
- \pgfsetroundcap % I like it more...
- \pgfusepath{draw}
- \endpgfscope
- %
- % draw base external connection
- %
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-\external}{0pt}}
- \pgfusepath{draw}
- %
- % Drawing lower connections
- %
- \pgfscope
- \pgf@circ@count@a=\numdown\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \advance\pgf@circ@count@a-1\relax
- \pgfmathsetlength{\pgf@circ@res@other}{\the\pgf@circ@count@a*\multistep}%
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint
- {\pgf@circ@res@right}
- {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other}}
- \ifnum\pgf@circ@count@a=\numexpr\numdown-1\relax % draw the external pin connection
- \pgfpathlineto{\pgfpoint
- {\pgf@circ@res@right}
- {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other-\external}}
- \fi
- \pgfsetroundcap % better when connecting to sloped lines
- \pgfusepath{draw}
- \ifpgf@circuit@trans@ntype % it's a NPN; draw arrow
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@down-\pgf@circ@res@other}%
- }{\pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
- \repeatpgfmathloop
- \endpgfscope
- }
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@bjt#1\endcsname{%
- % Start with the maximum collector number and go backwards.
- \pgf@circ@count@a=\numC\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@bjt#1@C\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@bjt@C@anchor{\the\pgf@circ@count@a}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- % and emitters
- \pgf@circ@count@a=\numE\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@bjt#1@E\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@bjt@E@anchor{\the\pgf@circ@count@a}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
- }
-}
-
-\declarebjt{npn}
-\declarebjt{pnp}
-
-% end of multi-bjts
-
-\long\def\declareigbt#1{
- \pgfcircdeclaretransistor{#1}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/gate height}\pgf@y
- }
- }
- {
- %draw upper connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- %draw thicker gate lines
- \pgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/outer base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/outer base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- % set the normal thickness
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \edef\@@extrat{\ctikzvalof{tripoles/#1/outer base thickness}}
- \pgfsetlinewidth{\@@extrat\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %draw lower connection
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transistor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \ifpgf@circuit@trans@ntype
- \edef\@@anchor{btip}\edef\@@pos{1.0}
- \else
- \edef\@@anchor{tip}\edef\@@pos{1.0}
- \fi
- \else
- \edef\@@anchor{center}\edef\@@pos{0.5}
- \fi
- \ifpgf@circuit@trans@ntype
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}%
- }
- \fi
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- %draw gate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}}
- \fi
- \pgfusepath{draw}
- }
-}
-
-\declareigbt{pigbt}
-\declareigbt{nigbt}
-\declareigbt{Lnigbt}
-\declareigbt{Lpigbt}
-
-\pgfcircdeclaretransistor{nmos}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/nmos/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/nmos/gate height}\pgf@y
- }
- }{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \ifpgf@circuit@trans@arrowatend
- \pgftransformshift{\pgfpoint
- {\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{trarrow}{btip}{}{}{\pgfusepath{stroke}}
- \else
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\ctikzvalof{tripoles/nmos/arrow pos}}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \fi
- \endpgfscope
- \fi
-
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-
- \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-}
-
-\pgfcircdeclaretransistor{pmos}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/pmos/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/pmos/gate height}\pgf@y
- }
- }{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \ifpgf@circuit@trans@arrowatend
- \pgftransformshift{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
- }
- \pgftransformrotate{180}
- \pgfnode{trarrow}{tip}{}{}{\pgfusepath{stroke}}
- \else
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\ctikzvalof{tripoles/pmos/arrow pos}}{%
- \pgfpoint%
- {\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \fi
- \endpgfscope
- \fi
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
-
-
- \pgfusepath{draw}
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-
- \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-
- \ifpgf@circuit@pmos@nocircle\else
- % we are not scaling the circle with the MOS --- I think it's better to have it
- % coherent with the poles/nodes of the rest of the circuit.
- \pgfpathcircle{\pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left - \ctikzvalof{nodes width}*\pgf@circ@Rlen}
- {\pgf@circ@res@up+\pgf@circ@res@down}}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \ifpgf@circuit@pmos@emptycircle
- \pgfsetfillcolor{white}
- \fi
- \pgfusepath{draw,fill}
- \fi
-}
-
-%% HEMT FET Transistor
-\pgfcircdeclaretransistor{hemt}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/hemt/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/hemt/gate height}\pgf@y
- }
- }{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/hemt/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/hemt/base height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-\long\def\drawfetcore#1{
- \pgftransformationadjustments
- %top connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
- \ifpgf@circuit@trans@depletiontype
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \else
-
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up*0.45}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up*0.25}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down*0.25}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \fi
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %Bulk connection line
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- %bottom connection
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- %draw thick gate line
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- % arrows
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \ifpgf@circuit@trans@ntype
- \edef\@@anchor{tip}
- \edef\@@pos{1.0}
- \else
- \edef\@@anchor{btip}
- \edef\@@pos{0.0}
- \fi
- \else
- \edef\@@anchor{center}\edef\@@pos{0.6}
- \fi
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \ifpgf@circuit@trans@ntype
- \else
- \pgftransformrotate{180}
- \fi
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
-% GATE CONNECTION
-\ifpgf@circuit@bpt@drawgate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {-\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-\fi
-
-}
-
-\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
-{\pgfcircdeclaretransistor{#1}{
- \anchor{bulk}{\left\pgf@x=0pt}
- \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/gate height}\pgf@y
- }
- #2
- }
- {#3}
-}
-
-\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nfet}
-}
-
-\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pfet}
-}
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfete}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
-\fi
-}
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
-\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfetebulk}
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-% N-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{nigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfete}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/pigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
-\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfetebulk}
-}
-
-% P-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{pigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-\pgfcircdeclaretransistor{njfet}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/njfet/gate height 2}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/njfet/gate height 2}\pgf@y
- }
- }{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- % arrow
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{tip}\edef\@@pos{1.0}
- \else
- \edef\@@anchor{center}\edef\@@pos{0.6}
- \fi
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint{\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclaretransistor{pjfet}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@y
- }
- }{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{btip}\edef\@@pos{1.0}
- \else
- \edef\@@anchor{center}\edef\@@pos{0.4}
- \fi
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-\pgfdeclaretransistorwrapperaddbulk{isfet}{}{%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- % DRAIN CONNECTION
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@up}}
- % DRAIN
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % GATE, DEPLETION TYPE
- \pgfscope %% added
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/isfet/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/isfet/base height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth} %% added
- \pgfusepath{draw} %% added
- \endpgfscope %% added
-
- % BULK
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- % SOURCE
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@down}}
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
- % ARROW
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{tip}\edef\@@pos{1.0}
- \else
- \edef\@@anchor{center}\edef\@@pos{0.6}
- \fi
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfusepath{draw}
-
- % Wavy lines
- \pgfscope
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% end of transistors
-
-%%%%%%%%%%%%%
-%% Switches
-%%%%%%%%%%%%%
-
-\pgfcircdeclarebipole{
- \anchor{out 1}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{out 2}{
- \northeast
- \pgf@y=.8\pgf@y
- }
-}
-{\ctikzvalof{tripoles/toggleswitch/height 2}}
-{toggleswitch}
-{\ctikzvalof{tripoles/toggleswitch/height}}
-{\ctikzvalof{tripoles/toggleswitch/width}}
-{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetdash{}{0cm}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% operational and instrumentation amplifiers
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{op amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\left{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/op amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- % Triangle
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Output terminal
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@right}{0pt}}
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-% Op amp shape as in european standard EN 60617
-\pgfdeclareshape{en amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{up}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{down}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/en amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \pgfsetrectcap
- \pgfusepath{draw}
-
-
- \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\hbox{\ctikzvalof{tripoles/en amp/font2}\ctikzvalof{tripoles/en amp/text}}}
- % \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font2}$\mathstrut{\triangleright}\,\mathrm{A}$}
- }
-}
-
-% Fully differential output op amp
-% Contributed by Kristofer M. Monisit
-\pgfdeclareshape{fd op amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\outline{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y\pgf@x=0pt\relax
- }
- \anchor{north}{
- \northwest\pgf@x=0pt\relax
- }
- \savedanchor\left{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd op amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd op amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/fd op amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out up}{
- \northwest
- \pgf@y=\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{out down}{
- \northwest
- \pgf@y=-\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{out +}{
- \outline
- \pgf@y=\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{out -}{
- \outline
- \pgf@y=-\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bout +}{
- \outline
- \pgf@xa=\pgf@x\pgf@ya=\pgf@y
- \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
- {\pgfpoint{\pgf@xa}{0pt}}
- {\pgfpoint{0pt}{\pgf@ya}}
- }
- \anchor{bout -}{
- \outline
- \pgf@xa=\pgf@x\pgf@ya=\pgf@y
- \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
- {\pgfpoint{\pgf@xa}{0pt}}
- {\pgfpoint{0pt}{\pgf@ya}}
- \pgf@y=-\pgf@y
- }
- \anchor{bout up}{
- \northwest
- \pgf@xa=\pgf@x\pgf@ya=\pgf@y
- \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
- {\pgfpoint{\pgf@xa}{0pt}}
- {\pgfpoint{0pt}{\pgf@ya}}
- }
- \anchor{bout down}{
- \northwest
- \pgf@xa=\pgf@x\pgf@ya=\pgf@y
- \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
- {\pgfpoint{\pgf@xa}{0pt}}
- {\pgfpoint{0pt}{\pgf@ya}}
- \pgf@y=-\pgf@y
- }
- % end border anchors
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{out}{% should not be used
- \left
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x \pgf@y=-\pgf@y }
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- % Triangle
- % Includes output terminals in the traingular shape
- % to ensure that diagonal joins are properly displayed
- % we first draw the main triangle and the leads with normal thickness,
- % and the redraw the main triangle with the component shape
- \pgfscope
- % shift origin a bit to ease calculations
- \pgftransformxshift{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@step
-
- % Initial point (right vertex)
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
-
- % Negative output terminal
- \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\ctikzvalof{tripoles/fd op amp/output height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@up}}}
-
- % Top vertex
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
-
- % Bottom vertex
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
-
- % Positive output terminal
- \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@down}}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\ctikzvalof{tripoles/fd op amp/output height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@down}}}
-
- % Right vertex
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
-
- \pgfpathclose
- \pgfusepath{stroke}
-
- % ok, now we'll redraw the triangle with the class specific
- % thickness and optionally fill
-
- \pgfscope
- \pgf@circ@setlinewidth{quadpoles}{\pgflinewidth}
-
- % Initial point (right vertex)
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- % Top vertex
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- % Bottom vertex
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
-
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope % thick and fill
- \endpgfscope % shift
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Negative output terminal label
- \pgftext[right, bottom, x=3pt, y=1pt, at=\pgfpoint{0pt}{0.425\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@oplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Positive output terminal label
- \pgftext[right, top, x=3pt, y=-1pt, at=\pgfpoint{0pt}{0.425\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@oplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-
-% Instrumentation amplifier with differential output
-\pgfdeclareshape{fd inst amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- % when tikz calls the anchor it wants the relative position in the lengths
- % \pgf@x \pgf@y
- % \pgfpoint* functions set that variables
- % anchors are visible outside and run on use
- \anchor{center}{\pgfpointorigin}
- % savedanchors are internals and run on node creation (not use)
- % bounding-box top left
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{nw}{
- \northwest
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y\pgf@x=0pt\relax
- }
- \anchor{north}{
- \northwest\pgf@x=0pt\relax
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \ctikzvalof{tripoles/fd inst amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/fd inst amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- % reference voltage input anchors.
- \savedanchor\refv{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/fd inst amp/refv pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
- }
- % we need both because they are normally drawn under the amp, and if you
- % mirror it vertically you need them
- \anchor{refv up}{
- \refv
- }
- \anchor{refv down}{
- \refv
- \pgf@y=-\pgf@y
- }
- \savedanchor\outport{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
- }
- \anchor{out}{
- \outport
- \pgf@y=0pt
- }
- \anchor{out +}{
- \outport
- }
- \anchor{out -}{
- \outport
- \pgf@y=-\pgf@y
- }
- \savedanchor\outportfixed{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- }
- \anchor{out up}{
- \outportfixed
- }
- \anchor{out down}{
- \outportfixed
- \pgf@y=-\pgf@y
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/fd inst amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@x=-\pgf@x \pgf@y=0pt
- }
- \anchor{bout +}{
- \outport
- \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
- }
- \anchor{bout -}{
- \outport
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
- }
- \anchor{bout up}{
- \outportfixed
- \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
- }
- \anchor{bout down}{
- \outportfixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
- }
- % end border anchors
- %
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- % let's start drawing the component
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- %
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- % main component, normally in thicker lines
- \pgfscope
- \newdimen\pgf@circ@res@right@double
- \pgf@circ@res@right@double=2\pgf@circ@res@right
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@step
- %first point (near output)
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{0}}
- %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
- % and then to the input "front up", "down", to the output short side "down"
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@down}}
- % ...and close
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- % input terminal up
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}}
- %
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % input terminal down
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % output leads down and up
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}} %
- \pgftext[right, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$-\;$\else$+\;$\fi}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}} %
- \pgftext[right, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$+\;$\else$-\;$\fi}
- %
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-% Transconductance amplifier (Transkonduktanzverstรคrker)
-\pgfdeclareshape{gm amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/gm amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/gm amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/gm amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/gm amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgfscope
- \newdimen\pgf@circ@res@right@double
- \pgf@circ@res@right@double=2\pgf@circ@res@right
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@step
- %Umrandung:
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{0}} %geรคndert startpunkt neu am ausgangsstrich
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@up}}%vom Ausgang nach oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@down}}%ecke links unten nach rechts unten
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right}{0pt}} %
- \pgfsetrectcap
- \pgfusepath{draw}
-
- }
-}
-
-% Instrumentation amplifier
-\pgfdeclareshape{inst amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- % when tikz calls the anchor it wants the relative position in the lengths
- % \pgf@x \pgf@y
- % \pgfpoint* functions set that variables
- % anchors are visible outside and run on use
- \anchor{center}{\pgfpointorigin}
- % savedanchors are internals and run on node creation (not use)
- % bounding-box top left
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{nw}{
- \northwest
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/inst amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- % reference voltage input anchors.
- \savedanchor\refv{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/inst amp/refv pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
- }
- % we need both because they are normally drawn under the amp, and if you
- % mirror it vertically you need them
- \anchor{refv up}{
- \refv
- }
- \anchor{refv down}{
- \refv
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/inst amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- % let's start drawing the component
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- %
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- % main component, normally in thicker lines
- \pgfscope
- \newdimen\pgf@circ@res@right@double
- \pgf@circ@res@right@double=2\pgf@circ@res@right
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@step
- %first point (near output)
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{0}}
- %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
- % and then to the input "front up", "down", to the output short side "down"
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@down}}
- % ...and close
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}}
- %
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Output terminal
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{0pt}} %
- %
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-% Instrumentation amplifier with terminals for gain resistance between inputs
-\pgfdeclareshape{inst amp ra}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- % bounding-box top left
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{nw}{
- \northwest
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y\pgf@x=0pt\relax
- }
- \anchor{north}{
- \northwest\pgf@x=0pt\relax
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
- }
- % inputs (+-)
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- % R ampli anchors. They are by default at 20% more than R-length distance
- % you can change that with the `ra pos` key (use 0.5 for one-R).
- \savedanchor\raOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\pgf@circ@scaled@Rlen
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{ra up}{
- \raOneFixed
- }
- \anchor{ra down}{
- \raOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\raOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\pgf@circ@scaled@Rlen
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{ra-}{
- \raOne
- }
- \anchor{ra+}{
- \raOne
- \pgf@y=-\pgf@y
- }
- % power supplies
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/inst amp ra/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- % reference voltage input anchors.
- \savedanchor\refv{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=0.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=0.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/inst amp ra/refv pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
- }
- % we need both because they are normally drawn under the amp, and if you
- % mirror it vertically you need them
- \anchor{refv up}{
- \refv
- }
- \anchor{refv down}{
- \refv
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/inst amp ra/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bra up}{
- \raOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bra down}{
- \raOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bra-}{
- \raOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bra+}{
- \raOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- % drawing of the component
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \newdimen\pgf@circ@res@right@double
- \pgf@circ@res@right@double=2\pgf@circ@res@right
-
- % main component, normally in thicker lines
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@step
- %primer punto: la linea de salida (lado componente)
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{0}}
- %from the exit to the top (short side)... (note that the .6 must be copied in \up anchor
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
- % and then to the input "front up", "down", to the output short side "down"
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@down}}
- % ...and close
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- % ra terminal -
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
- % ra terminal +
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {-\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {-\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}}
- %
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Output terminal
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{0pt}} %
- %
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-% Buffer
-% Contributed by Danilo Piazzalunga
-\pgfdeclareshape{buffer}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/buffer/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/buffer/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bin}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \northwest
- \pgfmathsetlength{\pgf@x}{0.7*\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
- }
-}
-
-% plain amplifier, no symbols
-\pgfdeclareshape{plain amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/plain amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/plain amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/plain amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/plain amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@up}}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
- }
-}
-
-% plain amplifier, no symbols, one input
-\pgfdeclareshape{plain mono amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt\relax
- }
- \anchor{in}{
- \inOne
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/plain amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/plain amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {0pt}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
- }
-}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% electromechanical device (motor/generator)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{elmech}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{electromechanicals}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/elmech/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/elmech/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgfpointorigin
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -.5\ht\pgfnodeparttextbox
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{%
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{top}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathstart}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathend}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{bottom}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{%
- \@tempdima=\pgf@x\@tempdimb=\pgf@y
- \northwest\pgf@circ@res@other=-\pgf@x
- \pgfpointborderellipse{\pgfqpoint{\@tempdima}{\@tempdimb}}{\pgfqpoint{\pgf@circ@res@other}{\pgf@circ@res@other}}
- }
- \anchor{block north west}{\northwest\pgf@x=0.5\pgf@x}
- \anchor{block south west}{\northwest\pgf@x=0.5\pgf@x\pgf@y=-\pgf@y}
- \anchor{block north east}{\northwest\pgf@x=-0.5\pgf@x}
- \anchor{block south east}{\northwest\pgf@x=-0.5\pgf@x\pgf@y=-\pgf@y}
- \anchor{block up right}{
- \northwest
- % remember that pgf@x is negative
- % center of the block is at 0.5*H+W*cos(30)/2
- \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
- \pgf@x=-0.5\pgf@x
- }
- \anchor{block up left}{
- \northwest
- % remember that pgf@x is negative
- % center of the block is at 0.5*H+W*cos(30)/2
- \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
- \pgf@x=0.5\pgf@x
- }
- \anchor{block down right}{
- \northwest
- % remember that pgf@x is negative
- % center of the block is at 0.5*H+W*cos(30)/2
- \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
- \pgf@y=-\pgf@y
- \pgf@x=-0.5\pgf@x
- }
- \anchor{block down left}{
- \northwest
- % remember that pgf@x is negative
- % center of the block is at 0.5*H+W*cos(30)/2
- \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
- \pgf@y=-\pgf@y
- \pgf@x=0.5\pgf@x
- }
- \behindbackgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@scaled@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope % clip the bar: whole size minus the circle
- \pgfpathrectanglecorners{\pgfpoint{-.5\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfsetfillcolor{\ctikzvalof{color}}
- \pgfusepath{fill, draw}
- \endpgfscope
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{white}
- % ...but override it if the class is defined!
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{draw, fill}
- \fi
- \endpgfscope
- }
-}
-
-%%%%%%%%%%%%%%%%%%%
-%% Magnetron
-%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{magnetron}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}} % class of these components
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{anode}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{cathode1}{
- \northwest
- \pgf@circ@res@step=\pgf@y
- \pgfmathparse{cos(105)}
- \pgf@x=\pgfmathresult\pgf@circ@res@step
- \pgfmathparse{sin(105)}
- \pgf@y=\pgfmathresult\pgf@circ@res@step
- %\pgfpointorigin
- %\pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
- }
- \anchor{cathode2}{
- \northwest
- \pgf@circ@res@step=\pgf@y
- \pgfmathparse{cos(75)}
- \pgf@x=\pgfmathresult\pgf@circ@res@step
- \pgfmathparse{sin(75)}
- \pgf@y=\pgfmathresult\pgf@circ@res@step
- %\pgfpointorigin
- %\pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
- }
- \anchor{text}{
- \pgfpointorigin
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -.5\ht\pgfnodeparttextbox
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{%
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{top}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathstart}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathend}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{bottom}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfmathsetlength{\pgf@circ@res@other}{sin(15)*\pgf@circ@res@up}
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- %create outer circle
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@right}
- \pgf@circ@draworfill
- %create chambers
- \foreach \angle in {45,135,225,315}{
- \pgfpathmoveto{ \pgfpointpolar{\angle}{0.6\pgf@circ@res@right}}
- \pgfpathlineto{ \pgfpointpolar{\angle}{\pgf@circ@res@right}}
- }
- \pgfsetroundcap
- \pgfusepath{draw}
- \pgfscope
- %draw connection from outside
- %anode
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- %cathodes
- \pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- %create cathode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.15\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- %create anode
- \pgfpathmoveto{\pgfpoint{0.3\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Electronic tubes, submitted by J. op den Brouw
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Draw tube outline
-\def\pgf@circ@tubes@drawtube{%
- \ifdim\ctikzvalof{tubes/width}pt>\ctikzvalof{tubes/height}pt\relax
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfutil@tempdima=\pgf@circ@res@right
- \advance\pgfutil@tempdima by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgfutil@tempdima}{\pgf@circ@res@up}}
- \pgfpatharc{90}{-90}{\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{-\pgfutil@tempdima}{-\pgf@circ@res@up}}
- \pgfpatharc{270}{90}{\pgf@circ@res@up}
- \else
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{0pt}}
- \pgfutil@tempdima=\pgf@circ@res@up
- \advance\pgfutil@tempdima by -\pgf@circ@res@right
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
- \pgfpatharc{180}{0}{\pgf@circ@res@right}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfutil@tempdima}}
- \pgfpatharc{180}{0}{-\pgf@circ@res@right}
- \fi
- \pgfpathclose
-}
-
-%% The diode (tube), triode, tetrode and pentode only differ in the
-%% number of grids. So we construct a generic declare function in
-%% which we can put code for the grid anchors and grid drawing code
-%% \pgfcircdeclaretube{tube name}{grid anchors}{grid drawing code}
-\long\def\pgfcircdeclaretube#1#2#3{%
- \pgfdeclareshape{#1}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
- % x and y should be half the Rlen
- \pgf@y=\pgf@circ@res@up
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgf@circ@res@right
- \pgf@x=.5\pgf@x
- }
- \anchor{north} {%
- \northwest
- \pgf@x=0pt
- }
- \anchor{east}{%
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0pt
- }
- \anchor{south}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{west}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{north west}{%
- \northwest
- }
- \anchor{north east}{%
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{anode} {%
- \northwest
- \pgf@x=0pt
- }
- \anchor{cathode}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
- }
- \anchor{cathode 1}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
- }
- \anchor{cathode 2}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=-\ctikzvalof{tubes/cathode width}\pgf@x
- }
- \anchor{filament 1}{%
- \northwest
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
- \pgf@x=\pgfmathresult\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{filament 2}{%
- \northwest
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
- \pgf@x=-\pgfmathresult\pgf@x
- \pgf@y=-\pgf@y
- }
-
- % Extra anchors
- #2
-
- \backgroundpath{
- \pgfscope
- % Line width for tripoles
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- % Setup to draw tube
- \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up=\ctikzvalof{tubes/tube radius}\pgf@circ@res@up
- \pgf@circ@res@right=\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
-
- % Tube outline
- \pgf@circ@tubes@drawtube
-
- % Setup to draw grid, filament, anode and cathode
- \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up=0.5\pgf@circ@res@up
- \pgf@circ@res@right=0.5\pgf@circ@res@right
-
- % Tube fill color (if any)
- \pgf@circ@draworfill
-
- % Grid drawing
- #3
-
- % Filament (is not drawn by default)
- \ifpgf@circuit@tubes@filament
- \pgf@circ@res@temp=-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up
- \advance\pgf@circ@res@temp by -\ctikzvalof{tubes/filament distance}\pgf@circ@res@up
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
- \pgf@xa=\pgfmathresult\pgf@circ@res@right
- \pgfmathparse{\ctikzvalof{tubes/tube radius}+\ctikzvalof{tubes/tube radius}*cos(\ctikzvalof{tubes/filament angle}}
- \pgf@ya=\pgfmathresult\pgf@circ@res@up
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@ya}}
- \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@ya}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@circ@res@up}}
- \pgf@circuit@tubes@filamentfalse
- \fi
-
- % Anode (or plate)
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}} % north
- \pgfpathlineto{\pgfpoint{0pt}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
-
- % Cathode
- \ifpgf@circuit@tubes@nocathode
- \pgf@circuit@tubes@nocathodefalse
- \else
- \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
- \ifpgf@circuit@tubes@fullcathode
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
- \pgf@circuit@tubes@fullcathodefalse
- \else
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-\ctikzvalof{tubes/cathode right extend}\pgf@circ@res@up}}
- \fi
- \fi
-
- % Draw the background
- \pgfusepath{draw}
- \endpgfscope
- }
- }
-}
-
-\pgfcircdeclaretube{diodetube}{}{} % shape diode already exists
-
-\pgfcircdeclaretube{triode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
- \anchor{control} {%
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
-}
-{
- % Grid protrusion
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
-}
-
-\pgfcircdeclaretube{tetrode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \pgf@y=0.5\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{control} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \pgf@y=0.5\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{screen} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
- \pgf@y=0.5\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
-}
-{
- % Grid x/y points
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
- \pgfutil@tempdimb=-\pgfutil@tempdima
- \pgfutil@tempdima=0.5\pgfutil@tempdima
- \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \pgfutil@tempdimb=0.5\pgfutil@tempdimb
- \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- % Grid protrusion
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
-}
-
-\pgfcircdeclaretube{pentode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{control} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{screen} {%
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
- \anchor{suppressor} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
-}
-{
- % Grid x/y points
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
- \pgfutil@tempdimb=-\pgfutil@tempdima
- \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- % Grid protrusion
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
-}
-
-\pgfcircdeclaretube{pentode suppressor to cathode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{control} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{screen} {%
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
-}
-{
- % Grid x/y points
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
- \pgfutil@tempdimb=-\pgfutil@tempdima
- \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- % Grid protrusion
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \ifnum\pgf@circ@count@a>1\relax
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
- \fi
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
- % Grid: connection from suppressor to cathode
- \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima-2*\ctikzvalof{tubes/grid separation}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
-
-}
-
-%%%---------- close: tex/pgfcirctripoles
-%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
-%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Quadripoles
-
-\long\def\pgfcircdeclarequadpole#1#2#3{
- \pgfdeclareshape{#1}
- {
- \savedmacro{\ctikzclass}{\edef\ctikzclass{inductors}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedmacro{\stretto}{\def\stretto{\ctikzvalof{quadpoles/#1/inner}}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{quadpoles/#1/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=.5\pgf@circ@scaled@Rlen
- \pgf@x=-\ctikzvalof{quadpoles/#1/width}\pgf@x
- }
- %% we define the upper right (positive coord) dot (which is B1)
- \savedanchor{\innerdot}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@xa=.5\pgf@circ@scaled@Rlen
- \pgf@xa=-\ctikzvalof{quadpoles/#1/width}\pgf@xa
- % by default use the cute inductor size
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@scaled@Rlen/2}
- % check if it's american
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}
- \edef\pgf@temp{american}
- \ifx\pgf@circ@temp\pgf@temp
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/americaninductor/height}*\pgf@circ@scaled@Rlen/2}
- \fi
- % check if it's european
- \edef\pgf@temp{european}
- \ifx\pgf@circ@temp\pgf@temp
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/fullgeneric/height}*\pgf@circ@scaled@Rlen/2}
- \fi
- \pgfmathsetlength\pgf@y{0.5*\pgf@circ@scaled@Rlen}
- }
- \savedanchor{\outerdot}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@xa=.5\pgf@circ@scaled@Rlen
- \pgf@xa=-\ctikzvalof{quadpoles/#1/width}\pgf@xa
- % by default use the cute inductor size
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@scaled@Rlen/2}
- % check if it's american
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}
- \edef\pgf@temp{american}
- \ifx\pgf@circ@temp\pgf@temp
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/americaninductor/height}*\pgf@circ@scaled@Rlen/2}
- \fi
- % check if it's european
- \edef\pgf@temp{european}
- \ifx\pgf@circ@temp\pgf@temp
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/fullgeneric/height}*\pgf@circ@scaled@Rlen/2}
- \fi
- \pgfmathsetlength\pgf@y{0.5*\pgf@circ@scaled@Rlen}
- }
- \anchor{A2}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{B1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{A1}{
- \northwest
- }
- \anchor{B2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- %% dot's anchors
- \anchor{inner dot A1}{\innerdot\pgf@x=-\pgf@x}
- \anchor{outer dot A1}{\outerdot\pgf@x=-\pgf@x}
- \anchor{inner dot A2}{\innerdot\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{outer dot A2}{\outerdot\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{inner dot B1}{\innerdot}
- \anchor{outer dot B1}{\outerdot}
- \anchor{inner dot B2}{\innerdot\pgf@y=-\pgf@y}
- \anchor{outer dot B2}{\outerdot\pgf@y=-\pgf@y}
- % geographical
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{base}{
- \northwest
- \pgf@x=0pt
- }
- #3
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- #2
- }
- }
-}
-
-
-\def\pgf@circ@drawtransformerbasicanchor{
- \ctikzvalof{quadpoles/trans/height}
- \anchor{AA2}{
- \northwest
- \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
- }
- \anchor{AA1}{
- \northwest
- \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
- }
-}
-
-%% Null styles that can be used to change individually the L1 and L2
-%% inductors of the transformer.
-
-\ctikzset{transformer L1/.style={}}
-\ctikzset{transformer L2/.style={}}
-
-\def\pgf@circ@drawtransformerbasicbody{
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@down}%
- }
-
- \pgfkeys{\circuitikzbasekey/.cd, transformer L1}
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
-
- \endpgfscope
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@up}%
- }
-
- \pgfkeys{\circuitikzbasekey/.cd, transformer L2}
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{\thisshape-L1}{b}}
-
- \pgfpathmoveto{\pgfpointanchor{\thisshape-L1}{a}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{\thisshape-L2}{a}}
-
- \pgfpathmoveto{\pgfpointanchor{\thisshape-L2}{b}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
-}
-
-
-\pgfcircdeclarequadpole{transformer}{
- \pgf@circ@drawtransformerbasicbody
-}{\pgf@circ@drawtransformerbasicanchor}
-
-\pgfcircdeclarequadpole{transformer core}{
-
- \pgf@circ@drawtransformerbasicbody
-
- % use the chocke line thickness
- \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
-
- % Find the distance from center for the lines representing the core
- % the 2.5 is for backward compatibility --- the distance was calculated as a fraction
- % of the whole component, now as a fraction of the distance between coils, to be
- % compatible with the quadpoles "inner" style.
- \pgfmathsetlength{\pgf@circ@res@other}{2.5*\stretto*\ctikzvalof{quadpoles/transformer core/core width}*\pgf@circ@res@right}
-
- \pgfmoveto{\pgfpoint%
- {\pgf@circ@res@other}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint%
- {\pgf@circ@res@other}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- %% this should be just -\pgf@circ@res@other, but in case someone define an asymmetric trafo someday...
- \pgfmathsetlength{\pgf@circ@res@other}{2.5*\stretto*\ctikzvalof{quadpoles/transformer core/core width}*\pgf@circ@res@left}
- \pgfmoveto{\pgfpoint%
- {\pgf@circ@res@other}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint%
- {\pgf@circ@res@other}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgfusepath{draw}
-}{\pgf@circ@drawtransformerbasicanchor}
-
-
-\pgfcircdeclarequadpole{gyrator}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{quadpoles}{\pgflinewidth}
- \pgfmathsetlength{\pgf@circ@res@other}{min(.7*\stretto*\pgf@circ@res@up, .8*\pgf@circ@res@right)} % radius
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{-\pgf@circ@res@other}}
- \pgfpatharc{-90}{90}{\pgf@circ@res@other}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpatharc{90}{270}{\pgf@circ@res@other}
- \pgfpathclose
- \pgf@circ@draworfill
-}{}
-
-%%%%%%%%%%%%%%%%%%%%
-%% Block elements
-%%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{mixer}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@boxed
- \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{adder}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@boxed
- \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{oscillator}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@boxed
- \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \else
- \pgf@y=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{north}{
- \northwest
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@x=.5\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y}
- \anchor{north east}{ \northwest \pgf@x=0pt\relax}
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{text}{
- \pgf@x=-2\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen{}
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
-
- % draw outer box
- \ifpgf@circuit@boxed{}
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{circulator}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@boxed
- \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{3}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed{}
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % inner arrow
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
- \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-%% gridnode
-\pgfdeclareshape{gridnode}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
-
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{up}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{down}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{right}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{left}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- \relax
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{text}{
- \pgf@x=-2\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@step = \ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{0.05mm}
-
- % draw grid
- \foreach \line in {-1,-.5,...,1}
- {
- \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\line\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\line\pgf@circ@res@down}}
- }
-
- %prevent from draw the inner cross twice
- \foreach \line in {-.5,0,...,.5}
- {
- \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\line\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\line\pgf@circ@res@down}}
- }
- \pgfusepath{draw}
- }
-}
-
-
-% Wilkinson divider
-\pgfdeclareshape{wilkinson}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/wilkinson/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x= \pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=-\ctikzvalof{tripoles/wilkinson/width}\pgf@x
- }
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{out2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgf@circ@twoportbox
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- % draw inner resisitor - european or american style is recognised
- {
- \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgftransformrotate{90}
-
- % calculate size of resistor
- \ifpgf@circuit@europeanresistor
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{genericshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
- \else
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{resistorshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
- \fi
- }
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{wilk@int@R}{right}}
-
- \pgfpathmoveto{\pgfpointanchor{wilk@int@R}{left}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-
-%% couplers generics
-\long\def\pgfcircdeclarefourport#1#2{
-
- \pgfdeclareshape{#1}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{quadpoles/#1/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=.5\pgf@circ@scaled@Rlen
- \pgf@x=-\ctikzvalof{quadpoles/#1/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{port1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{port4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
- \anchor{1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
-
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
-
- % draw inner stuff
- #2
-
- % draw inner text
- \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
- }
- }
-}
-
-% four-port
-\pgfcircdeclarefourport{fourport}{}
-
-% straight coupler
-\pgfcircdeclarefourport{coupler}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
-}
-
-% "bended" coupler
-\pgfcircdeclarefourport{coupler2}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%%%---------- close: tex/pgfcircquadpoles
-%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
-%%%---------- open: tex/pgfcircmultipoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Multipoles by Romano Giannetti
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%
-%% Chips
-%%%%%%%%%
-
-% let's use the same shifts everywhere, no magic numbers
-\def\pgf@circ@dip@pin@shift{0.5}
-\def\pgf@circ@qfp@pin@shift{0.25}
-
-% derived from https://tex.stackexchange.com/a/146753/38080
-% original author Mark Wibrow
-% Thanks also to John Kormylo https://tex.stackexchange.com/a/372996/38080
-% a lot of thanks to @marmot for the un-rotation hint
-% https://tex.stackexchange.com/a/473571/38080
-
-% DIP (dual in line package) chips
-
-\pgfdeclareshape{dipchip}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{chips}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro\numpins{%
- \pgf@circ@count@a=\ctikzvalof{multipoles/dipchip/num pins}%
- \def\numpins{\the\pgf@circ@count@a}
- }
- \savedanchor\centerpoint{%
- \pgf@x=-.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \savedanchor\origin{\pgfpoint{0pt}{0pt}}
- \anchor{center}{\origin}
- \anchor{text}{\centerpoint}% to adjust text
- \saveddimen\height{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{((\numpins)
- *\ctikzvalof{multipoles/dipchip/pin spacing})*\pgf@circ@scaled@Rlen/2}%
- }%
- \saveddimen{\chipspacing}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/pin spacing}}}
- \saveddimen{\width}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/width}}}
- \saveddimen{\extshift}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
- % standard anchors
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{0.5*((\numpins)
- *\ctikzvalof{multipoles/dipchip/pin spacing})*\pgf@circ@scaled@Rlen/2}%
- \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/width}}
- }
- \anchor{dot}{\northwest
- \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
- \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- % start drawing
- \backgroundpath{%
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step = \ctikzvalof{multipoles/dipchip/pin spacing}\pgf@circ@scaled@Rlen
- \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
- \pgfscope% (for the line width)
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
- \pgf@circ@draworfill
- %% upside mark
- \ifpgf@circuit@chip@topmark
- \pgfpathmoveto{\pgfpoint{0.2*\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpatharc{0}{180}{0.2*\pgf@circ@res@left}
- \fi
- \pgfusepath{stroke}%
- \pgfsetcolor{\ctikzvalof{color}}
- % Adding the pin number
- \ifpgf@circuit@chip@shownumbers
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
- \ifpgf@circuit@chip@straightnumbers
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
- \else
- \pgfmathsetmacro{\rot}{0}
- \pgfmathsetmacro{\quadrant}{0}
- \fi
- \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
- \def\mytext{\ctikzvalof{multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \ifcase\quadrant % rotation 0
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation -90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or %rotation 180
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation +90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \fi
- \endpgfscope
- \ifdim\pgf@circ@res@other>0pt
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \edef\padfrac{\ctikzvalof{multipoles/external pad fraction}}
- \ifnum\padfrac>0
- \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
- % left side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % right side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \else
- % left side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % right side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
- \pgfusepath{stroke}
- \endpgfscope
- \fi
- }%
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@dipchip{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\numpins\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@dipchip@pin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@dipchip@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
- }
-
-% QFP (quad flat package) chips
-
-\pgfdeclareshape{qfpchip}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{chips}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro\numpins{%
- \pgf@circ@count@a=\ctikzvalof{multipoles/qfpchip/num pins}%
- \def\numpins{\the\pgf@circ@count@a}
- }
- \savedanchor\centerpoint{%
- \pgf@x=-.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \savedanchor\origin{\pgfpoint{0pt}{0pt}}
- \anchor{center}{\origin}
- \anchor{text}{\centerpoint}% to adjust text
- \saveddimen\height{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{((\numpins+2)
- *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
- }%
- \saveddimen\width{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{((\numpins+2)
- *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
- }%
- \saveddimen{\chipspacing}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/qfpchip/pin spacing}}}
- \saveddimen{\extshift}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
- % standard anchors
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{0.5*((\numpins+2)
- *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
- \pgf@x=-\pgf@y
- }
- \anchor{dot}{\northwest
- \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
- \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- % start drawing
- \backgroundpath{%
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step = \ctikzvalof{multipoles/qfpchip/pin spacing}\pgf@circ@scaled@Rlen
- \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
- \pgfscope% (for the line width)
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- %% upside mark
- \ifpgf@circuit@chip@topmark
- \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2-\pgf@circ@res@step/2}}
- \pgfpathlineto{\pgfpoint{-\width/2+\pgf@circ@res@step/2}{\height/2}}
- \else
- \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2}}
- \fi
- %% rest of the shape
- \pgfpathlineto{\pgfpoint{\width/2}{\height/2}}
- \pgfpathlineto{\pgfpoint{\width/2}{-\height/2}}
- \pgfpathlineto{\pgfpoint{-\width/2}{-\height/2}}
- \pgfpathclose
- \pgf@circ@draworfill
- % Adding the pin number
- \pgfsetcolor{\ctikzvalof{color}}
- \ifpgf@circuit@chip@shownumbers
- \pgf@circ@count@a=\numpins%
- \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
- % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
- \ifpgf@circuit@chip@straightnumbers
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
- \else
- \pgfmathsetmacro{\rot}{0}
- \pgfmathsetmacro{\quadrant}{0}
- \fi
- \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
- \def\mytext{\ctikzvalof{multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \ifcase\quadrant % rotation 0
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \or % rotation -90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \or %rotation 180
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \or % rotation +90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \fi
- \endpgfscope
- \ifdim\pgf@circ@res@other>0pt
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins%
- \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \edef\padfrac{\ctikzvalof{multipoles/external pad fraction}}
- \ifnum\padfrac>0
- \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
- % left side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % bottom side pads
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
- % right side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % top side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
- \else
- % left side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % bottom side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
- % right side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % top side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \pgfusepath{stroke}
- \endpgfscope
- \fi
- }%
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@qfpchip{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\numpins%
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \expandafter\xdef\csname pgf@anchor@qfpchip@pin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@qfpchip@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop%
- }%
- }
-
-%% anchors for DIP
-\def\pgf@circ@dippinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \c@pgf@countc=\numpins\relax
- \divide\c@pgf@countc by 2
- \ifnum #1 > \the\c@pgf@countc
- % right side
- \pgfpoint{\width/2+#2*\extshift}{-\height/2+(\pgf@circ@dip@pin@shift-\c@pgf@countc+#1-1)*\chipspacing}
- \else
- \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@dip@pin@shift-#1)*\chipspacing}
-\fi
-}
-
-%% anchors for QFP
-\def\pgf@circ@qfppinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \c@pgf@countc=\numpins\relax
- \divide\c@pgf@countc by 4
- \ifnum #1 > \the\c@pgf@countc
- \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 2
- \ifnum #1 > \the\c@pgf@countb
- \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 3
- \ifnum #1 > \the\c@pgf@countb
- % 3*npins/4 < pin, top side
- \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift+\c@pgf@countb-#1)*\chipspacing}{\height/2+#2*\extshift}%
- \else
- % 2*npins/4 < pin <= 3*npins/4, right side
- \pgfpoint{\width/2+#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}%
- \fi
- \else
- % npins/4 < pin <= 2*npins/4, bottom side
- \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}{-\height/2-#2*\extshift}%
- \fi
- \else
- % <= npins/4, left side
- \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-#1)*\chipspacing}%
- \fi
-}
-
-%%%%%%%%%%%%%%%%%
-%% Rotary Switch
-%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{rotaryswitch}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northeast{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- % the magic number is 0.25/cos(35)
- % try to recalculate it for the actual switch
- \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=.3052\pgf@circ@res@temp
- \edef\a{\ctikzvalof{multipoles/rotary/angle}}
- \edef\r{\ctikzvalof{nodes width}}
- \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@x}{\r*\pgf@circ@scaled@Rlen + \pgf@circ@res@temp}
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- % the magic number is 0.25/cos(35)
- % try to recalculate it for the actual switch
- \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=.3052\pgf@circ@res@temp
- \edef\a{\ctikzvalof{multipoles/rotary/angle}}
- \edef\r{\ctikzvalof{nodes width}}
- \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@x}{-\r*\pgf@circ@scaled@Rlen - (\a<90 ? 1 : 1-2*cos(\a))*\pgf@circ@res@temp}
- }
- \savedanchor\central{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- % the magic number is 0.25/cos(35)
- % try to recalculate it for the actual switch
- \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=.3052\pgf@circ@res@temp
- \edef\a{\ctikzvalof{multipoles/rotary/angle}}
- \edef\r{\ctikzvalof{nodes width}}
- \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@x}{(\a<90 ? 0 : cos(\a))*\pgf@circ@res@temp}
- }
- % external square limits
- \savedanchor\extnorthwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- \pgf@x=.3052\pgf@x % the magic number is 0.25/cos(35)
- \pgf@x=2.5\pgf@x % external square size
- \pgf@y=-\pgf@x %square thing when angle=180?
- }
- \saveddimen{\width}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{0.3052*\pgf@circ@scaled@Rlen*\ctikzvalof{tripoles/spdt/width}}}
- % radius of the connector
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % shape type
- \savedmacro{\cshape}{\def\cshape{\ctikzvalof{multipoles/rotary/shape}}}
- \savedmacro{\channels}{\def\channels{\ctikzvalof{multipoles/rotary/channels}}}
- \savedmacro{\angle}{\def\angle{\ctikzvalof{multipoles/rotary/angle}}}
- \savedmacro{\wiper}{\def\wiper{\ctikzvalof{multipoles/rotary/wiper}}}
- \savedmacro{\stepa}{\pgfmathsetmacro{\stepa}{2*\ctikzvalof{multipoles/rotary/angle}/(\ctikzvalof{multipoles/rotary/channels}-1)}}
- % mid of the lever, to stack switches
- %\anchor{mid}{\midlever}
- \anchor{mid}{\northwest
- \pgf@circ@res@temp=-\pgf@x
- \pgfmathsetlength{\pgf@x}{\pgf@circ@res@temp*(-1+cos(\wiper))}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp*sin(\wiper)}
- }
- % center anchors
- \anchor{cin}{ \northwest \pgf@y=0pt\advance\pgf@x by \radius}
- % horizontal angles
- \anchor{in}{ \northwest \pgf@y=0pt}
- \anchor{ain}{ \northwest \pgf@y=0pt}
-
- \anchor{center}{ \central \pgf@y=0pt }
- \anchor{east}{ \northeast \pgf@y=0pt }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \central \pgf@y=-\pgf@y }
- \anchor{north}{ \central }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northeast }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northeast \pgf@y=-\pgf@y }
-
- \anchor{ext center}{ \pgf@y=0pt \pgf@x=0pt \advance\pgf@x by -\width}
- \anchor{ext east}{ \extnorthwest \pgf@y=0pt \pgf@x=-\pgf@x \advance\pgf@x by -\width}
- \anchor{ext west}{ \extnorthwest \pgf@y=0pt \advance\pgf@x by -\width}
- \anchor{ext south}{ \extnorthwest \pgf@x=0pt \pgf@y=-\pgf@y \advance\pgf@x by -\width}
- \anchor{ext north}{ \extnorthwest \pgf@x=0pt \advance\pgf@x by -\width}
- \anchor{ext south west}{ \extnorthwest \pgf@y=-\pgf@y \advance\pgf@x by -\width}
- \anchor{ext north east}{ \extnorthwest \pgf@x=-\pgf@x \advance\pgf@x by -\width}
- \anchor{ext north west}{ \extnorthwest \advance\pgf@x by -\width}
- \anchor{ext south east}{ \extnorthwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y \advance\pgf@x by -\width}
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@res@right = \width
- \pgf@circ@res@left = -\width
-
- \pgfscope %wiper
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \pgf@circ@res@temp=\radius\relax
- \pgf@circ@res@temp=\ctikzvalof{multipoles/rotary/thickness}\pgf@circ@res@temp
- \pgfsetlinewidth{2\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\wiper}{2\pgf@circ@res@right}}}
- \pgfsetroundcap\pgfusepath{draw}
- \endpgfscope
-
- \ifpgf@circ@rotaryarrow
- \pgfscope % arrow
- \ifpgf@circ@rotaryarrow@ccw\pgfsetarrowsstart{latexslim}\fi
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % center of cin node
- \pgftransformrotate{\wiper}
- \pgfpathmoveto{\pgfpointpolar{50}{1.0\pgf@circ@res@right}}
- \pgfpatharc{50}{-50}{1.0\pgf@circ@res@right}
- \ifpgf@circ@rotaryarrow@cw\pgfsetarrowsend{latexslim}\fi
- \pgfusepath{draw}
- \endpgfscope
- \fi
-
- % \typeout{CHANNELS\space\channels\space ANGLE\space\angle STEPA\space\stepa}
- \pgf@circ@count@a=\channels\relax
- \pgfmathsetmacro{\currenta}{-\angle}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % \typeout{LOOPIN\space\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
- \pgfscope
- \pgftransformshift{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\currenta}{2\pgf@circ@res@right}}}
- \pgfnode{\cshape}{center}{}{\thisshape-out \the\pgf@circ@count@a}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfmathsetmacro{\currenta}{\currenta+\stepa}
- % \typeout{LOOPOUT\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
-
- \pgfscope % input
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
- \endpgfscope
- }
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@rotaryswitch{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\channels\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@out\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{1}{0}%
- }
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@cout\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{0}%
- }
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@aout\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@sqout\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotarysqanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
-}
-
-\def\pgf@circ@rotaryanchor#1#2#3{% #1: numero del pin; #2: 1 - x pos, 0 - center; #3 0: inner, 1 outer
- \pgf@circ@res@temp=\width
- \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
- \pgfmathsetlength{\pgf@x}{2*(\pgf@circ@res@temp+#3*\radius/2)*cos(\myangle))+#2*\radius}
- \pgfmathsetlength{\pgf@y}{2*(\pgf@circ@res@temp+#3*\radius/2)*sin(\myangle)}
- \advance\pgf@x by -\pgf@circ@res@temp
-}
-
-\def\pgf@circ@rotarysqanchor#1{% external square anchors
- \pgf@circ@res@temp=\width
- \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
- \pgfpointborderrectangle{\pgfpointpolar{\myangle}{1pt}}{\pgfpoint{2.5\pgf@circ@res@temp}{2.5\pgf@circ@res@temp}}
- \advance\pgf@x by -\pgf@circ@res@temp
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Seven segments displays
-%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{bare7seg}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{displays}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\dotstatus}{\edef\dotstatus{\pgf@circ@sevenseg@dotstate}}
- \saveddimen{\dotspace}{% the dot is on the right, and occupy the same as the thickness
- \ifpgf@circ@sevenseg@dot
- \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/thickness}}
- \else
- \pgf@x=0pt
- \fi
- }
- % The object extension is more or less (-width/2,-width) to (width/2,width)
- % and adjusted for line thickness (both sides) and eventually the dot
- \saveddimen{\width}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}}
- \saveddimen{\gap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/segment sep}}}
- \saveddimen{\boxgap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/box sep}}}
- \savedanchor{\southwest}{% both negative
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
- -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
- \pgfmathsetlength{\pgf@y}{-\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
- -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
- }
- \savedanchor{\northeast}{% both positive
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circ@sevenseg@dot
- \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{seven seg/thickness}}
- \else
- \pgf@circ@res@other=0pt
- \fi
- \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
- +0.5*\ctikzvalof{seven seg/thickness}+\pgf@circ@res@other+\ctikzvalof{seven seg/box sep}}
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
- +0.5*\ctikzvalof{seven seg/thickness}+\ctikzvalof{seven seg/box sep}}
- }
- \savedanchor{\topright}{% anchor without the box sep and the thickness
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{north west}{\southwest\pgf@y=-\pgf@y}
- \anchor{north east}{\northeast}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\southwest}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0pt}
- \anchor{south}{\southwest\pgf@x=0pt}
- \anchor{west}{\southwest\pgf@y=0pt}
- \anchor{a}{\topright\pgf@x=0pt}
- \anchor{b}{\topright\pgf@y=0.5\pgf@y}
- \anchor{c}{\topright\pgf@y=-0.5\pgf@y}
- \anchor{d}{\topright\pgf@y=-\pgf@y\pgf@x=0pt}
- \anchor{e}{\topright\pgf@x=-\pgf@x\pgf@y=-0.5\pgf@y}
- \anchor{f}{\topright\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{g}{\pgfpointorigin}
- \anchor{dot}{\topright\pgf@y=-\pgf@y\advance\pgf@x by \dotspace}
- \behindbackgroundpath{%
- \southwest % I do not want the dot here, it will stick out
- \pgf@circ@res@up = -\pgf@y
- \pgf@circ@res@down = \pgf@y
- \pgf@circ@res@right = \pgf@x
- \pgf@circ@res@left = -\pgf@x
- \pgfscope
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfpathrectanglecorners%
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@left+\dotspace}{\pgf@circ@res@up}}
- \ifpgf@circ@sevenseg@box
- \pgf@circ@draworfill
- \else
- \pgf@circ@maybefill
- \fi
- \endpgfscope
- \edef\bits{\ctikzvalof{seven seg/bits}}
- \pgfscope
- \pfg@circ@sseg@drawbits{\bits}
- \endpgfscope
- \pgfscope
- \ifpgf@circ@sevenseg@dot
- \pgf@circ@sseg@drawdots
- \fi
- \endpgfscope
- }
-}
-
-\def\pgf@circ@sseg@splitbits#1#2#3#4#5#6#7\relax{%split the seven bits
- \edef\@@a{#1}\edef\@@b{#2}\edef\@@c{#3}\edef\@@d{#4}\edef\@@e{#5}\edef\@@f{#6}\edef\@@g{#7}%
-}
-\def\pgf@circ@sseg@drawone#1#2#3#4#5{% #1 on off the x1, y1, x2 , y2
- \ifnum #1 > 0\relax
- \pgfsetcolor{\ctikzvalof{seven seg/color on}}
- \else
- \pgfsetcolor{\ctikzvalof{seven seg/color off}}
- \fi
- \pgfpathmoveto{\pgfpoint{#2}{#3}}
- \pgfpathlineto{\pgfpoint{#4}{#5}}
- \pgfusepath{draw}
-}
-\def\pfg@circ@sseg@drawbits#1{% #1 must be 7 bits
- \expandafter\pgf@circ@sseg@splitbits#1\relax% a bit of magic...
- \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
- \pgfsetlinewidth{\ctikzvalof{seven seg/thickness}}
- % \pgfsetroundcap
- \pgfsetarrowsstart{Triangle Cap[]}
- \pgfsetarrowsend{Triangle Cap[]}
- % segments
- \pgf@circ@sseg@drawone{\@@a}{-\width/2+\gap}{\width}{\width/2-\gap}{\width}
- \pgf@circ@sseg@drawone{\@@b}{\width/2}{\width-\gap}{\width/2}{0pt+\gap}
- \pgf@circ@sseg@drawone{\@@c}{\width/2}{0pt-\gap}{\width/2}{-\width+\gap}
- \pgf@circ@sseg@drawone{\@@d}{\width/2-\gap}{-\width}{-\width/2+\gap}{-\width}
- \pgf@circ@sseg@drawone{\@@e}{-\width/2}{-\width+\gap}{-\width/2}{0pt-\gap}
- \pgf@circ@sseg@drawone{\@@f}{-\width/2}{0pt+\gap}{-\width/2}{\width-\gap}
- \pgf@circ@sseg@drawone{\@@g}{-\width/2+\gap}{0pt}{\width/2-\gap}{0pt}
-}
-\def\pgf@circ@sseg@drawdots{% dots
- \edef\what{empty}
- \ifx\what\pgf@circ@sevenseg@dotstate
- % do nothing
- \else
- \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
- \edef\what{off}
- \ifx\what\pgf@circ@sevenseg@dotstate
- % dot off
- \pgfsetfillcolor{\ctikzvalof{seven seg/color off}}
- \pgfsetcolor{\ctikzvalof{seven seg/color off}}
- \else
- % dot on
- \pgfsetfillcolor{\ctikzvalof{seven seg/color on}}
- \pgfsetcolor{\ctikzvalof{seven seg/color on}}
- \fi
- \pgfpathcircle{\pgfpoint{\width/2+2*\pgf@circ@res@other}{-\width}}{\pgf@circ@res@other}
- \pgfusepath{draw,fill}
- \fi
-}
-
-
-%%%%%%
-%%%%%% Flip-flops
-%%%%%%
-
-% Flip flops are a specialized kind of dipchip.
-% they have a class by themselves
-
-%% flip flop definitions --- by default empty
-%% pin texts
-\ctikzset{multipoles/flipflop/t1/.initial={}}
-\ctikzset{multipoles/flipflop/t2/.initial={}}
-\ctikzset{multipoles/flipflop/t3/.initial={}}
-\ctikzset{multipoles/flipflop/t4/.initial={}}
-\ctikzset{multipoles/flipflop/t5/.initial={}}
-\ctikzset{multipoles/flipflop/t6/.initial={}}
-\ctikzset{multipoles/flipflop/tu/.initial={}}
-\ctikzset{multipoles/flipflop/td/.initial={}}
-% pin clock wedge flags
-\ctikzset{multipoles/flipflop/c1/.initial={0}}
-\ctikzset{multipoles/flipflop/c2/.initial={0}}
-\ctikzset{multipoles/flipflop/c3/.initial={0}}
-\ctikzset{multipoles/flipflop/c4/.initial={0}}
-\ctikzset{multipoles/flipflop/c5/.initial={0}}
-\ctikzset{multipoles/flipflop/c6/.initial={0}}
-\ctikzset{multipoles/flipflop/cu/.initial={0}}
-\ctikzset{multipoles/flipflop/cd/.initial={0}}
-% pin negation circle flags
-\ctikzset{multipoles/flipflop/n1/.initial={0}}
-\ctikzset{multipoles/flipflop/n2/.initial={0}}
-\ctikzset{multipoles/flipflop/n3/.initial={0}}
-\ctikzset{multipoles/flipflop/n4/.initial={0}}
-\ctikzset{multipoles/flipflop/n5/.initial={0}}
-\ctikzset{multipoles/flipflop/n6/.initial={0}}
-\ctikzset{multipoles/flipflop/nu/.initial={0}}
-\ctikzset{multipoles/flipflop/nd/.initial={0}}
-
-
-% Thanks to @marmot
-\tikzset{flipflop def/.code=\pgfqkeys{\circuitikzbasekey/multipoles/flipflop}{#1}}
-
-% default set of flip flops
-\tikzset{
- % async
- latch/.style={flipflop, flipflop def={t1=D, t6=Q, t3=CLK, t4=\ctikztextnot{Q}}},
- flipflop SR/.style={flipflop, flipflop def={t1=S, t3=R, t6=Q, t4=\ctikztextnot{Q}}},
- % sync
- flipflop D/.style={flipflop, flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
- flipflop T/.style={flipflop, flipflop def={t1=T, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
- flipflop JK/.style={flipflop, flipflop def={t1=J, t3=K, c2=1, t6=Q, t4=\ctikztextnot{Q}}},
- % additional features
- add async SR/.style={flipflop def={tu={\ctikztextnot{SET}}, td={\ctikztextnot{RST}}}},
- dot on notQ/.style={flipflop def={t4={Q}, n4=1}},
-}
-
-%
-% commodity macro to draw the clock wedges. They leave the size of the
-% wedge in \pgf@circ@res@temp so that a possible label can be displaced.
-%
-\def\pgf@circ@do@wedge@left{
- \pgf@circ@res@temp=0pt\relax
- \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step+\wedge}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\wedge}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step-\wedge}}
- \pgfusepath{stroke}
- \pgf@circ@res@temp=\wedge
- \fi
-}
-\def\pgf@circ@do@wedge@right{
- \pgf@circ@res@temp=0pt\relax
- \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step+\wedge}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\wedge}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step-\wedge}}
- \pgfusepath{stroke}
- \pgf@circ@res@temp=-\wedge
- \fi
-}
-\def\pgf@circ@do@wedge@up{
- \pgf@circ@res@temp=0pt\relax
- \ifnum\ctikzvalof{multipoles/flipflop/cu}>0
- \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up-\wedge}}
- \pgfpathlineto{\pgfpoint{\wedge}{\pgf@circ@res@up}}
- \pgfusepath{stroke}
- \pgf@circ@res@temp=-\wedge
- \fi
-}
-\def\pgf@circ@do@wedge@down{
- \pgf@circ@res@temp=0pt\relax
- \ifnum\ctikzvalof{multipoles/flipflop/cd}>0
- \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down+\wedge}}
- \pgfpathlineto{\pgfpoint{\wedge}{\pgf@circ@res@down}}
- \pgfusepath{stroke}
- \pgf@circ@res@temp=\wedge
- \fi
-}
-% generic flip-flop shape
-\pgfdeclareshape{flipflop}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{flipflops}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- \savedmacro\numpins{\def\numpins{6}}
- \savedanchor\centerpoint{%
- \pgf@x=-.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \savedanchor\origin{\pgfpoint{0pt}{0pt}}
- \anchor{center}{\origin}
- \anchor{text}{\centerpoint}% to adjust text
- \saveddimen\height{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{((\numpins)
- *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf@circ@scaled@Rlen/2}%
- }%
- \saveddimen{\chipspacing}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/pin spacing}}}
- \saveddimen{\width}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/width}}}
- \saveddimen{\extshift}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
- % standard anchors
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{0.5*((\numpins)
- *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf@circ@scaled@Rlen/2}%
- \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/width}}
- }
- \anchor{dot}{\northwest
- \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
- \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- % upper and lower pin
- \anchor{up}{\northwest\pgf@x=0pt\advance\pgf@y by\extshift }
- \anchor{down}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y\advance\pgf@y by-\extshift}
- \anchor{bup}{\northwest\pgf@x=0pt }
- \anchor{bdown}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- % start drawing
- \backgroundpath{%
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step = \ctikzvalof{multipoles/flipflop/pin spacing}\pgf@circ@scaled@Rlen
- \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfscope% (for the line width)
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
- \pgf@circ@draworfill
- \pgfusepath{stroke}%
- \endpgfscope
- % Adding the pin number
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
- \ifpgf@circuit@chip@straightnumbers
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
- \else
- \pgfmathsetmacro{\rot}{0}
- \pgfmathsetmacro{\quadrant}{0}
- \fi
- \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
- % text
- \def\mytext{\ctikzvalof{multipoles/flipflop/font}\space
- \ctikzvalof{multipoles/flipflop/t\the\pgf@circ@count@c}%
- \pgf@circ@strut\space}
- % \typeout{TEXT\space\mytext}
- \pgfmathloop%
- \def\wedge{\ctikzvalof{multipoles/flipflop/clock wedge size}\pgf@circ@res@step}
- \pgf@circ@res@temp=0pt\relax
- \ifnum\pgf@circ@count@a>0
- \ifcase\quadrant % rotation 0
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgf@circ@do@wedge@left
- % \typeout{TEXT Left Q1\space\mytext}
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgf@circ@do@wedge@right
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation -90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgf@circ@do@wedge@left
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgf@circ@do@wedge@right
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or %rotation 180
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgf@circ@do@wedge@left
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgf@circ@do@wedge@right
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation +90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgf@circ@do@wedge@left
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgf@circ@do@wedge@right
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- % Now the up and down text
- % up
- \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf@circ@strut\ctikzvalof{multipoles/flipflop/tu}\space}
- \pgf@circ@do@wedge@up
- \ifcase\quadrant % rotation 0
- \pgftext[top,
- at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or % rotation -90
- \pgftext[right,
- at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or %rotation 180
- \pgftext[bottom,
- at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or % rotation +90
- \pgftext[left,
- at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \fi
- % down
- \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf@circ@strut\ctikzvalof{multipoles/flipflop/td}\space}
- \pgf@circ@do@wedge@down
- \ifcase\quadrant % rotation 0
- \pgftext[bottom,
- at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or % rotation -90
- \pgftext[left,
- at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or %rotation 180
- \pgftext[top,
- at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or % rotation +90
- \pgftext[right,
- at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \fi
- % external pins
- \ifdim\pgf@circ@res@other>0pt
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % left side pins
- \pgf@circ@count@c=\pgf@circ@count@a
- %% we draw the pin only if it's defined either a text, a clock wedge or a not pin
- %% Or'ing tests in core TeX is tough
- \edef\@@or{0}
- % Just expand the key the minimum needed
- \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf@circ@count@c}}\edef\@@x{x}
- \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \ifnum\@@or>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfusepath{stroke}
- \fi
- % right side pins
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \edef\@@or{0}
- \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf@circ@count@c}}\edef\@@x{x}
- \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- % \typeout{TEST\space\@@tmp\space\@@x}
- \ifnum\@@or>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfusepath{stroke}
- \fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
- % up side
- \edef\@@or{0}
- \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/tu}}\edef\@@x{x}
- \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cu}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- % \typeout{TEST\space\@@tmp\space\@@x}
- \ifnum\@@or>0
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \pgfusepath{stroke}
- \fi
- % down side
- \edef\@@or{0}
- \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/td}}\edef\@@x{x}
- \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cd}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- % \typeout{TEST\space\@@tmp\space\@@x}
- \ifnum\@@or>0
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfusepath{stroke}
- \fi
- \endpgfscope
- \fi % external pin width >0
- %
- % draw "inverting" circles on outputs, they must be last
- %
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % left side pins
- \pgf@circ@count@c=\pgf@circ@count@a
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfnode{ocirc}{east}{}{\thisshape-N\the\pgf@circ@count@c}{\pgfusepath{stroke}}
- \endpgfscope\fi
- % right side pins
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfnode{ocirc}{west}{}{\thisshape-N\the\pgf@circ@count@c}{\pgfusepath{stroke}}
- \endpgfscope\fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
- % up side
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
- \ifnum\@@tmp>0\pgfscope
- \pgftransformshift{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfnode{ocirc}{south}{}{\thisshape-Nu}{\pgfusepath{stroke}}
- \endpgfscope\fi
- % down side
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nd}}
- \ifnum\@@tmp>0\pgfscope
- \pgftransformshift{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfnode{ocirc}{north}{}{\thisshape-Nd}{\pgfusepath{stroke}}
- \endpgfscope\fi
- \endpgfscope
- }%
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@flipflop{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\numpins\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@flipflop@pin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@flipflop@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
-}
-
-%
-% MUX-DEMUXES
-%
-% Thanks to @marmot
-\tikzset{muxdemux def/.code=\pgfqkeys{\circuitikzbasekey/multipoles/muxdemux}{#1}}
-\tikzset{demux/.style={muxdemux, muxdemux def={Lh=4, Rh=8, NL=1, NB=3, NR=8}}}
-\tikzset{one bit adder/.style={muxdemux,
- muxdemux def={Lh=4, NL=2, Rh=2, NR=1, NB=1, w=1.5,
- inset w=0.5, inset Lh=2, inset Rh=1.5}}}
-\tikzset{ALU/.style={muxdemux,
- muxdemux def={Lh=5, NL=2, Rh=2, NR=1, NB=2, NT=1, w=2,
- inset w=1, inset Lh=2, inset Rh=0, square pins=1}}}
-%generic mux-demux shape
-\pgfdeclareshape{muxdemux}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{muxdemuxes}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % pins on the four sides
- % \savedmacro\NL{%
- % \pgf@circ@count@a=\ctikzvalof{multipoles/muxdemux/NL}%
- % \def\NL{\the\pgf@circ@count@a}
- % }
- \savedmacro\NL{\edef\NL{\ctikzvalof{multipoles/muxdemux/NL}}}
- \savedmacro\NR{\edef\NR{\ctikzvalof{multipoles/muxdemux/NR}}}
- \savedmacro\NT{\edef\NT{\ctikzvalof{multipoles/muxdemux/NT}}}
- \savedmacro\NB{\edef\NB{\ctikzvalof{multipoles/muxdemux/NB}}}
- \savedmacro\squarepins{\edef\squarepins{\ctikzvalof{multipoles/muxdemux/square pins}}}
- % topleft and topright sizes
- \savedanchor{\topleft}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/Lh}*\pgf@circ@scaled@Rlen/2}
- \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
- }
- \savedanchor{\topright}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/Rh}*\pgf@circ@scaled@Rlen/2}
- \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
- }
- \savedanchor{\insetnortheast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/inset Lh}*\pgf@circ@scaled@Rlen/2}
- \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*
- (\ctikzvalof{multipoles/muxdemux/w}-2*\ctikzvalof{multipoles/muxdemux/inset w})*\pgf@circ@scaled@Rlen/2}
- }
- \saveddimen{\insethright}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/inset Rh}*\pgf@circ@scaled@Rlen/2}}
- \saveddimen{\extshift}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
- \savedanchor{\northwest}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*max(\ctikzvalof{multipoles/muxdemux/Rh},\ctikzvalof{multipoles/muxdemux/Lh})*\pgf@circ@scaled@Rlen/2}
- \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- \anchor{center}{\pgfpointorigin}
- \anchor{top right}{\topright}
- \anchor{bottom right}{\topright\pgf@y=-\pgf@y}
- \anchor{right}{\topright\pgf@y=0pt\relax}
- \anchor{top left}{\topleft}
- \anchor{bottom left}{\topleft\pgf@y=-\pgf@y}
- \anchor{left}{\topleft\pgf@y=0pt\relax}
- \anchor{top}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
- \divide\pgf@y by 2 \pgf@x=0pt\relax}
- \anchor{bottom}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
- \divide\pgf@y by 2 \pgf@y=-\pgf@y \pgf@x=0pt\relax}
- \anchor{inset top right}{\pgf@ya=\insethright\insetnortheast\advance\pgf@y by -0.5\pgf@ya}
- \anchor{inset bottom right}{\pgf@ya=\insethright\insetnortheast\advance\pgf@y by -0.5\pgf@ya\pgf@y=-\pgf@y}
- \anchor{inset right}{\insetnortheast\pgf@y=0pt\relax}
- \anchor{inset top left}{\insetnortheast\pgf@ya=\pgf@y\topleft\pgf@y=\pgf@ya}
- \anchor{inset bottom left}{\insetnortheast\pgf@ya=\pgf@y\topleft\pgf@y=-\pgf@ya}
- \anchor{inset left}{\topleft\pgf@y=0pt\relax}
- \anchor{inset bottom}{\topleft\pgf@xa=\pgf@x\pgf@ya=\insethright
- \insetnortheast\pgf@xb=\pgf@x\pgf@yb=\pgf@x
- \pgfpoint{(\pgf@xa+\pgf@xb)/2}{-\pgf@ya+\pgf@yb/2}}
- \anchor{inset top}{\topleft\pgf@xa=\pgf@x\pgf@ya=\insethright
- \insetnortheast\pgf@xb=\pgf@x\pgf@yb=\pgf@x
- \pgfpoint{(\pgf@xa+\pgf@xb)/2}{\pgf@ya-\pgf@yb/2}}
- \anchor{inset center}{\topleft\pgf@xa=\pgf@x\insetnortheast
- \advance\pgf@x by \pgf@xa \divide\pgf@x by 2 \pgf@y=0pt\relax}
- \anchor{narrow center}{\insetnortheast\pgf@xa=\pgf@x\topright
- \advance\pgf@x by \pgf@xa \divide\pgf@x by 2\pgf@y=0pt\relax}
- \anchor{center up}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
- \divide\pgf@y by 2
- \pgf@yb = \insethright \advance\pgf@y by \pgf@yb
- \divide\pgf@y by 2 \pgf@x=0pt\relax}
- \anchor{center down}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
- \divide\pgf@y by 2
- \pgf@yb = \insethright \advance\pgf@y by \pgf@yb
- \divide\pgf@y by 2 \pgf@y=-\pgf@y \pgf@x=0pt\relax}
- \anchor{text}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*
- \ctikzvalof{multipoles/muxdemux/inset w}*\pgf@circ@scaled@Rlen/2}
- \advance\pgf@x by -.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \backgroundpath{%
- \topleft
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@left = \pgf@x
- \topright
- \pgf@circ@res@other = \pgf@y
- \pgf@circ@res@right = \pgf@x
- \insetnortheast
- \pgf@circ@res@step = \pgf@x
- \pgf@circ@res@temp = \pgf@y
- %
- % external block
- %
- \pgfscope% (for the line width)
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- % inset, starting down
- \ifdim\pgf@circ@res@temp>0pt % inset
- % \typeout{INSETw\space\the\pgf@circ@res@right\space x\space\the\pgf@circ@res@step\space y\space\the\pgf@circ@res@temp}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\insethright}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\insethright}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}
- \fi
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- % now we have to draw the pins, if needed
- \ifdim\extshift>0pt\ifpgfcirc@draw@leads\pgfscope % let's avoid too much indent
- % Ok, we have to draw the leads (a.k.a. pins)
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- % We mimic the anchors here --- probably there is a better way
- % left pins
- \ifnum\NL>0\relax % not indented, closed on \repeatpgfmathloop
- \pgf@circ@count@a=\NL\relax
- \pgf@circ@count@b=\NL \divide\pgf@circ@count@b by 2 % see https://tex.stackexchange.com/questions/146523/why-does-numexpr-integer-division-round-rather-than-truncate
- \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
- \insetnortheast\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
- \ifdim\pgf@circ@res@down>0pt % check if we have an inset
- % we have to check oddity
- \ifodd\NL
- \ifnum\NL=1
- % only centerpin, step should not be used, but anyway...
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/(\NL)}
- \else
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/(\NL-1)}
- \fi
- \else
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/\NL}
- \fi
- \else % no inset
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@up/\NL}
- \fi
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- %%%%%
- \ifdim\pgf@circ@res@down>0pt % check if we have an inset
- \ifnum\pgf@circ@count@a>\pgf@circ@count@b\relax
- % for lower pins we have to shift them down
- % \typeout{DEBUGTEST1\space #1\space entering\space \NL}
- \ifodd\NL
- % odd number of pins
- \ifnum\pgf@circ@count@a=\numexpr\the\pgf@circ@count@b+1\relax
- % centerpin!
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \ifnum\squarepins>0
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{0pt}}
- \else
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\extshift}{0pt}}
- \fi
- \else
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a+1)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a+1)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
- \fi
- \else
- % even numer of pins: just go down
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
- \fi
- \else
- % nothing need for #1<=NL/2
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \fi
- \else
- % no inset
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \fi
- %%%%%
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop\fi%
- % right pins
- \ifnum\NR>0\pgf@circ@count@a=\NR\relax
- \pgfmathloop%
- \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@up=\pgf@y
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@up/\NR}
- \ifnum\pgf@circ@count@a>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop\fi%
- % bottom pins
- \ifnum\NB>0\pgf@circ@count@a=\NB\relax %%%
- \pgfmathloop%
- \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
- \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@right/\NB}
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@res@down-\pgf@circ@res@up)/(\pgf@circ@res@right-\pgf@circ@res@left)*\pgf@circ@res@step}
- \ifnum\pgf@circ@count@a>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {-\pgf@circ@res@down+(\NB-\pgf@circ@count@a+0.5)*\pgf@circ@res@other}}
- \ifnum\squarepins>0
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {-max(\pgf@circ@res@down, \pgf@circ@res@up)-\extshift}}
- \else
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {-\pgf@circ@res@down+(\NB-\pgf@circ@count@a+0.5)*\pgf@circ@res@other-\extshift}}
- \fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop\fi%
- % top pins
- \ifnum\NT>0\pgf@circ@count@a=\NT\relax
- \pgfmathloop%
- \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
- \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@right/\NT}
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@res@down-\pgf@circ@res@up)/(\pgf@circ@res@right-\pgf@circ@res@left)*\pgf@circ@res@step}
- \ifnum\pgf@circ@count@a>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {\pgf@circ@res@down-(\NT-\pgf@circ@count@a+0.5)*\pgf@circ@res@other}}
- \ifnum\squarepins>0
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {max(\pgf@circ@res@down, \pgf@circ@res@up)+\extshift}}
- \else
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {\pgf@circ@res@down-(\NT-\pgf@circ@count@a+0.5)*\pgf@circ@res@other+\extshift}}
- \fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop\fi%
- % end drawing pins; stroke them
- \pgfusepath{stroke}
- \endpgfscope\fi\fi
- }
- % let's start adding anchors
- \pgfutil@g@addto@macro\pgf@sh@s@muxdemux{%
- % left side anchors
- \pgf@circ@count@a=\NL\relax
- % \typeout{STARTGENERATINGLEFT\space\the\pgf@circ@count@a\space FOR\space\thisshape\space\NL}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % \typeout{GENERATINGLEFT\space\the\pgf@circ@count@a\space FOR\space\thisshape\space\NL}
- % we will create two anchors per pin: the "normal one" like `lpin 1` for the
- % external leads, and the "border one" like `blpin 1` for internal ones.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@muxdemux@lpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@L@anchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@muxdemux@blpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@L@anchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- % right anchors
- \pgf@circ@count@a=\NR\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `rpin 1` for the
- % external leads, and the "border one" like `brpin 1` for internal ones.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@muxdemux@rpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@R@anchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@muxdemux@brpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@R@anchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- % bottom anchors
- \pgf@circ@count@a=\NB\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `bpin 1` for the
- % external leads, and the "border one" like `bbpin 1` for internal ones.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@muxdemux@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@B@anchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@muxdemux@bbpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@B@anchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- % top anchors
- \pgf@circ@count@a=\NT\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `tpin 1` for the
- % external leads, and the "border one" like `btpin 1` for internal ones.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@muxdemux@tpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@T@anchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@muxdemux@btpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@T@anchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
-}
-
-%% left anchors for muxdemux
-
-\def\pgf@circ@muxdemux@L@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \topleft
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \insetnortheast
- \pgf@xb=\pgf@x
- \pgf@yb=\pgf@y
- \ifnum#1>\NL
- \PackageError{circuitikz}{%
- You requested left pin #1 for mux/demux shape \thisshape\space \MessageBreak
- which has been defined with \NL\space left pins%
- }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
- \fi
- \pgf@circ@count@a=\NL \divide\pgf@circ@count@a by 2 % see https://tex.stackexchange.com/questions/146523/why-does-numexpr-integer-division-round-rather-than-truncate
- % \typeout{LEFT \the\pgf@xa \space \the\pgf@ya \space \NL}
- \ifnum\NL>1
- \ifdim\pgf@yb>0pt % check if we have an inset
- % we have to check oddity
- \ifodd\NL
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@ya-\pgf@yb)/(\NL-1)}
- \else
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@ya-\pgf@yb)/\NL}
- \fi
- \else % no inset
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@ya/\NL}
- \fi
- \ifdim\pgf@yb>0pt % check if we have an inset
- \ifnum#1>\pgf@circ@count@a\relax
- % for lower pins we have to shift them down
- % \typeout{DEBUGTEST1\space #1\space entering\space \NL}
- \ifodd\NL
- % odd number of pins
- \ifnum#1=\numexpr\the\pgf@circ@count@a+1\relax
- % centerpin!
- \ifnum#2=0\relax
- \pgfpoint{\pgf@xb}{0pt}
- \else
- \ifnum\squarepins>0
- \pgfpoint{\pgf@xa-#2*\extshift}{0pt}
- \else
- \pgfpoint{\pgf@xb-#2*\extshift}{0pt}
- \fi
- \fi
- \else
- \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1+1)*\pgf@circ@res@step-2*\pgf@yb}
- \fi
- \else
- % even numer of pins: just go down
- \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step-2*\pgf@yb}
- \fi
- \else
- % nothing need for #1<=NL/2
- \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
- \fi
- \else
- % no inset
- \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
- \fi
- \else
- \pgfpoint{\pgf@xa-#2*\extshift}{0pt}
- \fi
-}
-
-% right anchors
-\def\pgf@circ@muxdemux@R@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \topright
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \ifnum#1>\NR
- \PackageError{circuitikz}{%
- You requested right pin #1 for mux/demux shape \thisshape\space \MessageBreak
- which has been defined with \NR\space right pins%
- }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
- \fi
- \ifnum\NR>1
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@ya/\NR}
- \pgfpoint{\pgf@xa+#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
- \else
- \pgfpoint{\pgf@xa+#2*\extshift}{0pt}
- \fi
-}
-
-% bottom anchors
-\def\pgf@circ@muxdemux@B@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \topleft
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \topright
- \pgf@xb=\pgf@x
- \pgf@yb=\pgf@y
- \ifnum#1>\NB
- \PackageError{circuitikz}{%
- You requested bottom pin #1 for mux/demux shape \thisshape\space \MessageBreak
- which has been defined with \NB\space bottom pins%
- }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
- \fi
- \ifnum\NB>0
- % \typeout{DEBUGTESTtopleft\space\the\pgf@ya \space topright\space\the\pgf@yb \space\NB}
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@xb/\NB}
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@yb-\pgf@ya)/(\pgf@xb-\pgf@xa)*\pgf@circ@res@step}
- \pgfmathsetlength\pgf@x{\pgf@xa+(#1-0.5)*\pgf@circ@res@step}
- \ifnum#2=0\relax
- \pgfmathsetlength\pgf@y{-\pgf@yb+(\NB-#1+0.5)*\pgf@circ@res@other}
- \else
- \ifnum\squarepins>0\relax
- \pgfmathsetlength\pgf@y{-max(\pgf@ya,\pgf@yb)-\extshift}
- \else
- \pgfmathsetlength\pgf@y{-\pgf@yb+(\NB-#1+0.5)*\pgf@circ@res@other-\extshift}
- \fi
- \fi
- \else
- % should not happen, give the same as pin 1 anyway
- \ifnum#2=0\relax
- \pgfpoint{0pt}{-\pgf@yb+(\pgf@yb-\pgf@ya)/2}
- \else
- \pgfpoint{0pt}{-max(\pgf@ya,\pgf@yb)-\extshift}
- \fi
- \fi
-}
-
-% top anchors
-\def\pgf@circ@muxdemux@T@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \topleft
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \topright
- \pgf@xb=\pgf@x
- \pgf@yb=\pgf@y
- \ifnum#1>\NT
- \PackageError{circuitikz}{%
- You requested top pin #1 for mux/demux shape \thisshape\space \MessageBreak
- which has been defined with \NT\space top pins%
- }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
- \fi
- \ifnum\NT>0
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@xb/\NT}
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@yb-\pgf@ya)/(\pgf@xb-\pgf@xa)*\pgf@circ@res@step}
- \pgfmathsetlength\pgf@x{\pgf@xa+(#1-0.5)*\pgf@circ@res@step}
- \ifnum#2=0\relax
- \pgfmathsetlength\pgf@y{\pgf@yb-(\NT-#1+0.5)*\pgf@circ@res@other}
- \else
- \ifnum\squarepins>0
- \pgfmathsetlength\pgf@y{max(\pgf@ya,\pgf@yb)+\extshift}
- \else
- \pgfmathsetlength\pgf@y{\pgf@yb-(\NT-#1+0.5)*\pgf@circ@res@other+\extshift}
- \fi
- \fi
- \else
- % should not happen, give the same as pin 1 anyway
- \ifnum#2=0\relax
- \pgfpoint{0pt}{\pgf@yb-(\pgf@yb-\pgf@ya)/2}
- \else
- \pgfpoint{0pt}{max(\pgf@ya,\pgf@yb)+\extshift}
- \fi
- \fi
-}
-
-%% IEEE standard logic ports module
-%%
-%% Original multi-input code from John Kormylo at tex.stackexchange.com
-%% Help by TheTeXnician <38565529+TheTeXnician@users.noreply.github.com>
-%% Suggested idea and example code by Jason Sachs <jmsachs@gmail.com>
-%% Please see https://github.com/circuitikz/circuitikz/issues/383 for a lot of details
-%% Most of the code, all errors and bugs by Romano Giannetti <romano.giannetti@gmail.com>
-%% Everything is in the same place here --- more or less; first step to move towards
-%% a module interface for circutikz
-%%
-
-% base parameters for ieeestd ports.
-
-\ctikzset{ieeestd ports/.is family}
-% baselen is relative to pgfcirc@Rlen as ever; scaled if the class says so.
-% the value of 0.4 is the standard pin distance for a port with height=num pins
-% and matches the chip distance
-\ctikzset{ieeestd ports/baselen/.initial=0.4}
-% these are in term of baselen; width depends on height (fixed proportions)
-\ctikzset{ieeestd ports/height/.initial=2}
-\ctikzset{ieeestd ports/pin length/.initial=0.7}
-% the standard "not" circle should be 1/6.5 of height (diameter);
-% so radius/baselen=1/3.25/2 --- using 0.1 and no scaling is as a pole
-\ctikzset{ieeestd ports/not radius/.initial=0.154}
-\ctikzset{ieeestd ports/not radius fill/.initial=1}% change ony if you know why
-% the suggested xnor distance is is 1.24, so 1.25/3.25/2
-% xor/xnor leads go full in in IEEE; let this be optional
-\ctikzset{ieeestd ports/xor bar distance/.initial=0.192}%
-\ctikzset{ieeestd ports/xor leads in/.initial=1}%
-%
-% base size of a small external schmitt symbol
-%
-\ctikzset{ieeestd ports/schmitt symbol size/.initial=0.3}%
-%
-% input management
-% we are using the same /tikz/number inputs than the legacy ports
-%
-\tikzset{/tikz/inner inputs/.initial=0} % using 0 means that all inputs are inner
-%
-% integrate with the other logic ports
-%
-\ctikzset{logic ports/ieee/.code= {\pgf@circuit@europeanlogicportfalse
- \tikzset{and port/.style={shape=ieeestd and port}}%
- \tikzset{or port/.style={shape=ieeestd or port}}%
- \tikzset{xor port/.style={shape=ieeestd xor port}}%
- \tikzset{buffer port/.style={shape=ieeestd buffer port}}%
- \tikzset{not port/.style={shape=ieeestd not port}}%
- \tikzset{nand port/.style={shape=ieeestd nand port}}%
- \tikzset{nor port/.style={shape=ieeestd nor port}}%
- \tikzset{xnor port/.style={shape=ieeestd xnor port}}%
- \tikzset{schmitt port/.style={shape=ieeestd schmitt port}}%
- \tikzset{inv schmitt port/.style={shape=ieeestd schmitt port}}%
-}}
-\tikzset{ieee ports/.style = {\circuitikzbasekey/logic ports = ieee}}
-%
-% the base angle for the or port. See the drawings. This will not change with height
-%
-\pgfmathsetmacro{\pgf@circ@orangle}{atan(3.25/6.5)}
-% \typeout{ANGLE-IS\space\pgf@circ@orangle}
-\def\pgf@circ@ieeeport@input#1% #1 = \pgfmathcounter
-{%
- \ifnum#1>\inputs
- \PackageError{circuitikz}{%
- You requested input pin #1 for logic port shape \thisshape\space \MessageBreak
- which has been defined with \inputs\space pins%
- }{Please check the manual about logic ports; if you press return I'll try to continue}
- \fi
- \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind+0.5*\pind}% pin "0", above the rack/port
- \pgfextractx{\pgf@circ@res@left}{\bodyleft}
- \pgf@circ@res@step=\pind
- \pgf@y=\pgf@circ@res@up\advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@x=\pgf@circ@res@left\advance\pgf@x by -\pinlen
-}%
-
-% #1 = \pgfmathcounter #2=type
-% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor
-\def\pgf@circ@ieeeport@baseinput#1#2%
-{%
- \ifnum#1>\inputs
- \PackageError{circuitikz}{%
- You requested border input pin #1 for logic port shape \thisshape\space \MessageBreak
- which has been defined with \inputs\space pins%
- }{Please check the manual about logic ports; if you press return I'll try to continue}
- \fi
- % Find the vertical position (this is the same for any port)
- \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind+0.5*\pind}% pin "0", above the rack/port
- \pgf@circ@res@step=\pind\advance\pgf@circ@res@up by -#1\pgf@circ@res@step\relax
- % rack (extended) pins; they are the same for all the ports
- % call K = (inputs-inner)/2, rounded up; pins on the rack are:
- % above: 1..K (included)
- % below: inputs-K..inputs
- % Find the pins on the rack; they are 1...
- \pgf@circ@count@a=\numexpr (\inputs - \inners)/2\relax % =K; numexpr rounds up!
- \pgf@circ@count@b=\numexpr \inputs - \pgf@circ@count@a +1 \relax % =inputs - K +1
- % border anchors for rack should be ok
- \pgfextractx{\pgf@circ@res@left}{\topleft}
- \pgfextractx{\pgf@circ@res@right}{\bodyleft}
- \pgf@y=\pgf@circ@res@up\pgf@x=\pgf@circ@res@left
- % we have finished if we are in the rack
- \ifnum #1 > \pgf@circ@count@a \ifnum #1 < \pgf@circ@count@b
- % we are on the inner ports; we have to do the hard work here
- % and and nand
- \ifnum #2=1
- \relax % It's an and/nand, all border ports are on the rack line
- \fi
- % or and nor
- \ifnum #2=2
- \pgfmathsetlength{\pgf@x}{\pgf@circ@res@right-2*\stdH*(1-cos(atan(\pgf@circ@res@up/(2*\stdH))))}
- \fi
- % xor and xnor
- \ifnum #2=3\relax
- \pgfmathsetlength{\pgf@x}{\pgf@circ@res@right-\xorbar-2*\stdH*(1-cos(atan(\pgf@circ@res@up/(2*\stdH))))}
- \fi
- \fi\fi
-}%
-% inner base ports for xor types port
-% #1 = \pgfmathcounter #2=type
-% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor
-\def\pgf@circ@ieeeport@innerbaseinput#1%
-{%
- \ifnum#1>\inputs
- \PackageError{circuitikz}{%
- You requested border input pin #1 for logic port shape \thisshape\space \MessageBreak
- which has been defined with \inputs\space pins%
- }{Please check the manual about logic ports; if you press return I'll try to continue}
- \fi
- % Find the vertical position (this is the same for any port)
- \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind+0.5*\pind}% pin "0", above the rack/port
- \pgf@circ@res@step=\pind\advance\pgf@circ@res@up by -#1\pgf@circ@res@step\relax
- % rack (extended) pins; they are the same for all the ports
- % call K = (inputs-inner)/2, rounded up; pins on the rack are:
- % above: 1..K (included)
- % below: inputs-K..inputs
- % Find the pins on the rack; they are 1...
- \pgf@circ@count@a=\numexpr (\inputs - \inners)/2\relax % =K; numexpr rounds up!
- \pgf@circ@count@b=\numexpr \inputs - \pgf@circ@count@a +1 \relax % =inputs - K +1
- % border anchors for rack should be ok
- \pgfextractx{\pgf@circ@res@left}{\topleft}
- \pgfextractx{\pgf@circ@res@right}{\bodyleft}
- \pgf@y=\pgf@circ@res@up\pgf@x=\pgf@circ@res@left
- % we have finished if we are in the rack
- \ifnum #1 > \pgf@circ@count@a \ifnum #1 < \pgf@circ@count@b
- % we are on the inner ports; we have to do the hard work here
- \pgfmathsetlength{\pgf@x}{\pgf@circ@res@right-2*\stdH*(1-cos(atan(\pgf@circ@res@up/(2*\stdH))))}
- \fi\fi
-}%
-
-%%% macro to find basic lenghts --- they leave it in \pgf@circ@res@temp
-\def\pgf@circ@ieeestd@baselen{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/baselen}*\pgf@circ@scaled@Rlen}
-}
-\def\pgf@circ@ieeestd@stdH{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@temp}{0.5*\ctikzvalof{ieeestd ports/baselen}*
- \ctikzvalof{ieeestd ports/height}*\pgf@circ@scaled@Rlen}
-}
-\def\pgf@circ@ieeestd@pinlen{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/baselen}*
- \ctikzvalof{ieeestd ports/pin length}*\pgf@circ@scaled@Rlen}
-}
-\def\pgf@circ@ieeestd@xorbar{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/baselen}*
- \ctikzvalof{ieeestd ports/xor bar distance}*\pgf@circ@scaled@Rlen}
-}
-%% Not circle
-\def\pgf@circ@notradius{
- \pgf@circ@ieeestd@stdH % got the standard length. Notice that his is 3.25H for IEEE
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/not radius}*\pgf@circ@res@temp}
- % \typeout{NOTRADIUS\space\the\pgf@circ@res@temp}
-}
-%% Find (in ...@other) the height of the rack
-\def\pgf@circ@findrackH{%
- \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax%
- \pgf@circ@count@b=\pgfkeysvalueof{/tikz/inner inputs}\relax%
- \ifnum\pgf@circ@count@a=0 \pgf@circ@count@a=2\fi % default pins
- \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi %
- \ifnum\pgf@circ@count@b=0 \pgf@circ@count@b=\pgf@circ@count@a\fi%
- \pgf@circ@ieeestd@stdH
- \multiply\pgf@circ@res@temp by 2\relax% full height
- \divide\pgf@circ@res@temp by \pgf@circ@count@b % the pin spacing
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@count@a/2)*\pgf@circ@res@temp} %top of the rack/port
- % \typeout{RACK-\thisshape\space\the\pgf@circ@res@other}
-}
-%%
-\def\pgf@circ@find@ieeeport@up{% leave it in up
- % Normal port limits
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@circ@res@up}{\pgf@circ@res@temp}
- % rack top size
- \pgf@circ@findrackH
- \ifdim\pgf@circ@res@other > \pgf@circ@res@up
- \pgf@circ@res@up=\pgf@circ@res@other
- \else
- \fi
-}
-\def\pgf@circ@find@ieeeport@left#1{% leave it in left; #1 is type
- % Normal port limits
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@circ@res@left}{8*\pgf@circ@res@temp/6.5}
- \pgf@circ@res@right=\pgf@circ@res@left % save the border value
- \pgf@circ@res@step=\pgf@circ@res@temp % save the stdH value
- \pgf@circ@ieeestd@pinlen\advance\pgf@circ@res@left by \pgf@circ@res@temp
- % \typeout{LEFT1-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
- % this is the normal left border
- % For the or or xor port, the limit can be the pointy thing (in case the
- % pinlen is zero or too small)
- % add to the body margin the or/nor peak:
- \ifnum #1 > 1\relax% "or", "nor", "xor", "xnor" gates.
- \pgfmathsetlength{\pgf@circ@res@other}{2*\pgf@circ@res@step*(1-cos(\pgf@circ@orangle))}
- \advance\pgf@circ@res@right by \pgf@circ@res@other
- % \typeout{LEFT2-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
- \fi
- % add to the body margin the xor/xnor distance
- \ifnum #1 = 3\relax% "xor" or "xnor" gates.
- \pgf@circ@ieeestd@xorbar
- \advance\pgf@circ@res@right by \pgf@circ@res@temp
- % \typeout{LEFT3-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
- \fi
- % and if this exceeds the normal margin, this is it
- % \typeout{LEFT4-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
- \ifdim \pgf@circ@res@right > \pgf@circ@res@left
- \pgf@circ@res@left=\pgf@circ@res@right
- \fi
- % \typeout{LEFT5-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
- \pgf@circ@res@left=-\pgf@circ@res@left
-}
-\def\pgf@circ@find@ieeeport@right#1{% leave it in right; #1 is plain or negated
- % Normal port limits
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@circ@res@right}{8*\pgf@circ@res@temp/6.5}
- \pgf@circ@notradius
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@res@right+2*#1*\pgf@circ@res@temp}
- \pgf@circ@ieeestd@pinlen\advance\pgf@circ@res@right by \pgf@circ@res@temp
- \ifdim\pgf@circ@res@other > \pgf@circ@res@right
- \pgf@circ@res@right=\pgf@circ@res@other
- \fi
-}
-\def\pgf@circ@find@ieeeport@not@right#1{% leave it in right; #1 is plain or negated
- % Normal port limits
- \pgf@circ@ieeestd@stdH
- % notice 0.8660254 is cos(30)
- \pgfmathsetlength{\pgf@circ@res@right}{0.8660254*\pgf@circ@res@temp}
- \pgf@circ@notradius
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@res@right+2*#1*\pgf@circ@res@temp}
- \pgf@circ@ieeestd@pinlen\advance\pgf@circ@res@right by \pgf@circ@res@temp
- \ifdim\pgf@circ@res@other > \pgf@circ@res@right
- \pgf@circ@res@right=\pgf@circ@res@other
- \fi
-}
-
-
-%%% ieeestd multi-input ports
-%%% #1: name
-%%% #2: type: 1 for and,nand; 2 for or,nor; 3 for xor,xnor
-%%% #3: polarity: 0 for direct, 1 for inverted (not at the output)
-%%% #4: drawing for the port
-\long\def\pgfcircdeclareieeeport#1#2#3#4{%
- \pgfdeclareshape{ieeestd #1 port}%
- {%
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- \saveddimen{\baselen}{%
- \pgf@circ@ieeestd@baselen\pgf@x=\pgf@circ@res@temp
- }
- \saveddimen{\stdH}{% This is HALF the height of the inner port
- \pgf@circ@ieeestd@stdH\pgf@x=\pgf@circ@res@temp
- }
- \saveddimen{\notdiameter}{
- \pgf@circ@notradius\pgf@x=2\pgf@circ@res@temp
- }
- \saveddimen{\pind}{% pin distance;
- \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax%
- \pgf@circ@count@b=\pgfkeysvalueof{/tikz/inner inputs}\relax%
- \ifnum\pgf@circ@count@a=0 \pgf@circ@count@a=2\fi % default pins
- \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi %
- \ifnum\pgf@circ@count@b=0 \pgf@circ@count@b=\pgf@circ@count@a\fi%
- \pgf@circ@ieeestd@stdH\pgf@x=2\pgf@circ@res@temp % full height
- \divide\pgf@x by \pgf@circ@count@b
- }
- \saveddimen{\pinlen}{%
- \pgf@circ@ieeestd@pinlen\pgf@x=\pgf@circ@res@temp
- }
- \saveddimen{\xorbar}{%
- \pgf@circ@ieeestd@xorbar\pgf@x=\pgf@circ@res@temp
- }
- % anchors for the body (no pins included here)
- \savedanchor{\bodyleft}{% This DOES NOT take into account the pointy or/xor thing
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-8*\pgf@circ@res@temp/6.5}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
- }
- \savedanchor{\topleft}{%
- \pgf@circ@ieeestd@xorbar\pgf@circ@res@right=\pgf@circ@res@temp % save \xorbar
- \pgf@circ@ieeestd@stdH
- \pgf@circ@res@other=0pt\relax
- \ifnum #2 = 2\relax% "or" or "nor" gates.
- \pgfmathsetlength{\pgf@circ@res@other}{2*\pgf@circ@res@temp*(1-cos(\pgf@circ@orangle))}
- \fi
- \ifnum #2 = 3\relax% "xor" or "xnor" gates.
- \pgfmathsetlength{\pgf@circ@res@other}{2*\pgf@circ@res@temp*(1-cos(\pgf@circ@orangle))
- +\pgf@circ@res@right}
- \fi
- \pgfmathsetlength{\pgf@x}{-8*\pgf@circ@res@temp/6.5-\pgf@circ@res@other}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
- }
- \savedanchor{\bodyright}{% This DOES NOT take into account the "NOT" circle
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{8*\pgf@circ@res@temp/6.5}
- \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
- }
- \savedanchor{\bottomright}{% This DOES take into account the "NOT" circle
- \pgf@circ@notradius\pgf@circ@res@other=\pgf@circ@res@temp
- \pgf@circ@ieeestd@stdH
- % #3 is =1 if the port is a negated output one
- \pgfmathsetlength{\pgf@x}{8*\pgf@circ@res@temp/6.5+#3*2*\pgf@circ@res@other}
- \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
- }
- % geographical anchors --- must be rectangulars!
- \savedanchor{\northwest}{%
- \pgf@circ@find@ieeeport@up
- \pgf@circ@find@ieeeport@left{#2}
- % \typeout{ANCH5-\thisshape\space L\space\the\pgf@circ@res@left\space U\space\the\pgf@circ@res@up}
- \pgf@x=\pgf@circ@res@left
- \pgf@y=\pgf@circ@res@up
- }
- \savedanchor{\southwest}{%
- \pgf@circ@find@ieeeport@up
- \pgf@circ@find@ieeeport@left{#2}
- \pgf@x=\pgf@circ@res@left
- \pgf@y=-\pgf@circ@res@up
- }
- \savedanchor{\southeast}{%
- \pgf@circ@find@ieeeport@up
- \pgf@circ@find@ieeeport@right{#3}
- \pgf@x=\pgf@circ@res@right
- \pgf@y=-\pgf@circ@res@up
- }
- \savedanchor{\northeast}{%
- \pgf@circ@find@ieeeport@up
- \pgf@circ@find@ieeeport@right{#3}
- \pgf@x=\pgf@circ@res@right
- \pgf@y=\pgf@circ@res@up
- }
- \savedmacro\inputs{% get number of inputs
- \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax
- \ifnum\pgf@circ@count@a=0\pgf@circ@count@a=2\fi % default
- \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi % minimum pins
- % \ifnum\pgf@circ@count@a>16 \pgf@circ@count@a=16\fi
- \def\inputs{\the\pgf@circ@count@a}%
- }%
- \savedmacro\inners{% get number of "inner" inputs (for racks)
- \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax
- \pgf@circ@count@b=\pgfkeysvalueof{/tikz/inner inputs}\relax
- \ifnum\pgf@circ@count@a=0 \pgf@circ@count@a=2\fi % default pins
- \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi % minimum pins
- \ifnum\pgf@circ@count@b=0 \pgf@circ@count@b=\pgf@circ@count@a\fi
- % \typeout{INNER is \the\pgf@circ@count@b}%
- % \ifnum\pgf@circ@count@a>16 \pgf@circ@count@a=16\fi
- \def\inners{\the\pgf@circ@count@b}%
- }%
- \anchor{center}{\pgfpointorigin}
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
- \else
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@circ@res@left}{-8*\pgf@circ@res@temp/6.5} % left border
- \pgfpoint{\pgf@circ@res@left + \ctikzvalof{left text distance}}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
- \fi
- }
- % create input anchors
- \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@ieeestd #1 port\endcsname{%
- \pgf@circ@count@a=\inputs
- \pgfmathloop%
- \ifnum\pgfmathcounter>\pgf@circ@count@a%
- \else%
- %\pgfutil@ifundefined{pgf@anchor@american #1 port@in \pgfmathcounter}{%
- \expandafter\xdef\csname pgf@anchor@ieeestd #1 port@in \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@ieeeport@input{\pgfmathcounter}% defined above
- }%
- \expandafter\xdef\csname pgf@anchor@ieeestd #1 port@bin \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@ieeeport@baseinput{\pgfmathcounter}{#2}% defined above
- }%
- \ifnum #2 = 3\relax % xor/xnor inner border pins
- \expandafter\xdef\csname pgf@anchor@ieeestd #1 port@ibin \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@ieeeport@innerbaseinput{\pgfmathcounter}% defined above
- }%
- \fi
- %}{}%
- \repeatpgfmathloop%
- }
- % output anchor
- \anchor{out}{%
- \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without not ball
- \advance\pgf@circ@res@other by\pinlen
- \pgfextractx{\pgf@circ@res@temp}{\bottomright} %body + ball border
- \ifdim \pgf@circ@res@temp > \pgf@circ@res@other
- \pgf@circ@res@other = \pgf@circ@res@temp % do not enter in the ball...
- \fi
- \pgf@x=\pgf@circ@res@other\pgf@y=0pt
- }
- \anchor{bout}{\bottomright\pgf@y=0pt}
-
- \anchor{body right}{\bodyright\pgf@y=0pt}
- \anchor{right}{\bottomright\pgf@y=0pt}
- \anchor{body left}{\bodyleft\pgf@y=0pt}% central edge of the body
- \anchor{left}{% central edge of the component
- \bodyleft\pgf@y=0pt
- \ifnum #2=3\relax
- \advance\pgf@x by -\xorbar
- \fi
- }
- \anchor{up}{%
- \bodyleft
- \ifnum #2 > 1 % pointy shapes
- \pgf@circ@ieeestd@stdH
- % horizontal coordinate where the right semicircle starts
- \pgfmathsetlength{\pgf@circ@res@other}{-8*\pgf@circ@res@temp/6.5+2*\pgf@circ@res@temp*cos(\pgf@circ@orangle)}
- % vertical drop of the circle at the above coordinate
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@temp*(1-cos(atan(\pgf@circ@res@other/(2*\pgf@circ@res@temp))))}
- \advance \pgf@y by -\pgf@circ@res@step
- \fi
- \pgf@x=0pt
- }
- \anchor{down}{%
- \bodyleft
- \ifnum #2 > 1 % pointy shapes
- \pgf@circ@ieeestd@stdH
- % horizontal coordinate where the right semicircle starts
- \pgfmathsetlength{\pgf@circ@res@other}{-8*\pgf@circ@res@temp/6.5+2*\pgf@circ@res@temp*cos(\pgf@circ@orangle)}
- % vertical drop of the circle at the above coordinate
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@temp*(1-cos(atan(\pgf@circ@res@other/(2*\pgf@circ@res@temp))))}
- \advance \pgf@y by -\pgf@circ@res@step
- \fi
- \pgf@y=-\pgf@y\pgf@x=0pt
- }
-
- % geographical anchors
- \anchor{nw}{\northwest}
- \anchor{ne}{\northeast}
- \anchor{se}{\southeast}
- \anchor{sw}{\southwest}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northeast}
- \anchor{south east}{\southeast}
- \anchor{south west}{\southwest}
- % over 0,0 even if asymmetric
- % will break if the geocoords are not rectangular
- \anchor{n}{\northwest\pgf@x=0pt\relax}
- \anchor{e}{\northeast\pgf@y=0pt\relax}
- \anchor{s}{\southwest\pgf@x=0pt\relax}
- \anchor{w}{\northwest\pgf@y=0pt\relax}
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{east}{\northeast\pgf@y=0pt\relax}
- \anchor{south}{\southwest\pgf@x=0pt\relax}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
-
- \backgroundpath{
- \pgfscope
- \pgfsetcolor{\ctikzvalof{color}}
- #4
- \endpgfscope
- % output lead:
- \pgfextractx{\pgf@circ@res@right}{\bottomright} %body+ball border
- \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without "not" ball
- \advance\pgf@circ@res@other by \pinlen\relax
- \ifdim \pgf@circ@res@other > \pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \fi
- \ifnum #3=1\relax\pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfnode{notcirc}{east}{}{\thisshape-not}{\pgfusepath{stroke}}
- \endpgfscope\fi
- }
- }
-}
-
-%%% #1 direct name #2 negated name #3 type #4 drawing (without output)
-\long\def\pgfcircdeclareieeeportpair#1#2#3#4{%
- \pgfcircdeclareieeeport{#1}{#3}{0}{#4}% direct
- \pgfcircdeclareieeeport{#2}{#3}{1}{#4}% negated
-}
-%
-% ieeestd "and" and "nand"
-%
-\pgfcircdeclareieeeportpair{and}{nand}{1}{%
- \pgf@circ@count@a = \inputs\relax
- \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind} %top of the rack/port
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@res@up+0.5*\pind}
- \pgfextractx{\pgf@circ@res@left}{\bodyleft}
- \pgfextracty{\pgf@circ@res@down}{\bodyleft}
- \ifpgfcirc@draw@leads
- %input leads --- all the same for AND ports
- \loop\ifnum\pgf@circ@count@a>0
- \advance\pgf@circ@res@temp by -\pind
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@count@a by -1
- \repeat
- \fi
- \pgfusepath{draw}
- %% Body. let's start from the top left
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-8*\stdH/6.5}{\stdH}}
- \pgfpathlineto{\pgfpoint{1.5*\stdH/6.5}{\stdH}}
- \pgfpatharc{90}{-90}{\stdH}
- \pgfpathlineto{\pgfpoint{-8*\stdH/6.5}{-\stdH}}
- \pgfpathclose
- \pgf@circ@draworfill
- % rack now; skip if not needed.
- % \typeout{WHAT\space \inputs\space \inners}
- \ifnum\inputs>\inners
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
-}
-%
-% or/nor and xor/xnor are practically the same. Let factor out everything
-% the argument #1 is put just before the drawing of the inner pins
-% the argument #2 is put after the drawing of the body
-%
-\long\def\pgf@circ@ieeeport@orxor#1#2{%
- \pgf@circ@count@a = \inputs\relax
- \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind} %top of the rack/port
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@res@up+0.5*\pind}
- \pgfextractx{\pgf@circ@res@left}{\bodyleft}
- \pgfextracty{\pgf@circ@res@down}{\bodyleft}
- % rack (extended) pins; they are the same for all the ports
- % call K = (inputs-inner)/2, rounded up; pins on the rack are:
- % above: 1..K (included)
- % below: inputs-K..inputs
- % Find the pins on the rack; they are 1...
- \pgf@circ@count@b=\numexpr (\inputs - \inners)/2\relax % =K; numexpr rounds up!
- \pgf@circ@count@c=\numexpr \inputs - \pgf@circ@count@b +1 \relax % =inputs - K +1
- \ifpgfcirc@draw@leads
- %input leads --- for or ports
- \loop\ifnum\pgf@circ@count@a>0
- \pgfextractx{\pgf@circ@res@right}{\topleft}
- \advance\pgf@circ@res@temp by -\pind
- % this is the height; let's find the "right" position
- \ifnum \pgf@circ@count@a > \pgf@circ@count@b \ifnum \pgf@circ@count@a < \pgf@circ@count@c
- % inner pins
- % \typeout{INNER\space\pgf@circ@count@a}
- \pgfmathsetlength{\pgf@circ@res@right}{\pgf@circ@res@left-2*\stdH*(1-cos(atan(\pgf@circ@res@temp/(2*\stdH))))}
- % hook for xor/xnor
- #1
- \fi\fi
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{\pgf@circ@res@temp}}%
- \pgfusepath{draw}
- \advance\pgf@circ@count@a by -1
- \repeat
- \fi
- %% Body. let's start from the top left
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- % it should start here, but with this trick the close comes out better.
- % \pgfpathmoveto{\pgfpoint{-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{\stdH}}
- \pgfpathmoveto{\pgfpoint{-8*\stdH/6.5}{\stdH}}
- \pgfpathlineto{\pgfpoint{8*\stdH/6.5-2*\stdH*cos(\pgf@circ@orangle)}{\stdH}} %
- \pgfpatharcto{2*\stdH}{2*\stdH}{0}{0}{0}{\pgfpoint{8*\stdH/6.5}{0pt}}
- \pgfpatharcto{2*\stdH}{2*\stdH}{0}{0}{0}{\pgfpoint{8*\stdH/6.5-2*\stdH*cos(\pgf@circ@orangle)}{-\stdH}}
- \pgfpathlineto{\pgfpoint{-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{-\stdH}}
- %% this should be 2 and 2; but the round part is not a perfect circle that way
- %% so the 2.15 is ajusted "by taste" to touch the anchors exactly.
- \pgfpatharcto{2*\stdH}{2.2*\stdH}{0}{0}{1}{\pgfpoint{-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{\stdH}}
- \pgfpathclose
- \pgf@circ@draworfill
- % hook for xor/xnor
- #2
- % rack now; skip if not needed.
- % \typeout{WHAT\space \inputs\space \inners}
- \ifnum\inputs>\inners
- \pgfextractx{\pgf@circ@res@left}{\topleft}
- \pgfextracty{\pgf@circ@res@down}{\topleft}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
-}
-%
-% ieeestd "or" and "nor"
-%
-\pgfcircdeclareieeeportpair{or}{nor}{2}{%
- \pgf@circ@ieeeport@orxor{}{}
-}
-\pgfcircdeclareieeeportpair{xor}{xnor}{3}{%
- \pgf@circ@ieeeport@orxor{
- \edef\@@tmp{\ctikzvalof{ieeestd ports/xor leads in}}
- \ifnum\@@tmp=0\relax
- % move pin start to the left to leave the xor gap free (not standard)
- \advance\pgf@circ@res@right by -\xorbar
- \fi
- }{%
- % add the xor/xnor bar
- \pgfpathmoveto{\pgfpoint{-\xorbar-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{-\stdH}}
- % see the comment on the main body about the 2.2
- \pgfpatharcto{2*\stdH}{2.2*\stdH}{0}{0}{1}{\pgfpoint{-\xorbar -8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{\stdH}}
- \pgfusepath{draw}
- }
-}
-%
-% Buffer and inverters
-%
-% #1: name
-% #2: polarity
-% #3: content
-\long\def\pgfcircdeclareieeebufferport#1#2#3{%
- \pgfdeclareshape{ieeestd #1 port}%
- {%
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- \saveddimen{\baselen}{%
- \pgf@circ@ieeestd@baselen\pgf@x=\pgf@circ@res@temp
- }
- \saveddimen{\stdH}{% This is HALF the height of the inner port
- \pgf@circ@ieeestd@stdH\pgf@x=\pgf@circ@res@temp
- }
- \saveddimen{\notdiameter}{
- \pgf@circ@notradius\pgf@x=2\pgf@circ@res@temp
- }
- \saveddimen{\pinlen}{%
- \pgf@circ@ieeestd@pinlen\pgf@x=\pgf@circ@res@temp
- }
- % anchors for the body (no pins included here)
- % Notice that 0.8660254 is cos(30)
- \savedanchor{\bodyleft}{% This DOES NOT take into account the pointy or/xor thing
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
- }
- \savedanchor{\topleft}{%
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
- }
- \savedanchor{\bodyright}{% This DOES NOT take into account the "NOT" circle
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{0.8660254*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
- }
- \savedanchor{\bottomright}{% This DOES take into account the "NOT" circle
- \pgf@circ@notradius\pgf@circ@res@other=\pgf@circ@res@temp
- \pgf@circ@ieeestd@stdH
- % #2 is =1 if the port is a negated output one
- \pgfmathsetlength{\pgf@x}{0.8660254*\pgf@circ@res@temp+#2*2*\pgf@circ@res@other}
- \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
- }
- % geographical anchors --- must be rectangulars!
- \savedanchor{\northwest}{%
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
- }
- \savedanchor{\southwest}{%
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
- }
- \savedanchor{\southeast}{%
- \pgf@circ@ieeestd@stdH
- \pgf@circ@res@up=\pgf@circ@res@temp
- \pgf@circ@find@ieeeport@not@right{#2}
- \pgf@x=\pgf@circ@res@right
- \pgf@y=-\pgf@circ@res@up
- }
- \savedanchor{\northeast}{%
- \pgf@circ@ieeestd@stdH
- \pgf@circ@res@up=\pgf@circ@res@temp
- \pgf@circ@find@ieeeport@not@right{#2}
- \pgf@x=\pgf@circ@res@right
- \pgf@y=\pgf@circ@res@up
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
- \else
- \pgf@circ@ieeestd@stdH
- \pgfpoint{-0.8660254*\pgf@circ@res@temp + \ctikzvalof{left text distance}}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
- \fi
- }
- % input anchors
- \anchor{in}{\bodyleft\pgf@y=0pt\advance\pgf@x by-\pinlen}
- \anchor{in 1}{\bodyleft\pgf@y=0pt\advance\pgf@x by-\pinlen}
- \anchor{bin}{\bodyleft\pgf@y=0pt\relax}
- \anchor{bin 1}{\bodyleft\pgf@y=0pt\relax}
- % output anchors
- \anchor{out}{%
- \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without not ball
- \advance\pgf@circ@res@other by\pinlen
- \pgfextractx{\pgf@circ@res@temp}{\bottomright} %body + ball border
- \ifdim \pgf@circ@res@temp > \pgf@circ@res@other
- \pgf@circ@res@other = \pgf@circ@res@temp % do not enter in the ball...
- \fi
- \pgf@x=\pgf@circ@res@other\pgf@y=0pt
- }
- \anchor{bout}{\bottomright\pgf@y=0pt}
-
- \anchor{body right}{\bodyright\pgf@y=0pt}
- \anchor{right}{\bottomright\pgf@y=0pt}
- \anchor{body left}{\bodyleft\pgf@y=0pt}% central edge of the body
- \anchor{left}{% central edge of the component
- \pgf@circ@ieeestd@xorbar% save \xorbar in temp
- \bodyleft\pgf@y=0pt\advance\pgf@x by -\pgf@circ@res@temp
- }
- \anchor{up}{%
- \bodyleft
- \pgf@y=+0.5\pgf@y\pgf@x=0pt
- }
- \anchor{down}{%
- \bodyleft
- \pgf@y=-0.5\pgf@y\pgf@x=0pt
- }
-
- % geographical anchors
- \anchor{nw}{\northwest}
- \anchor{ne}{\northeast}
- \anchor{se}{\southeast}
- \anchor{sw}{\southwest}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northeast}
- \anchor{south east}{\southeast}
- \anchor{south west}{\southwest}
- % over 0,0 even if asymmetric
- % will break if the geocoords are not rectangular
- \anchor{n}{\northwest\pgf@x=0pt\relax}
- \anchor{e}{\northeast\pgf@y=0pt\relax}
- \anchor{s}{\southwest\pgf@x=0pt\relax}
- \anchor{w}{\northwest\pgf@y=0pt\relax}
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{east}{\northeast\pgf@y=0pt\relax}
- \anchor{south}{\southwest\pgf@x=0pt\relax}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
-
- \backgroundpath{
- \pgfscope
- \pgfsetcolor{\ctikzvalof{color}}
- #3
- \endpgfscope
- % output lead:
- \pgfextractx{\pgf@circ@res@right}{\bottomright} %body+ball border
- \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without "not" ball
- \advance\pgf@circ@res@other by \pinlen\relax
- \ifdim \pgf@circ@res@other > \pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \fi
- \ifnum #2=1\relax\pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfnode{notcirc}{east}{}{\thisshape-not}{\pgfusepath{stroke}}
- \endpgfscope\fi
- }
- }
-}
-
-%%% #1 direct name #2 negated name #3 drawing (without output)
-\long\def\pgfcircdeclareieeebufferportpair#1#2#3{%
- \pgfcircdeclareieeebufferport{#1}{0}{#3}% direct
- \pgfcircdeclareieeebufferport{#2}{1}{#3}% negated
-}
-
-\pgfcircdeclareieeebufferportpair{buffer}{not}{%
- \pgfextractx{\pgf@circ@res@left}{\bodyleft}
- \pgfextracty{\pgf@circ@res@up}{\bodyleft}
- \pgfextractx{\pgf@circ@res@right}{\bodyright}
- % \draw input pin
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-}
-
-\pgfcircdeclareieeebufferportpair{schmitt}{inv schmitt}{%
- \pgfextractx{\pgf@circ@res@left}{\bodyleft}
- \pgfextracty{\pgf@circ@res@up}{\bodyleft}
- \pgfextractx{\pgf@circ@res@right}{\bodyright}
- % \draw input pin
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- % draw schmitt symbol in normal line thickness
- \pgfpathmoveto{\pgfpoint{0.75*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.50*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.50*\pgf@circ@res@left}{0.25*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.00*\pgf@circ@res@left}{0.25*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.25*\pgf@circ@res@left}{0.25*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.25*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfdeclareshape{schmitt symbol}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@circ@ieeestd@stdH
- \pgf@y=\ctikzvalof{ieeestd ports/schmitt symbol size}\pgf@circ@res@temp
- \pgf@x=-1.5\pgf@y
- }
- \anchor{center}{\pgf@y=0pt \pgf@x=0pt}
- \anchor{east}{\northwest\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{e}{\northwest\pgf@y=0pt \pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt}
- \anchor{w}{\northwest \pgf@y=0pt}
- \anchor{south}{\northwest \pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{north}{\northwest\pgf@x=0pt}
- \anchor{n}{\northwest\pgf@x=0pt}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{north west}{\northwest}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \backgroundpath{
- \pgfscope
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgf@circ@res@left=0.7\pgf@circ@res@left
- \pgf@circ@res@up=0.7\pgf@circ@res@up
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left/3}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left/3}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left/3}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left/3}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{notcirc}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@circ@notradius
- \pgf@y=\pgf@circ@res@temp
- \pgf@x=-\pgf@y
- }
- \anchor{center}{\pgf@y=0pt \pgf@x=0pt}
- \anchor{right}{\northwest\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{east}{\northwest\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{e}{\northwest\pgf@y=0pt \pgf@x=-\pgf@x}
- \anchor{left}{\northwest\pgf@y=0pt}
- \anchor{west}{\northwest\pgf@y=0pt}
- \anchor{w}{\northwest \pgf@y=0pt}
- \anchor{south}{\northwest \pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{north}{\northwest\pgf@x=0pt}
- \anchor{n}{\northwest\pgf@x=0pt}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{north west}{\northwest}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \northwest\pgf@circ@res@temp=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}%
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- }
- \behindforegroundpath{
- \pgfscope
- \northwest\pgf@circ@res@temp=\pgf@y
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@temp}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{white}
- % ...but override it if the class is defined!
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{\ctikzvalof{ieeestd ports/not radius fill}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-
-%%%---------- close: tex/pgfcircmultipoles
-
-%%%%%%%%%%% Springe nach tex/pgfcirclabel
-%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Bipole label positioning
-
-%% bipole labels and annotation extra style
-
-\ctikzset{bipole label style/.style={}}
-\tikzset{bipole label style/.code={
- \ctikzset{bipole label style/.style={#1}}
-}}
-\tikzset{bipole label append style/.code={
- \ctikzset{bipole label style/.append style={#1}}
-}}
-\ctikzset{bipole annotation style/.style={}}
-\tikzset{bipole annotation style/.code={
- \ctikzset{bipole annotation style/.style={#1}}
-}}
-\tikzset{bipole annotation append style/.code={
- \ctikzset{bipole annotation style/.append style={#1}}
-}}
-
-%% Options
-\ctikzset{label/.style = { l=#1 } }
-\ctikzset{l/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
- \ctikzsetvalof{bipole/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-
-\ctikzset{label above/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-
-\ctikzset{l^/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-
-\ctikzset{label below/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-\ctikzset{l_/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-\ctikzset{annotation/.style = { a=#1 } }
-\ctikzset{a/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/annotation/name=#1}
- \ctikzsetvalof{bipole/annotation/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/annotation/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/annotation/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-
-\ctikzset{annotation above/.code = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=90 }
-}
-
-\ctikzset{a^/.style = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=90 }
-}
-
-\ctikzset{annotation below/.code = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=-90 }
-}
-\ctikzset{a_/.style = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=-90 }
-}
-
-% This is to adjust spacing for the labels so that they are not cramped on components
-\def\pgf@circ@ls{.75ex} % labelspace to have just one point to change
-
-\def\pgf@circ@drawlabels#1{
- \pgfextra{
- % This function will be called with argument #1 equal
- % to "label" or "annotation" form pgfcircpath.tex.
- % pgf@circ@direction is the direction of the path,
- % its value is set in pgfcircpath.tex
- \pgfmathsubtract{\pgf@circ@direction}{90}
- \pgfmathround{\pgfmathresult} % avoid precision loss errors
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
-
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/position}}
- \ifnum \pgf@circ@temp < 0
- \pgfmathadd{\pgf@circ@labanc}{180}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- % \typeout{INI: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
- %
- % normalize the angle values
- %
- \pgfmathmod{\pgf@circ@labanc}{360}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- %
- \ifpgf@circuit@bipole@inverted
- \pgfmathadd{\pgf@circ@temp}{180} %If shape is inverted, use opposite anchor
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- %
- \ifnum \ctikzvalof{mirror value} = -1
- \pgfmathadd{\pgf@circ@temp}{180} %If shape is mirrored, use opposite anchor
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- % \typeout{FIN: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
- }
- %Firstly, place a coordinate directly at the edge of the shape
- (\ctikzvalof{bipole/name}.\pgf@circ@temp) coordinate (labelcoor)
- %now decide, which labels should be drawn
- \pgfextra{
- \edef\pgf@temp{\ctikzvalof{label/align}}
- \def\pgf@circ@temp{straight}
- }
- \ifx\pgf@temp\pgf@circ@temp %straight
- \pgf@circ@drawreglabels{#1}
- \else
- \pgfextra{\def\pgf@circ@temp{rotate}}
- \ifx\pgf@temp\pgf@circ@temp %rotate
- \pgf@circ@drawrotlabels{#1}
- \else% smart
- \pgf@circ@drawsmartlabels{#1}
- \fi
- \fi
-}
-
-
-\def\pgf@circ@drawsmartlabels#1{
- \pgfextra{
- \pgfmathmod{\pgf@circ@direction}{90}
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- \ifnum \pgfcircmathresult > 20
- \ifnum \pgfcircmathresult < 70
- \pgf@circ@drawrotlabels{#1}
- \else
- \pgf@circ@drawreglabels{#1}
- \fi
- \else
- \pgf@circ@drawreglabels{#1}
- \fi
- }
-
-
-\def\pgf@circ@drawrotlabels#1{
- \pgfextra{
- % scale the distances in function of zoom, so that they are not
- % dependent on it but on font size. Thanks to @marmot
- % https://tex.stackexchange.com/a/476018/38080
- % the coeffcient is adjusted so that the distance is more or less
- % the same for rotated labels and straight ones (although it will
- % depend on the font, so it's not exact).
- \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
- \pgfmathsetmacro{\myscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
- % \typeout{ROT\tmpa\space\tmpb\space\tmpc\space\tmpd\space\myscale}
- \pgfmathsetlength\pgf@circ@res@temp{1.5*\pgf@circ@ls/\myscale}
- \ifnum \ctikzvalof{bipole/#1/position}>0
- %we need some more space for placement below, due to mid-anchor
- \else % we do not have <= in \ifnum...
- \pgf@circ@res@temp=1.5\pgf@circ@res@temp
- \fi
- %Calculate rotation of the label from direction and strip decimals
- \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- % rotate the label at second or third quadrant:
- \ifnum \pgfcirclabrot > 90 \ifnum \pgfcirclabrot < 270
- \pgfmathsubtract{\pgf@circ@direction}{180}
- \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- %invert the space relationships due to rotated strings
- \ifnum \ctikzvalof{bipole/#1/position}>0
- \pgf@circ@res@temp=1.5\pgf@circ@res@temp
- \fi
- \fi\fi
- \pgfmathparse{\ctikzvalof{bipole/#1/position}>0?\pgf@circ@direction+90:\pgf@circ@direction-90}
- \edef\pgf@circ@labposangle{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- % reset cm is not working correctly here
- (labelcoor)++(\pgf@circ@labposangle:\the\pgf@circ@res@temp) coordinate(labelcoor)
- node[anchor=mid, rotate=\pgfcirclabrot, \circuitikzbasekey/bipole #1 style]
- (\ctikzvalof{bipole/name}#1){\pgf@circ@finallabels{#1}}
-}
-
-\def\pgf@circ@drawreglabels#1{
- %Now calculate all shape positions
- %Use mid-anchor at x-axis and base-anchor at y-axis, respectively.
- %All points between will be addressed by angled-anchors:
- \pgfextra{
- % scale ex-distance to make it independent on scale
- % thanks @marmot see https://tex.stackexchange.com/a/476018/38080
- \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
- \pgfmathsetmacro{\myscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
- % \typeout{ROT\tmpa\space\tmpb\space\tmpc\space\tmpd\space\myscale}
- \pgfmathsetlength\pgf@circ@res@temp{\pgf@circ@ls/\myscale}
- \pgfmathadd{\pgf@circ@labanc}{90}
- \pgfmathround{\pgfmathresult}
- \def\pgf@circ@labanctext{\pgf@circ@labanc}
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \pgfmathparse{mod(\pgf@circ@temp,180)>135?mod(\pgf@circ@temp,180)-180:mod(\pgf@circ@temp,180)}
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- %Values around 90 are at both y-axis
- \ifnum \pgfcircmathresult > 84 \ifnum \pgfcircmathresult< 96
- \pgfextra{\edef\pgf@circ@labpos{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}}
- \ifnum \pgf@circ@labpos > 180
- \ifnum \ctikzvalof{bipole/#1/position} > 0
- \pgfextra{\def\pgf@circ@labanctext{mid west}}
- \else
- \pgfextra{\def\pgf@circ@labanctext{mid east}}
- \fi
- \else
- \ifnum \ctikzvalof{bipole/#1/position} > 0
- \pgfextra{\def\pgf@circ@labanctext{mid east}}
- \else
- \pgfextra{\def\pgf@circ@labanctext{mid west}}
- \fi
- \fi
- \fi\fi
- %Values between -5 and 5 are at pos /neg x-axis
- \pgfextra{\def\uffa{}\newdimen\realshift\realshift=\dimexpr1pt\relax}
- \ifnum \pgfcircmathresult <6 \ifnum \pgfcircmathresult > -6
- \ifnum \ctikzvalof{bipole/#1/position} < 0
- \ifnum \pgf@circ@labanc > 90
- % using base coordinate instead of south to naturally align
- % symbols with descendants; but this invalidate the effect of
- % the inner sep, so recover it by shifting the anchor
- % reset cm is not working sometime, use @marmot solution
- % see https://tex.stackexchange.com/a/476018/38080
- (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
- \pgfextra{\def\pgf@circ@labanctext{base}}%base
- \else
- \pgfextra{\def\pgf@circ@labanctext{north}}%north
- \fi
- \else
- \ifnum \pgf@circ@labanc < 90
- % shift, as above
- (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
- \pgfextra{\def\pgf@circ@labanctext{base}}%base
- \else
- \ifnum \pgf@circ@labanc > 180
- % this shouldn't happen, but somehow it does (270 degree anchors)
- % shift, as above
- (labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(labelcoor)
- \pgfextra{\def\pgf@circ@labanctext{base}}%base
- \else
- \pgfextra{\def\pgf@circ@labanctext{north}}%north
- \fi
- \fi
- \fi
- \fi\fi
- (labelcoor) node[anchor=\pgf@circ@labanctext,
- inner sep=0.5\pgf@circ@res@temp, outer sep=0pt, \circuitikzbasekey/bipole #1 style,
- ](\ctikzvalof{bipole/name}#1){\strut\pgf@circ@finallabels{#1}%
- }
-}
-
-\def\pgf@circ@finallabels#1{%
- \edef\pgf@temp{}%
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/unit}}%
- \ifx\pgf@temp\pgf@circ@temp%
- \ctikzvalof{bipole/#1/name}%
- \else%
- $\SI{\ctikzvalof{bipole/#1/name}}{\ctikzvalof{bipole/#1/unit}}$%
- \fi%
-}
-
-\ctikzset{text/.style={t=#1}}
-\ctikzset{t/.code={%
- \ctikzsetvalof{bipoles/twoport/text}{#1}%
-}}
-
-%%%% Stacked labels
-%
-% stacked labels by Romano Giannetti romano@rgtti.com
-% heavily based on Claudo Fiandrinos's https://tex.stackexchange.com/a/65792/38080
-% \expandafter trick inspired by Matthew Leingang's https://tex.stackexchange.com/a/12272/38080
-%
-% labels are in a tabular, globally aligned:
-% vertically with key l2 valign (default c)
-% c: center t: top b: bottom
-% horizontally with key l2 align (default l)
-% l: left c: centered r: right
-% you can switch sides using l2_=... and l2^=...
-% syntax is l2_ = line1 and line2 (same for l2^)
-%
-\ctikzset{%
- l2 valign/.store in=\ltwo@valign, l2 valign=c,
- l2 halign/.store in=\ltwo@halign, l2 halign=l,
-}
-\ctikzset{l2base/.code n args={2}{
- \pgfkeys{/tikz/circuitikz/bipole/label/name=%
- \bgroup
- \setlength{\tabcolsep}{2pt}%
- \def\ltwo@tabu{\tabular[\ltwo@valign]}%
- \expandafter\ltwo@tabu\expandafter{\ltwo@halign}%
- #1\\ #2%
- \endtabular
- \egroup
- }%
- \ctikzsetvalof{bipole/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#2}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-\ctikzset{l2/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l2 above/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l2^/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l2 below/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-\ctikzset{l2_/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-%%%---------- close: tex/pgfcirclabel
-%%%%%%%%%%% Springe nach tex/pgfcircvoltage
-%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Voltage management
-
-%% styles
-\ctikzset{bipole voltage style/.style={}}
-\tikzset{bipole voltage style/.code={
- \ctikzset{bipole voltage style/.style={#1}}
-}}
-\tikzset{bipole voltage append style/.code={
- \ctikzset{bipole voltage style/.append style={#1}}
-}}
-
-\ctikzset{v^>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v^</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v_>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-\ctikzset{v_</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
-\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
-\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
-\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
-
-% Default position varies whether the component is a voltage source
-% or not
-\ctikzset{v/.code = {
- \ifpgf@circuit@bipole@isvoltage
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \ifpgf@circ@oldvoltagedirection
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \fi
- \fi
- \ifpgf@circ@oldvoltagedirection
- \ifpgf@circuit@bipole@iscurrent\ifpgf@circ@fixbatteries
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \fi\fi
- \else
- \ifpgf@circuit@bipole@iscurrent
- \ifpgf@circuit@bipole@current@backward
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \fi\fi\fi
- \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
- \ctikzsetvalof{bipole/voltage/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- }
-}
-
-% american voltage font selection and symbol definition
-% the default font command is {} --- nothing
-\def\pgf@circ@avfont{\ctikzvalof{voltage/american font}}
-%
-% plus and minus symbols (default is $+$ and $-$, see pgfcirc.defines.tex)
-%
-\def\pgf@circ@avplus{\ctikzvalof{voltage/american plus}}
-\def\pgf@circ@avminus{\ctikzvalof{voltage/american minus}}
-
-%%
-\def\setscaledRlenforclass{%
- \csname pgf@sh@ma@\ctikzvalof{bipole/name}\endcsname
- \ifdefined\ctikzclass
- \edef\pgf@temp{/tikz/circuitikz/\ctikzclass/scale}
- \pgfkeysifdefined{\pgf@temp}
- {\pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- {\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}
- \else
- \pgf@circ@scaled@Rlen=\pgf@circ@Rlen
- \fi
-}
-
-%% Output routine for generic bipoles
-
-\def\pgf@circ@drawvoltagegeneric{
- \pgfextra{
- % \typeout{NAME:\ctikzvalof{bipole/name}}
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/straight label distance}
- \pgfkeysifdefined{\pgf@temp}
- {
- \edef\partheight{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/straight label distance}}
- \edef\tmpdistfromline{(\partheight\pgf@circ@scaled@Rlen)}
- }
- {
- \pgfkeysifdefined{/tikz/circuitikz/bipoles/voltage/straight label distance}
- {
- \edef\partheight{\ctikzvalof{bipoles/voltage/straight label distance}}
- \edef\tmpdistfromline{(\partheight\pgf@circ@scaled@Rlen)}
- }
- {%calculate default value from part height
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/height}
- \pgfkeysifdefined{\pgf@temp}
- {
- \edef\partheight{0.5*\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/height}}
- \edef\tmpdistfromline{(\partheight\pgf@circ@scaled@Rlen+0.2\pgf@circ@scaled@Rlen)}
- }
- {
- \edef\tmpdistfromline{(.5\pgf@circ@scaled@Rlen)} %fallback to fixed value
- }
- }
- }
- % \typeout{KIND:\ctikzvalof{bipole/kind}\space RLEN:\the\pgf@circ@Rlen\space SCALED:\the\pgf@circ@scaled@Rlen}
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{\tmpdistfromline}
- \else
- \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{-\tmpdistfromline}
- \else
- \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
- \fi
- \fi
- \else
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{-\tmpdistfromline}
- \else
- \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@straight
- \def\distfromline{\tmpdistfromline}
- \else
- \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
- \fi
- \fi
- \fi
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@voltage@angle{90}
- \else
- \def\pgf@circ@voltage@angle{-90}
- \fi
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/distance from node}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\distancefromnode{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/distance from node}} }
- { \edef\distancefromnode{\ctikzvalof{voltage/distance from node}} }
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/bump b}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\bumpb{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/bump b}} }
- { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
- \edef\shiftv{\ctikzvalof{voltage/shift}}
- % additional per-bipole voltage shift (internal)
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/additional label shift}
- \pgfkeysifdefined{\pgf@temp}
- {
- \edef\addvshift{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/additional label shift}}
- }
- {
- \edef\addvshift{0}
- }
- \newdimen{\absvshift}
- \pgfmathsetlength{\absvshift}{(1+\shiftv+\addvshift)*(\distfromline)}
- % put this to true to see the voltage label coordinate anchors
- \newif\ifpgf@circ@debugv\pgf@circ@debugvfalse
- }
- % %\pgf@circ@Rlen/\ctikzvalof{current arrow scale} is equal to the length of the currarrow
- coordinate (pgfcirc@midtmp) at ($(\tikztostart) ! \pgf@circ@Rlen/\ctikzvalof{current arrow scale} ! (anchorstartnode)$) %absolute move, minimum space is length of arrowhead
- coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distancefromnode ! (anchorstartnode)$)
- coordinate (pgfcirc@Vfrom@flat) at (pgfcirc@midtmp)
- coordinate (pgfcirc@Vfrom) at ($(pgfcirc@midtmp) ! -\distfromline ! \pgf@circ@voltage@angle:(anchorstartnode)$)
-
- coordinate (pgfcirc@midtmp) at ($(\tikztotarget) ! \pgf@circ@Rlen/\ctikzvalof{current arrow scale} ! (anchorendnode)$)%absolute move, minimum space is length of arrowhead
- coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distancefromnode ! (anchorendnode)$)
- coordinate (pgfcirc@Vto@flat) at (pgfcirc@midtmp)
- coordinate (pgfcirc@Vto) at ($(pgfcirc@midtmp) ! \distfromline ! \pgf@circ@voltage@angle : (anchorendnode)$)
-
- \ifpgf@circuit@bipole@voltage@below
- \ifpgf@circ@debugv
- node [ocirc, fill=red] at (anchorstartnode) {}
- node [ocirc, fill=blue] at (anchorendnode) {}
- node [ocirc, fill=green] at (pgfcirc@Vto) {}
- node [ocirc, fill=yellow] at (pgfcirc@Vfrom) {}
- node [odiamondpole, fill=green!50!black] at (pgfcirc@Vto@flat) {}
- node [odiamondpole, fill=orange] at (pgfcirc@Vfrom@flat) {}
- \fi
- coordinate (pgfcirc@Vto) at ($(pgfcirc@Vto@flat) ! \absvshift!90 : (anchorendnode)$)
- coordinate (pgfcirc@Vfrom) at ($(pgfcirc@Vfrom@flat) ! \absvshift!-90 : (anchorstartnode)$)
- coordinate (pgfcirc@Vcont1t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
- coordinate (pgfcirc@Vcont2t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
- coordinate (pgfcirc@Vcont1) at ($(pgfcirc@Vcont1t) ! -\absvshift!90 : (pgfcirc@Vcont2t)$)
- coordinate (pgfcirc@Vcont2) at ($(pgfcirc@Vcont2t) ! -\absvshift!-90 : (pgfcirc@Vcont1t)$)
- \ifpgf@circ@debugv
- node [odiamondpole, fill=green] at (pgfcirc@Vto) {}
- node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom) {}
- node [osquarepole, fill=red] at (pgfcirc@Vcont1) {}
- node [osquarepole, fill=blue] at (pgfcirc@Vcont2) {}
- \fi
- \else
- \ifpgf@circ@debugv
- node [ocirc, fill=red] at (anchorstartnode) {}
- node [ocirc, fill=blue] at (anchorendnode) {}
- node [ocirc, fill=green] at (pgfcirc@Vto) {}
- node [ocirc, fill=yellow] at (pgfcirc@Vfrom) {}
- node [odiamondpole, fill=green] at (pgfcirc@Vto@flat) {}
- node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom@flat) {}
- \fi
- coordinate (pgfcirc@Vto) at ($(pgfcirc@Vto@flat) ! -\absvshift!90 : (anchorendnode)$)
- coordinate (pgfcirc@Vfrom) at ($(pgfcirc@Vfrom@flat) ! -\absvshift!-90 : (anchorstartnode)$)
- coordinate (pgfcirc@Vcont1t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
- coordinate (pgfcirc@Vcont2t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
- coordinate (pgfcirc@Vcont1) at ($(pgfcirc@Vcont1t) ! \absvshift!90 : (pgfcirc@Vcont2t)$)
- coordinate (pgfcirc@Vcont2) at ($(pgfcirc@Vcont2t) ! \absvshift!-90 : (pgfcirc@Vcont1t)$)
- \ifpgf@circ@debugv
- node [odiamondpole, fill=green] at (pgfcirc@Vto) {}
- node [odiamondpole, fill=yellow] at (pgfcirc@Vfrom) {}
- node [osquarepole, fill=red] at (pgfcirc@Vcont1) {}
- node [osquarepole, fill=blue] at (pgfcirc@Vcont2) {}
- \fi
- \fi
-
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@straight
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) --(pgfcirc@Vfrom) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
- \else
- (pgfcirc@Vfrom) --(pgfcirc@Vto) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) .. controls (pgfcirc@Vcont2) and (pgfcirc@Vcont1) ..
- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {}
- (pgfcirc@Vfrom)
- \else
- (pgfcirc@Vfrom) .. controls (pgfcirc@Vcont1) and (pgfcirc@Vcont2) ..
- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {}
- (pgfcirc@Vto)
- \fi
- \fi
- \else % american
- \ifx\@@kind\@@open % open circuit; put + and - directly on it
- \ifpgf@circuit@bipole@voltage@backward
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom@flat) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=center]{\pgf@circ@avplus}
- (pgfcirc@Vto@flat) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=center]{\pgf@circ@avminus}
- \else
- (pgfcirc@Vfrom@flat) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=center]{\pgf@circ@avminus}
- (pgfcirc@Vto@flat) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=center]{\pgf@circ@avplus}
- \fi
- \else
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom@flat) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=center]{\pgf@circ@avminus}
- (pgfcirc@Vto@flat) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=center]{\pgf@circ@avplus}
- \else
- (pgfcirc@Vfrom@flat) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=center]{\pgf@circ@avplus}
- (pgfcirc@Vto@flat) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=center]{\pgf@circ@avminus}
- \fi
- \fi
- \else % not open circuit
- \ifpgf@circuit@bipole@voltage@backward
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- \else
- (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- \fi
- \else
- \ifpgf@circ@oldvoltagedirection
- (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- \else
- (pgfcirc@Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- (pgfcirc@Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- \fi
- \fi
- \fi
- \fi
-}
-
-%% Output routine for voltage sources
-\def\pgf@circ@drawvoltagegenerator{
- % the following is affected indirectly by voltage/shift, you can move the arrow with voltage/bump a.
- % it's not perfect, but I can't find the way to do it correctly...
- \pgfextra{
- \edef\shiftv{\ctikzvalof{voltage/shift}}
- \edef\bumpa{\ctikzvalof{voltage/bump a}}
- \pgfmathsetmacro{\bumpaplus}{\bumpa + 0.5*\shiftv} % coefficient added "by feel". Sorry.
- }
- \ifpgf@circuit@bipole@voltage@below
- coordinate (pgfcirc@Vfrom) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-120)$)
- coordinate (pgfcirc@Vto) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-60)$)
- \else
- coordinate (pgfcirc@Vfrom) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.120)$)
- coordinate (pgfcirc@Vto) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.60)$)
- \fi
- % fix the (unused in this case) Vcont1/2 coords for label placement along the line
- coordinate (pgfcirc@Vcont1) at (pgfcirc@Vto)
- coordinate (pgfcirc@Vcont2) at (pgfcirc@Vfrom)
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vto) -- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {} (pgfcirc@Vfrom)
- \else
- (pgfcirc@Vfrom) -- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {} (pgfcirc@Vto)
- \fi
- \else% american voltage
- \ifpgf@circuit@bipole@voltageoutsideofsymbol
- % if it is a battery, must put + and -
-
- \ifpgf@circ@fixbatteries
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- \else
- (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- \else
- (pgfcirc@Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- (pgfcirc@Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- \fi
- \fi
- \fi
- \fi
-}
-
-%% Output routine
-%% this is the entry point
-%%
-\def\pgf@circ@drawvoltage{% node name
- \pgfextra{ %WARNING: indentation is probably wrong
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north west}
- \else
- \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{west}
- \else
- \def\pgf@circ@bipole@voltage@label@anchor{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{east}
- \else \def\pgf@circ@bipole@voltage@label@anchor{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
-
- % this must be set *before* changing for mirroring and inverting; in that case
- % the xscale/yscale parameters take it into account
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@where{-90}
- \else
- \def\pgf@circ@bipole@voltage@label@where{90}
- \fi
-
- % magic to counteract the scale and yscale effects (there should be a better way...)
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@voltage@below
- \pgf@circuit@bipole@voltage@belowfalse
- \else
- \pgf@circuit@bipole@voltage@belowtrue
- \fi
- \fi
-
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@below
- \pgf@circuit@bipole@voltage@belowfalse
- \else
- \pgf@circuit@bipole@voltage@belowtrue
- \fi
- \fi
-
- % take into account scaling
- \setscaledRlenforclass
-
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/european label distance}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\eudist{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/european label distance}} }
- { \edef\eudist{\ctikzvalof{voltage/european label distance}} }
- % find the height of the bipole or use a default value
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/height}
- \pgfkeysifdefined{\pgf@temp}
- {\pgfmathsetmacro{\partheightf}{0.5*\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/height}}
- \edef\partheight{\partheightf\pgf@circ@scaled@Rlen}}
- {\edef\partheight{(.5\pgf@circ@scaled@Rlen)}} %fallback to fixed value
- \newdimen{\alshift}
- % this is more or less the same of the legacy code; we shift the american label a bit
- % outside the (+) -- (-) line
- \pgfmathsetlength{\alshift}{(\ctikzvalof{voltage/american label distance}-0.6)*\partheight}
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- % set the macro for detecting open
- \edef\@@kind{\ctikzvalof{bipole/kind}}\edef\@@open{open}
- \ifpgf@adjust@open@voltage\else\edef\@@open{this-will-nEver-match}\fi
- % \typeout{KIND\space\@@kind}
- }%end pgfextra
-
- \ifpgf@circuit@bipole@isvoltage
- \pgf@circ@drawvoltagegenerator
- \else
- \pgf@circ@drawvoltagegeneric
- \fi
-
- % \pgfextra{\typeout{LABEL\space KIND:\@@kind\space OPEN:\@@open}}
-
- \ifpgf@circuit@bipole@voltage@straight
- coordinate (Vlab) at ($(pgfcirc@Vto)!0.5!(pgfcirc@Vfrom) $)
- node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt,
- \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
- at (Vlab) {\pgf@circ@finallabels{voltage/label}}
- \else
- \ifpgf@circuit@europeanvoltage
- coordinate (Vlab) at ($(pgfcirc@Vcont1)!0.5!(pgfcirc@Vcont2)$)
- \else
- coordinate (Vlab) at ($(pgfcirc@Vfrom)!0.5!(pgfcirc@Vto)$)
- \ifpgf@circuit@bipole@isvoltage\else
- % add a bit of space for american labels above their symbols in the normal case. You can avoid that
- % with voltage/american label distance=0.5 (it's measured from the center of the component, in heights)
- coordinate (Vlab) at ($(Vlab) ! \alshift ! \pgf@circ@bipole@voltage@label@where :(pgfcirc@Vto)$)
- \fi
- \fi
-
- \ifpgf@circuit@europeanvoltage
- node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt,
- \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
- at (Vlab) {\pgf@circ@finallabels{voltage/label}}
- \else % american voltages
- \ifx\@@kind\@@open
- coordinate (Vlab) at ($(pgfcirc@Vfrom@flat)!0.5!(pgfcirc@Vto@flat)$)
- node [anchor=center, inner sep=2pt,
- \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
- at (Vlab) {\pgf@circ@finallabels{voltage/label}}
- \else
- node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt,
- \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
- at (Vlab) {\pgf@circ@finallabels{voltage/label}}
- \fi
- \fi
- \fi
-}%end drawvoltages
-%%%---------- close: tex/pgfcircvoltage
-%%%%%%%%%%% Springe nach tex/pgfcirccurrent
-%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Current handling
-
-%% styles
-\ctikzset{bipole current style/.style={}}
-\tikzset{bipole current style/.code={
- \ctikzset{bipole current style/.style={#1}}
-}}
-\tikzset{bipole current append style/.code={
- \ctikzset{bipole current style/.append style={#1}}
-}}
-
-%% Options
-\ctikzset{i^>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i>^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i>_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i^</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i<^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i<_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i/.code = {
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above }
- \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
- \ctikzsetvalof{bipole/current/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- %reverse current direction for voltage sources
- \ifpgf@circ@oldvoltagedirection\else
- \ifpgf@circuit@bipole@isvoltage
- \ifpgf@circuit@bipole@voltage@backward
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below }
- \else
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above }
- \fi\fi\fi
- }
-}
-
-\ifpgf@circ@oldvoltagedirection
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
-\else
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
-\fi
-\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
-\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
-\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
-
-%% Output routine
-\def\pgf@circ@drawcurrent{
- \pgfextra{
- \edef\pgf@circ@ffffff{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- \ifnum\pgfcircmathresult >355
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
-
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@bipole@current@label@where{-90}
- \else
- \def\pgf@circ@bipole@current@label@where{+90}
- \fi
- }
-
- \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
- \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line
- (\tikztostart)--(\tikztotarget)
- \else% normal bipole or source
- \ifpgf@circuit@bipole@current@before
- (\tikztostart)--(anchorstartnode)
- \else
- (anchorendnode)--(\tikztotarget)
- \fi
- \fi
- \ifpgf@circuit@bipole@current@backward
- \pgfextra{
- \pgfmathsubtract{\pgf@circ@ffffff}{180}
- \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- \fi
- coordinate[currarrow,pos=\ctikzvalof{current/distance},rotate=\pgf@circ@ffffff,
- anchor=center](Iarrow)
- (Iarrow.\pgf@circ@bipole@current@label@where)
- node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole current style]
- (\ctikzvalof{bipole/name}current){\pgf@circ@finallabels{current/label}}
-}
-
-%%%---------- close: tex/pgfcirccurrent
-%%%%%%%%%%% Springe nach tex/pgfcircflow
-%%%---------- open: tex/pgfcircflow.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% flow handling
-
-%% styles
-\ctikzset{bipole flow style/.style={}}
-\tikzset{bipole flow style/.code={
- \ctikzset{bipole flow style/.style={#1}}
-}}
-\tikzset{bipole flow append style/.code={
- \ctikzset{bipole flow style/.append style={#1}}
-}}
-
-%% Options
-\ctikzset{f^>/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/curflowrent/y position = above
- }
-}
-
-\ctikzset{f_>/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f>^/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f>_/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f^</.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f_</.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f<^/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f<_/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f</.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = backward} }
-\ctikzset{f_/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = below } }
-\ctikzset{f>/.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = forward } }
-\ctikzset{f^/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = above } }
-
-\ctikzset{f/.code = {
- \pgfkeys{\circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = above }
- \pgfkeys{/tikz/circuitikz/bipole/flow/label/name=#1}
- \ctikzsetvalof{bipole/flow/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}
-}
-
-%% Output routine
-\def\pgf@circ@drawflow{
- \pgfextra{
- \edef\pgf@circ@ffffff{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- \ifnum\pgfcircmathresult >355
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
-
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@bipole@flow@label@where{-90}
- \else
- \def\pgf@circ@bipole@flow@label@where{+90}
- \fi
- }
-
- \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
- \ifx\pgf@circ@temp\pgf@temp%draw flow at a short at middle of the line
- (\tikztostart)--(\tikztotarget)
- \else% normal bipole or source
- \ifpgf@circuit@bipole@flow@before
- (\tikztostart)--(anchorstartnode)
- \else
- (anchorendnode)--(\tikztotarget)
- \fi
- \fi
- \pgfextra{
- \ifpgf@circuit@bipole@flow@backward
- \ifpgf@circuit@bipole@flow@below
- \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \else
- \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \fi
- \pgfmathsubtract{\pgf@circ@ffffff}{180}
- \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \else
- \ifpgf@circuit@bipole@flow@below
- \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \else
- \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \fi
- \fi
- }
- coordinate[flowarrow,pos=\ctikzvalof{flow/distance},rotate=\pgf@circ@ffffff,yshift=\flow@offset, anchor=center](Farrowpos)
- (Farrowpos.\pgf@circ@bipole@flow@label@where) node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole flow style]
- (\ctikzvalof{bipole/name}flow){\pgf@circ@finallabels{flow/label}}
-}
-
-%%%---------- close: tex/pgfcircflow
-
-% notice that the default is nooldvoltagedirection; it's not explicitly set to allow for the warning
-\ExecuteOptions{nofetbodydiode, nofetsolderdot, europeancurrents, europeanvoltages,americanports, americanresistors, cuteinductors ,europeangfsurgearrester, nosiunitx, noarrowmos, smartlabels}
-
-\ProcessOptions\relax
-
-%%%%%%%%%%% Springe nach tex/pgfcircpath
-%%%---------- open: tex/pgfcircpath.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-
-\def\pgf@circ@direction{0.0}
-
-% Names
-\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
-\ctikzset{n/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/name=#1}
-}}
-
-% Reflect the node along
-\ctikzset{mirrored/.is choice}
-\ctikzset{mirror value/.initial=1}
-\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
-\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
-\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
-
-% Invert node along path
-\ctikzset{inverted/.is choice}
-\ctikzset{invert value/.initial=1}
-\ctikzset{inverted/true/.code = {\ctikzsetvalof{invert value}{-1}\pgf@circuit@bipole@invertedtrue}}
-\ctikzset{inverted/false/.code = {\ctikzsetvalof{invert value}{1}\pgf@circuit@bipole@invertedfalse}}
-\ctikzset{invert/.style = {/tikz/circuitikz/inverted=true}}
-\newif\ifpgf@circuit@bipole@inverted
-\ctikzset{bipole/inverted/.is if=pgf@circuit@bipole@inverted}
-
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-
-% Initialize paths
-\def\pgfcircresetpath{
- \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90, ,bipole/annotation/name=, bipole/annotation/position=-90,
- bipole/inverted=false, bipole/kind=,
- bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
- bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
- bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
- bipole/current/y position=above, bipole/current/direction=forward,
- mirrored=false
- }
-}
-
-%% Helper function for path-function to ensure using anchors between nodes
-\def\set@explicit@center@anchor#1{
- \pgfutil@ifundefined{pgf@sh@ns@#1}
- {
- %This coordinate is no node(but a relative position or a coordinate), no further handling needed
- }{
- \pgfutil@in@.{#1}
- \ifpgfutil@in@
- % Anchor is used, do nothing!
- \else%
- \let\tikz@moveto@waiting=\relax
- \pgfpathmoveto{\tikz@last@position}%force movement, because tikz@moveto@waiting
- \edef#1{#1.center}%ensure using center anchor
- \fi
-}
-}
-
-
-%% Generic bipole path
-%% I am not user what the second argument is needed for
-\def\pgf@circ@bipole@path#1#2{
-
- \pgfextra{
- \set@explicit@center@anchor{\tikztostart}
- \set@explicit@center@anchor{\tikztotarget}
- \pgfsyssoftpath@getcurrentpath{\myp@th}%% save current path to extend after calculation of correct start/end coordinates
- \ctikzset{bipole/kind = #1}
- \edef\pgf@temp{\ctikzvalof{bipole/name}}
- \def\pgf@circ@temp{}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = #1\pgf@circ@rand} % create it (re-usage should not create problem, but...)
- \fi
- }
-
- (\tikztostart) coordinate (\ctikzvalof{bipole/name}start)%necessary to get correct coordinates in the case of relative start/end or constructions like ((node1)-|(node2))
- (\tikztotarget) coordinate (\ctikzvalof{bipole/name}end)
- \pgfextra{
- \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- % DO NOT ROUND HERE! pgfcirclabel.tex will do that when needed
- % \pgfmathround{\pgfmathresult}
- \edef\pgf@circ@direction{\pgfmathresult}%Calculate direction(angle) of path
- % \typeout{DIRECTION:\pgf@circ@direction}
- \pgfsyssoftpath@setcurrentpath{\myp@th}
- }
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- \else
- --($(\ctikzvalof{bipole/name}start) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}end)$) %ugly workaround to get correct linejoins(node breaks path?)
- \fi
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)%%positio of middle node
- node[#1shape, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value}, xscale=\ctikzvalof{invert value}]
- (\ctikzvalof{bipole/name}) {}
- \ifpgf@circuit@bipole@inverted
- \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathend)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathstart)
- \else
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.right)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.left)
- \fi
- \else
- \ifcsname pgf@anchor@#1shape@pathstart\endcsname%if special path-anchors are defined, use them!
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.pathstart)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.pathend)
- \else
- coordinate (anchorstartnode) at (\ctikzvalof{bipole/name}.left)
- coordinate (anchorendnode) at (\ctikzvalof{bipole/name}.right)
- \fi
- \fi
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- \else
- (\ctikzvalof{bipole/name}start.center) -- (anchorstartnode)
- (anchorendnode) -- (\ctikzvalof{bipole/name}end.center)
- \fi
-
- \drawpoles
- \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabels{label}\fi
- \pgf@circ@ifkeyempty{bipole/annotation/name}\else\pgf@circ@drawlabels{annotation}\fi
- \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else\pgf@circ@drawvoltage\fi
- \pgf@circ@ifkeyempty{bipole/current/label/name}\else\pgf@circ@drawcurrent\fi
- \pgf@circ@ifkeyempty{bipole/flow/label/name}\else\pgf@circ@drawflow\fi
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#1}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open
- (\ctikzvalof{bipole/name}end)%Move to end of path
- \else
- ($(\ctikzvalof{bipole/name}end) ! .5\pgflinewidth ! (\ctikzvalof{bipole/name}start)$) -- (\ctikzvalof{bipole/name}end)%ugly workaround to get correct linejoins(node breaks path?)
- %tikztostart and tikztotarget could not be used, because it would break if target coordinate is something like (node1-|node2)
-
- \fi
- % reset
- \pgfextra{
- \pgfcircresetpath
- }
- \tikztonodes%draw pending nodes an path
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Handling of terminals
-
-\ctikzset{bipole/nodes/.is family}
-\ctikzset{bipole/nodes/left/.initial=none}
-\ctikzset{bipole/nodes/right/.initial=none}
-\tikzset{bipole nodes/.style n args={2}{%
- \circuitikzbasekey/bipole/nodes/left=#1,
- \circuitikzbasekey/bipole/nodes/right=#2
- }
-}
-
-%% Easily usable styles
-
-\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-
-% rectjoinfill workarounds
-
-\ctikzset{.-/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{.-*/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{.-o/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{.-d/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{-./.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{o-./.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{*-./.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{d-./.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{.-./.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-
-\tikzset{reversed/.style = {\circuitikzbasekey/bipole/inverted=true}}
-
-\def\drawpoles{
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{none}}
- \ifx\pgf@temp\pgf@circ@temp\else(\tikztostart) node[\pgf@circ@temp] {}\fi
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} }
- \ifx\pgf@temp\pgf@circ@temp\else(\tikztotarget) node[\pgf@circ@temp] {}\fi
-}
-
-%% Path definitions
-\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
-\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
-\def\pgf@circ@sresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{thermistor}{#1}\else\pgf@circ@bipole@path{resistivesens}{#1}\fi}
-\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
-\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
-\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
-\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
-\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
-\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
-\def\pgf@circ@capacitivesens@path#1{\pgf@circ@bipole@path{capacitivesens}{#1}}
-\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
-%% polar capacitor is deprectaed, use curved capacitor instead
-\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
-\def\pgf@circ@ccapacitor@path#1{\pgf@circ@bipole@path{ccapacitor}{#1}}
-\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
-\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
-\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
-\def\pgf@circ@batteryone@path#1{\pgf@circ@bipole@path{battery1}{#1}}
-\def\pgf@circ@batterytwo@path#1{\pgf@circ@bipole@path{battery2}{#1}}
-\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
-\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
-\def\pgf@circ@cutechoke@path#1{\pgf@circ@bipole@path{cutechoke}{#1}}
-\def\pgf@circ@inductor@path#1{%
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@europeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@cuteinductor@path{#1}%
- \else%
- \pgf@circ@americaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@vinductor@path#1{
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@veuropeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@vcuteinductor@path{#1}%
- \else%
- \pgf@circ@vamericaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@inductivesens@path#1{%
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@europeaninductivesens@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@cuteinductivesens@path{#1}%
- \else%
- \pgf@circ@americaninductivesens@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
-\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
-\def\pgf@circ@europeaninductivesens@path#1{\pgf@circ@bipole@path{sfullgeneric}{#1}}
-\def\pgf@circ@americaninductivesens@path#1{\pgf@circ@bipole@path{samericaninductor}{#1}}
-\def\pgf@circ@cuteinductivesens@path#1{\pgf@circ@bipole@path{scuteinductor}{#1}}
-\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
-\def\pgf@circ@bulb@path#1{\pgf@circ@bipole@path{bulb}{#1}}
-\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
-\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
-\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
-\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
-\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
-\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
-\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
-\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
-\def\pgf@circ@oosourcetrans@path#1{\pgf@circ@bipole@path{oosourcetrans}{#1}}
-\def\pgf@circ@ooosource@path#1{\pgf@circ@bipole@path{ooosource}{#1}}
-\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
-\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
-\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
-\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
-\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
-\def\pgf@circ@ecsource@path#1{\pgf@circ@bipole@path{ecsource}{#1}}
-\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
-\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
-\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
-\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
-\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
-\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
-\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
-\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
-\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
-\def\pgf@circ@nos@path#1{\pgf@circ@bipole@path{nos}{#1}}
-\def\pgf@circ@ncs@path#1{\pgf@circ@bipole@path{ncs}{#1}}
-\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
-\def\pgf@circ@ncpushbutton@path#1{\pgf@circ@bipole@path{ncpushbutton}{#1}}
-\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
-\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
-\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
-\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
-\def\pgf@circ@xgeneric@path#1{\pgf@circ@bipole@path{xgeneric}{#1}}
-\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
-\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
-\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
-\def\pgf@circ@oscope@path#1{\pgf@circ@bipole@path{oscope}{#1}}
-\def\pgf@circ@empty@path#1{}
-\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
-\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
-\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
-\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
-\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
-\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
-\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
-\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
-\def\pgf@circ@mstline@path#1{\pgf@circ@bipole@path{mstline}{#1}}
-\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
-\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
-\def\pgf@circ@openbarrier@path#1{\pgf@circ@bipole@path{openbarrier}{#1}}
-\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
-\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
-\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
-
-\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
-\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
-\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
-
-\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
-\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
-\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
-\def\pgf@circ@bandstop@path#1{\pgf@circ@bipole@path{bandstop}{#1}}
-\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
-\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
-\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
-\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
-\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
-\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
-\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
-\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
-\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
-\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
-\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
-\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
-\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
-\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
-\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
-%
-\def\pgf@circ@sacdc@path#1{\pgf@circ@bipole@path{sacdc}{#1}}
-\def\pgf@circ@sdcac@path#1{\pgf@circ@bipole@path{sdcac}{#1}}
-\def\pgf@circ@tacdc@path#1{\pgf@circ@bipole@path{tacdc}{#1}}
-\def\pgf@circ@tdcac@path#1{\pgf@circ@bipole@path{tdcac}{#1}}
-
-%%Mechanical
-\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
-\def\pgf@circ@inerter@path#1{\pgf@circ@bipole@path{inerter}{#1}}
-\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
-\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
-\def\pgf@circ@viscoe@path#1{\pgf@circ@bipole@path{viscoe}{#1}}
-
-%% Styles
-
-\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
-\def\compattikzset#1{\tikzset{\comnpatname#1}}
-
-%\def\ctikzsetbipole#1#2{%
-% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
-%}
-
-\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
-\compattikzset{inerter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inerter@path, l=#1}}
-\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
-\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
-\compattikzset{viscoe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@viscoe@path, l=#1}}
-\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
-\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
-\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
-\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
-\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
-\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
-\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
-\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
-\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
-\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
-\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
-\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
-\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
-\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
-\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
-\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-% polar capacitor is deprecated, use curved capacitor instead
-\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
-\compattikzset{curved capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ccapacitor@path, l=#1}}
-\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
-\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
-\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batteryone@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{battery2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batterytwo@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
-\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
-\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
-\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
-\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
-\compattikzset{cute choke/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cutechoke@path, l=#1}}
-\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
-\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
-\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
-\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
-\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
-\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
-\compattikzset{transmission line/.style = {tline = #1}}
-\compattikzset{TL/.style = {tline = #1}}
-\compattikzset{mstline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mstline@path, l=#1}}
-\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{empty controlled source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-
-\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source = #1, \circuitikzbasekey/bipole/is current=true}}
-\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source = #1, \circuitikzbasekey/bipole/is current=true}}
-
-
-\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
-\compattikzset{xgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@xgeneric@path, l=#1}}
-\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
-\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
-\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
-\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
-\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
-\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
-
-\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
-\compattikzset{bulb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bulb@path, l=#1}}
-
-\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
-\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
-\compattikzset{openbarrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@openbarrier@path}}
-\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
-\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
-\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
-
-\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
-\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
-\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
-\compattikzset{bandstop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandstop@path}}
-\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
-\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
-\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
-\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
-\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
-\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
-\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
-\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
-\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
-\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
-\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
-\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
-\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
-\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
-\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
-%
-\compattikzset{sacdc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@sacdc@path, l=#1}}
-\compattikzset{sdcac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@sdcac@path, l=#1}}
-\compattikzset{tacdc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tacdc@path, l=#1}}
-\compattikzset{tdcac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tdcac@path, l=#1}}
-
-% % % % % %
-% % Begin of Diodes
-% % % % % %
-
-\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
-\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
-\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
-\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
-\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
-\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
-\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
-\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
-\def\pgf@circ@fullbidirectionaldiode@path#1{\pgf@circ@bipole@path{fullbidirectionaldiode}{#1}}
-\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
-\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
-\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
-\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
-\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
-\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
-\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
-\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
-\def\pgf@circ@emptybidirectionaldiode@path#1{\pgf@circ@bipole@path{emptybidirectionaldiode}{#1}}
-
-\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
-\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
-\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
-\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
-\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
-\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
-\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
-\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
-\compattikzset{full bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullbidirectionaldiode@path}}
-\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
-\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
-
-\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{empty bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptybidirectionaldiode@path}}
-\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
-\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
-%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
-
-\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
-\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
-\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
-\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
-\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
-\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
-\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
-\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
-\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
-\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
-\compattikzset{bidirectionaldiode/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
-
-%% Define Shortcuts
-\compattikzset{Do/.style = {\comnpatname empty diode}}
-\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
-\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
-\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
-\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
-\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
-\compattikzset{leDo/.style = {\comnpatname empty led}}
-\compattikzset{VCo/.style = {\comnpatname empty varcap}}
-\compattikzset{biDo/.style = {\comnpatname empty bidirectionaldiode}}
-\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
-\compattikzset{Tro/.style = {\comnpatname empty triac}}
-
-\compattikzset{D*/.style = {\comnpatname full diode}}
-\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
-\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
-\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
-\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
-\compattikzset{pD*/.style = {\comnpatname full photodiode}}
-\compattikzset{leD*/.style = {\comnpatname full led}}
-\compattikzset{VC*/.style = {\comnpatname full varcap}}
-\compattikzset{biD*/.style = {\comnpatname full bidirectionaldiode}}
-\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
-\compattikzset{Tr*/.style = {\comnpatname full triac}}
-
-\compattikzset{D/.style = {\comnpatname diode}}
-\compattikzset{tD/.style = {\comnpatname tunnel diode}}
-\compattikzset{zD/.style = {\comnpatname Zener diode}}
-\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
-\compattikzset{sD/.style = {\comnpatname Schottky diode}}
-\compattikzset{pD/.style = {\comnpatname photodiode}}
-\compattikzset{leD/.style = {\comnpatname led}}
-\compattikzset{VC/.style = {\comnpatname varcap}}
-\compattikzset{biD/.style = {\comnpatname bidirectionaldiode}}
-\compattikzset{Ty/.style = {\comnpatname thyristor}}
-\compattikzset{Tr/.style = {\comnpatname triac}}
-
-\compattikzset{D-/.style = {\comnpatname stroke diode}}
-\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
-\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
-\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
-\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
-\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
-\compattikzset{leD-/.style = {\comnpatname stroke led}}
-\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
-\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
-\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
-\compattikzset{biD-/.style = {\comnpatname empty bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
-
-% % % % % %
-% % End of Diodes
-% % % % % %
-
-
-\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
-\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
-\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
-\compattikzset{ncs/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
-\compattikzset{nos/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
-\compattikzset{normal closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
-\compattikzset{normal open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
-\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
-\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{nopb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{normally open push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{ncpb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
-\compattikzset{normally closed push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
-\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
-
-\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
-\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
-\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
-\tikzset{oscope/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@oscope@path, l=#1}}
-
-% cute switches
-%% closed cute switch
-\def\pgf@circ@cuteclosedswitch@path#1{\pgf@circ@bipole@path{cuteclosedswitch}{#1}}
-\compattikzset{cute closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosedswitch@path, l=#1}}
-\compattikzset{ccsw/.style= {\comnpatname cute closed switch= #1}}
-
-%% open cute switch
-\def\pgf@circ@cuteopenswitch@path#1{\pgf@circ@bipole@path{cuteopenswitch}{#1}}
-\compattikzset{cute open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopenswitch@path, l=#1}}
-\compattikzset{cosw/.style= {\comnpatname cute open switch= #1}}
-
-%% closing cute switch
-\def\pgf@circ@cuteclosingswitch@path#1{\pgf@circ@bipole@path{cuteclosingswitch}{#1}}
-\compattikzset{cute closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosingswitch@path, l=#1}}
-\compattikzset{ccgsw/.style= {\comnpatname cute closing switch= #1}}
-
-%% opening cute switch
-\def\pgf@circ@cuteopeningswitch@path#1{\pgf@circ@bipole@path{cuteopeningswitch}{#1}}
-\compattikzset{cute opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopeningswitch@path, l=#1}}
-\compattikzset{cogsw/.style= {\comnpatname cute opening switch= #1}}
-
-
-% short forms
-\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, l=#1}}
-
-\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path, i=#1}}
-\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosource@path, v=#1}}
-\compattikzset{oosourcetrans/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@oosourcetrans@path, v=#1}}
-\compattikzset{ooosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,/tikz/to path=\pgf@circ@ooosource@path, v=#1}}
-
-\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
-\compattikzset{isource/.style = {\comnpatname current source = #1}}
-\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{ecsource/.style = {\comnpatname empty controlled source = #1}}
-\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
-\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-
-\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-
-\compattikzset{R/.style= {\comnpatname resistor = #1}}
-\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
-\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
-\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
-\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
-\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
-\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
-\compattikzset{C/.style = {\comnpatname capacitor = #1}}
-\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
-%% pC is deprecated, use cC instead
-\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
-\compattikzset{cC/.style = {\comnpatname curved capacitor = #1}}
-\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
-\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
-\compattikzset{L/.style = {\comnpatname inductor = #1}}
-\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
-\compattikzset{V/.style = {\comnpatname voltage source = #1}}
-\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
-\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\def\pgf@temp#1{
- \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
- \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
- \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
- \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-
-%current sources
-\compattikzset{I/.style = {\comnpatname current source = #1}}
-\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\def\pgf@temp#1{
- \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
- \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
- \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
- \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-
-% cute sources
-\def\pgf@circ@vsourceC@path#1{\pgf@circ@bipole@path{vsourceC}{#1}}
-\compattikzset{cute european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{vsourceC/.style= {\comnpatname cute european voltage source= #1}}
-\compattikzset{ceV/.style= {\comnpatname cute european voltage source= #1}}
-
-\def\pgf@circ@isourceC@path#1{\pgf@circ@bipole@path{isourceC}{#1}}
-\compattikzset{cute european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{isourceC/.style= {\comnpatname cute european current source= #1}}
-\compattikzset{ceI/.style= {\comnpatname cute european current source= #1}}
-
-\def\pgf@circ@cvsourceC@path#1{\pgf@circ@bipole@path{cvsourceC}{#1}}
-\compattikzset{cute european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{cvsourceC/.style= {\comnpatname cute european controlled voltage source= #1}}
-\compattikzset{cceV/.style= {\comnpatname cute european controlled voltage source= #1}}
-
-\def\pgf@circ@cisourceC@path#1{\pgf@circ@bipole@path{cisourceC}{#1}}
-\compattikzset{cute european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{cisourceC/.style= {\comnpatname cute european controlled current source= #1}}
-\compattikzset{cceI/.style= {\comnpatname cute european controlled current source= #1}}
-
-% noise sources
-\def\pgf@circ@vsourceN@path#1{\pgf@circ@bipole@path{vsourceN}{#1}}
-\compattikzset{noise voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceN@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{vsourceN/.style= {\comnpatname noise voltage source= #1}}
-\compattikzset{nV/.style= {\comnpatname noise voltage source= #1}}
-
-\def\pgf@circ@isourceN@path#1{\pgf@circ@bipole@path{isourceN}{#1}}
-\compattikzset{noise current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceN@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{isourceN/.style= {\comnpatname noise current source= #1}}
-\compattikzset{nI/.style= {\comnpatname noise current source= #1}}
-
-% resistive sensor american style
-\def\pgf@circ@resistivesens@path#1{\pgf@circ@bipole@path{resistivesens}{#1}}
-\compattikzset{american resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistivesens@path, l=#1}}
-\compattikzset{european resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
-\compattikzset{resistive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@sresistor@path, l=#1}}
-\compattikzset{sR/.style= {\comnpatname resistive sensor= #1}}
-
-\compattikzset{capacitive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitivesens@path, l=#1}}
-\compattikzset{sC/.style= {\comnpatname capacitive sensor= #1}}
-
-\compattikzset{cute inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductivesens@path, l=#1}}
-\compattikzset{european inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductivesens@path, l=#1}}
-\compattikzset{american inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductivesens@path, l=#1}}
-\compattikzset{inductive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductivesens@path, l=#1}}
-\compattikzset{sL/.style= {\comnpatname inductive sensor= #1}}
-
-\compattikzset{Mr/.style = {\comnpatname memristor}}
-
-\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
-\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
-\compattikzset{spst/.style = {\comnpatname switch = #1}}
-
-\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
-
-\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
-\compattikzset{vss/.style = {\comnpatname vee = #1}}
-
-% activate the to-style crossing
-\def\pgf@circ@crossing@path#1{\pgf@circ@bipole@path{crossing}{#1}}
-\compattikzset{crossing/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@crossing@path, l=#1}}
-\compattikzset{xing/.style= {\comnpatname crossing= #1}}
-
-%% loudspeaker and microphone
-
-\def\pgf@circ@loudspeaker@path#1{\pgf@circ@bipole@path{loudspeaker}{#1}}
-\compattikzset{loudspeaker/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@loudspeaker@path, l=#1}}
-
-\def\pgf@circ@mic@path#1{\pgf@circ@bipole@path{mic}{#1}}
-\compattikzset{mic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mic@path, l=#1}}
-
-% more instrument
-\def\pgf@circ@rmeter@path#1{\pgf@circ@bipole@path{rmeter}{#1}}
-\compattikzset{rmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeter@path, l=#1}}
-\def\pgf@circ@rmeterwa@path#1{\pgf@circ@bipole@path{rmeterwa}{#1}}
-\compattikzset{rmeterwa/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeterwa@path, l=#1}}
-\def\pgf@circ@smeter@path#1{\pgf@circ@bipole@path{smeter}{#1}}
-\compattikzset{smeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@smeter@path, l=#1}}
-% current loop probes
-\def\pgf@circ@iloop@path#1{\pgf@circ@bipole@path{iloop}{#1}}
-\compattikzset{iloop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop@path, l=#1}}
-\def\pgf@circ@iloop2@path#1{\pgf@circ@bipole@path{iloop2}{#1}}
-\compattikzset{iloop2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop2@path, l=#1}}
-% qucs-style probes
-\def\pgf@circ@qiprobe@path#1{\pgf@circ@bipole@path{qiprobe}{#1}}
-\compattikzset{qiprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qiprobe@path, l=#1}}
-\def\pgf@circ@qvprobe@path#1{\pgf@circ@bipole@path{qvprobe}{#1}}
-\compattikzset{qvprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qvprobe@path, l=#1}}
-\def\pgf@circ@qpprobe@path#1{\pgf@circ@bipole@path{qpprobe}{#1}}
-\compattikzset{qpprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qpprobe@path, l=#1}}
-% multiwire(s)
-\def\pgf@circ@bmultiwire@path#1{\pgf@circ@bipole@path{bmultiwire}{#1}}
-\compattikzset{bmultiwire/.style = {\circuitikzbasekey,
-/tikz/to path=\pgf@circ@bmultiwire@path, l=#1}}
-\def\pgf@circ@multiwire@path#1{\pgf@circ@bipole@path{multiwire}{#1}}
-\compattikzset{multiwire/.style = {\circuitikzbasekey,
-/tikz/to path=\pgf@circ@multiwire@path, l=#1}}
-\def\pgf@circ@tmultiwire@path#1{\pgf@circ@bipole@path{tmultiwire}{#1}}
-\compattikzset{tmultiwire/.style = {\circuitikzbasekey,
-/tikz/to path=\pgf@circ@tmultiwire@path, l=#1}}
-
-% reed switches
-\def\pgf@circ@reed@path#1{\pgf@circ@bipole@path{reed}{#1}}
-\compattikzset{reed/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@reed@path, l=#1}}
-
-% Transistor like bipoles
-
-\def\pgf@circ@trans@path#1#2{
- \pgfextra{
- \edef\pgf@temp{\ctikzvalof{bipole/name}}
- \def\pgf@circ@temp{#2}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
- \fi
- }
- \ifpgf@circuit@bipole@inverted
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- \else
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- \fi
- \pgfextra{
- \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \pgfmathadd{\pgfmathresult}{-90}
- \pgfmathround{\pgfmathresult}
- \edef\pgf@circ@direction{\pgfmathresult}
- }
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)
- node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
- (\ctikzvalof{bipole/name}) {}
- node {\ctikzvalof{bipole/label/name}}
- \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
- (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
- \else
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
- (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
- \fi
- \drawpoles
- \pgfextra{
- \pgfcircresetpath
- }
- (\tikztotarget) \tikztonodes % e si continua
-}
-
-
-\def\pgf@circ@definetranspath#1{
- \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
-}
-
-\pgf@circ@definetranspath{elmech}
-\pgf@circ@definetranspath{nmos}
-\pgf@circ@definetranspath{pmos}
-\pgf@circ@definetranspath{hemt}
-\pgf@circ@definetranspath{npn}
-\pgf@circ@definetranspath{pnp}
-\pgf@circ@definetranspath{nfet}
-\pgf@circ@definetranspath{nigfete}
-\pgf@circ@definetranspath{nigfetd}
-\pgf@circ@definetranspath{nigfetebulk}
-\pgf@circ@definetranspath{pfet}
-\pgf@circ@definetranspath{pigfete}
-\pgf@circ@definetranspath{pigfetd}
-\pgf@circ@definetranspath{pigfetebulk}
-\pgf@circ@definetranspath{njfet}
-\pgf@circ@definetranspath{pjfet}
-\pgf@circ@definetranspath{pigbt}
-\pgf@circ@definetranspath{nigbt}
-\pgf@circ@definetranspath{Lpigbt}
-\pgf@circ@definetranspath{Lnigbt}
-%%%---------- close: tex/pgfcircpath
-
-\ifpgf@circ@siunitx
- \RequirePackage{xstring}[2009/03/13]
- %\expandafter\let\csname angstrom\endcsname\relax
- \RequirePackage{siunitx}
-\fi
-
-\ifpgf@circ@explicitvdir\else
- \PackageWarningNoLine{circuitikz}{%
- You did not specify one of the voltage directions:\MessageBreak
- \space\space oldvoltagedirection, nooldvoltagedirection, \MessageBreak
- \space\space RPvoltages or EFvoltages \MessageBreak
- Default directions may have changed, \MessageBreak
- please check the manual%
- }
-\fi
-
-\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
-%override (unused) circuitikz environment for compability to externalization)
-\let\circuitikz\tikzpicture
-\let\endcircuitikz\endtikzpicture
+\input{circuitikz-1.1.2-body.tex}
-\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.2.7-body.tex b/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.2.7-body.tex
new file mode 100644
index 0000000000..81cfa7cacd
--- /dev/null
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.2.7-body.tex
@@ -0,0 +1,24523 @@
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+\NeedsTeXFormat{LaTeX2e}
+
+\def\pgfcircversion{1.2.7}
+\def\pgfcircversiondate{2020/12/27}
+
+%% Version 3.0 of pgf/TikZ is required
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+%
+% "arrows" library is deprecated, and behave badly with
+% arrows on short paths. Change to the new arrows.meta
+% In pfgcirc.define, we will add the old definition of
+% latex' which we have lost in the transition
+%
+\usetikzlibrary{arrows.meta, bending}
+\usetikzlibrary{fpu} % may be needed for use fpu reciprocal (v1.0.1)
+%
+% global of options (better use styles!)
+%
+\DeclareOption{european}{
+ \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
+ \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester choice = european}
+}
+\DeclareOption{american}{
+ \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester choice = american}
+ \ctikzset{logic ports = american}
+}
+\DeclareOption{siunitx}{
+ \pgf@circ@siunitxtrue
+}
+\DeclareOption{nosiunitx}{
+ \pgf@circ@siunitxfalse
+}
+\DeclareOption{compatibility}{
+ \pgf@circuit@compattrue
+}
+%
+% voltages
+%
+\DeclareOption{europeanvoltage}{
+ \ctikzset{voltage=european}
+}
+\DeclareOption{straightvoltages}{
+ \ctikzset{voltage=straight}
+}
+\DeclareOption{americanvoltage}{
+ \ctikzset{voltage=american}
+}
+\DeclareOption{europeanvoltages}{
+ \ctikzset{voltage=european}
+}
+\DeclareOption{americanvoltages}{
+ \ctikzset{voltage=american}
+}
+% Voltage directions
+\DeclareOption{oldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectiontrue
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriesfalse
+}
+\DeclareOption{nooldvoltagedirection}{
+ \pgf@circ@oldvoltagedirectionfalse
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriesfalse
+}
+\DeclareOption{RPvoltages}{
+ \pgf@circ@oldvoltagedirectiontrue
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriestrue
+}
+\DeclareOption{EFvoltages}{
+ \pgf@circ@oldvoltagedirectionfalse
+ \pgf@circ@explicitvdirtrue
+ \pgf@circ@fixbatteriestrue
+}
+%
+% currents
+%
+\DeclareOption{europeancurrent}{
+ \ctikzset{current = european}
+}
+\DeclareOption{americancurrent}{
+ \ctikzset{current = american}
+}
+\DeclareOption{europeancurrents}{
+ \ctikzset{current = european}
+}
+\DeclareOption{americancurrents}{
+ \ctikzset{current = american}
+}
+%
+% resistors
+%
+\DeclareOption{americanresistor}{
+ \ctikzset{resistor = american}
+}
+\DeclareOption{europeanresistor}{
+ \ctikzset{resistor = european}
+}
+\DeclareOption{americanresistors}{
+ \ctikzset{resistor = american}
+}
+\DeclareOption{europeanresistors}{
+ \ctikzset{resistor = european}
+}
+%
+% inductors
+%
+\DeclareOption{americaninductor}{
+ \ctikzset{inductor = american}
+}
+\DeclareOption{europeaninductor}{
+ \ctikzset{inductor = european}
+}
+\DeclareOption{cuteinductor}{
+ \ctikzset{inductor = cute}
+}
+\DeclareOption{americaninductors}{
+ \ctikzset{inductor = american}
+}
+\DeclareOption{europeaninductors}{
+ \ctikzset{inductor = european}
+}
+\DeclareOption{cuteinductors}{
+ \ctikzset{inductor = cute}
+}
+%
+% logic ports
+%
+\DeclareOption{americanport}{
+ \ctikzset{logic ports = american}
+}
+\DeclareOption{europeanport}{
+ \ctikzset{logic ports = european}
+}
+\DeclareOption{americanports}{
+ \ctikzset{logic ports = american}
+}
+\DeclareOption{europeanports}{
+ \ctikzset{logic ports = european}
+}
+%
+% surge arresters (really?)
+%
+\DeclareOption{americangfsurgearrester}{
+ \ctikzset{gas filled surge arrester choice = american}
+}
+\DeclareOption{europeangfsurgearrester}{
+ \ctikzset{gas filled surge arrester choice = european}
+}
+%
+% diodes
+%
+\DeclareOption{fulldiodes}{
+ \ctikzset{diode = full}
+}
+\DeclareOption{emptydiodes}{
+ \ctikzset{diode = empty}
+}
+\DeclareOption{strokediodes}{
+ \ctikzset{diode = stroke}
+}
+\DeclareOption{fulldiode}{
+ \ctikzset{diode = full}
+}
+\DeclareOption{emptydiode}{
+ \ctikzset{diode = empty}
+}
+\DeclareOption{strokediode}{
+ \ctikzset{diode = stroke}
+}
+%
+% MOSes and FETs
+%
+\DeclareOption{arrowmos}{
+ \pgf@circuit@mos@arrowstrue
+}
+\DeclareOption{noarrowmos}{
+ \pgf@circuit@mos@arrowsfalse
+}
+\DeclareOption{fetbodydiode}{
+ \pgf@circuit@fet@bodydiodetrue
+}
+\DeclareOption{nofetbodydiode}{
+ \pgf@circuit@fet@bodydiodefalse
+}
+\DeclareOption{fetsolderdot}{
+ \pgf@circuit@fet@solderdottrue
+}
+\DeclareOption{nofetsolderdot}{
+ \pgf@circuit@fet@solderdotfalse
+}
+\DeclareOption{emptypmoscircle}{
+ \pgf@circuit@pmos@emptycircletrue
+}
+\DeclareOption{lazymos}{
+ \ctikzset{tripoles/nmos/width=.5}
+ \ctikzset{tripoles/nmos/gate height=.35}
+ \ctikzset{tripoles/nmos/base height=.35}
+ \ctikzset{tripoles/nmos/height/.initial=1.2}
+ \ctikzset{tripoles/nmos/base width=.5}
+ \ctikzset{tripoles/nmos/gate width=.65}
+ \ctikzset{tripoles/pmos/width=.5}
+ \ctikzset{tripoles/pmos/gate height=.35}
+ \ctikzset{tripoles/pmos/base height=.35}
+ \ctikzset{tripoles/pmos/height/.initial=1.2}
+ \ctikzset{tripoles/pmos/base width=.5}
+ \ctikzset{tripoles/pmos/gate width=.65}
+ \pgf@circuit@pmos@emptycircletrue
+}
+%
+% BJTs labels
+%
+\DeclareOption{legacytransistorstext}{
+ \pgf@circuit@transisors@fixlabelsfalse
+}
+\DeclareOption{nolegacytransistorstext}{
+ \pgf@circuit@transisors@fixlabelstrue
+}
+\DeclareOption{centertransistorstext}{
+ \pgf@circuit@transisors@fixlabelstrue
+}
+%
+% labels
+%
+\DeclareOption{straightlabels}{
+ \ctikzset{label/align = straight}
+}
+\DeclareOption{rotatelabels}{
+ \ctikzset{label/align = rotate}
+}
+\DeclareOption{smartlabels}{
+ \ctikzset{label/align = smart}
+}
+%
+% Several options (better use styles)
+%
+\DeclareOption{betterproportions}{
+ \ctikzset{monopoles/ground/width/.initial=.15}
+ \ctikzset{bipoles/resistor/height/.initial=.23}
+ \ctikzset{bipoles/resistor/width/.initial=.6}
+ \ctikzset{bipoles/capacitor/height/.initial=.4}
+ \ctikzset{bipoles/capacitor/width/.initial=.1}
+ \ctikzset{bipoles/potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height/.initial=.6}
+ \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
+ \ctikzset{bipoles/photoresistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistor/main/.initial=.7}
+ \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistor/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorntc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
+ \ctikzset{bipoles/thermistorptc/width/.initial=.6}
+ \ctikzset{bipoles/thermistorptc/main/.initial=.7}
+ \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/main/.initial=.7}
+ \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
+ \ctikzset{bipoles/varistor/width/.initial=.6}
+ \ctikzset{bipoles/vresistor/height/.initial=.45}
+ \ctikzset{bipoles/vresistor/width/.initial=.6}
+ \ctikzset{bipoles/generic/height/.initial=.23}
+ \ctikzset{bipoles/generic/width/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
+ \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
+ \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
+ \ctikzset{bipoles/ageneric/height/.initial=.23}
+ \ctikzset{bipoles/ageneric/width/.initial=.6}
+ \ctikzset{bipoles/memristor/height/.initial=.23}
+ \ctikzset{bipoles/memristor/wave height/.initial=.375}
+ \ctikzset{bipoles/memristor/width/.initial=.60}
+ \ctikzset{bipoles/tgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tgeneric/width/.initial=.6}
+ \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
+ \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
+ \ctikzset{bipoles/fullgeneric/height/.initial=.23}
+ \ctikzset{bipoles/fullgeneric/width/.initial=.6}
+ \ctikzset{bipoles/diode/height/.initial=.3}
+ \ctikzset{bipoles/diode/width/.initial=.25}
+ \ctikzset{bipoles/bidirectionaldiode/height/.initial=.66}
+ \ctikzset{bipoles/bidirectionaldiode/width/.initial=.6}
+ \ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
+ \ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
+ \ctikzset{tripoles/thyristor/height/.initial=.66}
+ \ctikzset{tripoles/thyristor/height 2/.initial=.3}
+ \ctikzset{tripoles/thyristor/width/.initial=.6}
+ \ctikzset{tripoles/thyristor/diode height/.initial=.3}
+ \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+ \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+ \ctikzset{tripoles/triac/height/.initial=.66}
+ \ctikzset{tripoles/triac/width/.initial=.6}
+ \ctikzset{tripoles/triac/diode width left/.initial=.3}
+ \ctikzset{tripoles/triac/diode width right/.initial=.3}
+}
+% This is a nice hack that prints all the shapes declared
+% by the package. Very useful for coverage testing and debugging.
+%
+% \let\origpgfdeclareshape=\pgfdeclareshape
+% \def\pgfdeclareshape#1{%
+% \typeout{SHAPE:\space"#1"}%
+% \origpgfdeclareshape{#1}
+% }
+%
+%
+%%%%%%%%%
+%%%%%%%%%%% Springe nach tex/pgfcirc.defines
+%%%---------- open: tex/pgfcirc.defines.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+%
+% This file has folding marks for vim (See last line).
+%
+%% Key managements%<<<1
+
+\long\def\pgf@circ@comment#1{}
+
+\def\circuitikzbasekey{/tikz/circuitikz}
+
+\pgfkeys{\circuitikzbasekey/.is family}
+
+\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
+\let\ctikzset\circuitikzset
+\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
+\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
+
+\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
+%%>>>
+
+%% Temporary Counters and dimensions%<<<1
+%% Temporary Counters
+\newcount\pgf@circ@count@a
+\newcount\pgf@circ@count@b
+\newcount\pgf@circ@count@c
+%%%%%%%%%%%%
+%% Dimensions
+% coordinate
+\newdimen\pgf@circ@res@up
+\newdimen\pgf@circ@res@down
+\newdimen\pgf@circ@res@zero
+\newdimen\pgf@circ@res@left
+\newdimen\pgf@circ@res@right
+\newdimen\pgf@circ@res@other
+\newdimen\pgf@circ@res@step
+\newdimen\pgf@circ@res@temp
+% Base len for all circuitikz
+\newdimen\pgf@circ@Rlen
+% scaled length for internal use in scalable shapes
+\newdimen\pgf@circ@scaled@Rlen
+\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}}
+\pgf@circ@Rlen = 1.4cm
+% by default scale is 1.0
+\pgf@circ@scaled@Rlen=\pgf@circ@Rlen
+% inital thickness
+\newdimen \pgfstartlinewidth
+%%>>>
+
+% arrow tips, ported over old arrows library (deprecated)%<<<1
+% see https://tex.stackexchange.com/questions/234084/latex-arrow-tip-with-arrows-meta-library
+% this was the original definition of latex' tips, renamed to avoid clashes
+%
+\pgfarrowsdeclare{latexslim}{latexslim}
+{
+ \pgfutil@tempdima=0.28pt%
+ \advance\pgfutil@tempdima by.3\pgflinewidth%
+ \pgfarrowsleftextend{+-4\pgfutil@tempdima}
+ \pgfarrowsrightextend{+6\pgfutil@tempdima}
+}
+{
+ \pgfutil@tempdima=0.28pt%
+ \advance\pgfutil@tempdima by.3\pgflinewidth%
+ \pgfpathmoveto{\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
+ \pgfpathcurveto
+ {\pgfqpoint{3.5\pgfutil@tempdima}{.5\pgfutil@tempdima}}
+ {\pgfqpoint{-1\pgfutil@tempdima}{1.5\pgfutil@tempdima}}
+ {\pgfqpoint{-4\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
+ \pgfpathcurveto
+ {\pgfqpoint{-1.5\pgfutil@tempdima}{1\pgfutil@tempdima}}
+ {\pgfqpoint{-1.5\pgfutil@tempdima}{-1\pgfutil@tempdima}}
+ {\pgfqpoint{-4\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
+ \pgfpathcurveto
+ {\pgfqpoint{-1\pgfutil@tempdima}{-1.5\pgfutil@tempdima}}
+ {\pgfqpoint{3.5\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
+ {\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
+ \pgfpathclose
+ \pgfusepathqfill
+}
+
+\pgfarrowsdeclarereversed{latexslim reversed}{latexslim reversed}{latexslim}{latexslim}
+%%>>>
+
+%% Macros to do things depending on the class%<<<1
+
+\def\pgf@circ@setifdefinedfill#1#2{%
+ % if \ctikzclass is defined and \ctikzclass/fill is defined and is not none:
+ % set the fill color and execute \pgfusepath{#1}, else execute \pgfusepath{#2}
+ \ifdefined\ctikzclass
+ \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/fill}%
+ {% yes, it's defined
+ \edef\@@tmp{\ctikzvalof{\ctikzclass/fill}}\edef\@@none{none}%
+ \ifx\@@tmp\@@none % but it's none
+ \pgfusepath{#2}%
+ \else
+ \pgfsetfillcolor{\@@tmp}%
+ \pgfusepath{#1}%
+ \fi
+ }{% the class is defined but the fill key not; use #2
+ \pgfusepath{#2}%
+ }
+ \else
+ \pgfusepath{#2}%
+ \fi
+}
+
+%% Macro to fill or draw
+
+\def\pgf@circ@draworfill{%
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgf@circ@setifdefinedfill{draw,fill}{draw}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{draw, fill}
+ \fi
+}
+
+\def\pgf@circ@draworfillandclip{%
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgf@circ@setifdefinedfill{draw, clip, fill}{draw, clip}
+ \pgfusepath{draw, clip}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{draw, clip, fill}
+ \fi
+}
+
+\def\pgf@circ@maybefill{%
+ \ifx\tikz@fillcolor\pgfutil@empty
+ \pgf@circ@setifdefinedfill{fill}{discard}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{fill}
+ \fi
+}
+
+%% Macros for setting linewidth
+% #1 is the legacy class (bipoles, tripoles) etc
+% #2 is the reference linewidth
+\def\pgf@circ@setlinewidth#1#2{%
+ \ifdefined\ctikzclass
+ \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/thickness}%
+ {% yes, it's defined
+ \edef\@@tmp{\ctikzvalof{\ctikzclass/thickness}}\edef\@@none{none}%
+ \ifx\@@tmp\@@none % but it's none
+ \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}% passthrough legacy class
+ \else
+ \pgfsetlinewidth{\@@tmp #2}%
+ \fi
+ }{ % key not defined, do the legacy thing
+ \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
+ }% Ok, do nothing
+ \else % no class
+ \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
+ \fi
+}
+% use \pgf@circ@setlinewidth{none}{\pgflinewidth} if there is no legacy case
+\ctikzset{none/thickness/.initial=1.0} % do not touch
+%%>>>
+
+%% font changes compatible with plain/LaTeX/ConTeXt%<<<1
+%% thanks to Henri Menke https://github.com/circuitikz/circuitikz/issues/285#issuecomment-537224605
+
+\ifpgfutil@format@is@latex
+ \long\def\pgf@circ@font@tiny{\tiny}
+ \long\def\pgf@circ@font@small{\small}
+ \long\def\pgf@circ@font@bold{\textbf}
+ \long\def\pgf@circ@font@boldmath{\boldmath}
+ \long\def\pgf@circ@font@sixbm{\fontsize{6}{7}\selectfont\boldmath}
+ \long\def\pgf@circ@font@tenbm{\fontsize{10}{12}\selectfont\boldmath}
+ \long\def\pgf@circ@font@twelve{\fontsize{12}{14}\selectfont}
+\else\ifpgfutil@format@is@plain
+ \long\def\pgf@circ@font@tiny{\fiverm}
+ \long\def\pgf@circ@font@small{\sevenrm}
+ \long\def\pgf@circ@font@bold#1{{\bf#1}}
+ \long\def\pgf@circ@font@boldmath{\bf} % to be tested
+ \long\def\pgf@circ@font@sixbm{\sevenrm\bf} %
+ \long\def\pgf@circ@font@tenbm{\tenrm\bf} %
+ \long\def\pgf@circ@font@twelve{\twelverm} %
+\else\ifpgfutil@format@is@context
+ \long\def\pgf@circ@font@tiny{\tfxx}
+ \long\def\pgf@circ@font@small{\tfx}
+ \long\def\pgf@circ@font@bold{\bold}
+ \long\def\pgf@circ@font@boldmath{\bold} % to be tested
+ \long\def\pgf@circ@font@sixbm{\tfx\bold} %
+ \long\def\pgf@circ@font@tenbm{\normal\bold}%
+ \long\def\pgf@circ@font@twelve{\tfa} %
+\fi\fi\fi
+
+
+%
+% Thanks to Phelype Oleinik https://tex.stackexchange.com/a/520806/38080
+%
+% this is needed to avoid problems with \ConTeXt
+\ifcsname normalunexpanded\endcsname
+ \let\pgfcircutil@unexpanded\normalunexpanded
+\else
+ \let\pgfcircutil@unexpanded\unexpanded
+\fi
+% minimally expand a pgfkey to check if it's {}/undefined or filled.
+\def\unexpandedvalueof#1{%
+ \pgfcircutil@unexpanded\expandafter\expandafter
+ \expandafter\pgf@circ@valueof@chk\pgfkeysvalueof{#1}}
+\def\pgf@circ@valueof@chk#1{%
+ \ifx\relax#1%
+ \expandafter\pgfutil@firstoftwo
+ \else
+ \expandafter\pgfutil@secondoftwo
+ \fi
+ {{}}% #1 is \relax, so consider empty
+ {\expandafter{#1}}% otherwise, leave the key after one more expansion
+}%
+%>>>
+
+% text position in some component.%<<<1
+% (added with ieeestd logic ports. Maybe to be extended to other components,
+% like amplifiers)
+%
+\newif\ifpgf@circ@center@text\pgf@circ@center@texttrue
+\tikzset{component text/.is choice}%
+\tikzset{component text/center/.code={\pgf@circ@center@texttrue}}%
+\tikzset{component text/left/.code={\pgf@circ@center@textfalse}}%
+\ctikzset{component text/.is choice}%
+\ctikzset{component text/center/.code={\pgf@circ@center@texttrue}}%
+\ctikzset{component text/left/.code={\pgf@circ@center@textfalse}}%
+\ctikzset{left text distance/.initial=0.3em}%
+%>>>
+
+% voltage direction options%<<<1
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circuit@compat
+\newif\ifpgf@circ@oldvoltagedirection % default false
+\newif\ifpgf@circ@explicitvdir
+\newif\ifpgf@circ@fixbatteries
+
+\ctikzset{voltage dir/.is choice}
+\ctikzset{voltage dir/old/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriesfalse}}
+\ctikzset{voltage dir/noold/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriesfalse}}
+\ctikzset{voltage dir/RP/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriestrue}}
+\ctikzset{voltage dir/EF/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriestrue}}
+\tikzset{voltage dir/.style={circuitikz/voltage dir=#1}}%
+%>>>
+
+% bipole definitions for path component and text decorations%%<<<1
+%
+% Option "t=*" for nodes
+\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
+%
+\ctikzset{bipole/.is family}
+\ctikzset{bipole/kind/.initial=}
+\ctikzset{bipole/name/.initial=}
+\newif\ifpgf@circuit@bipole@isvoltage
+\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
+\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
+\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
+\newif\ifpgf@circuit@bipole@strokedsymbol
+\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
+\newif\ifpgf@circuit@bipole@iscurrent
+\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
+
+\ctikzset{bipole/voltage/.is family}
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+\newif\ifpgf@circuit@bipole@voltage@below
+\ctikzset{bipole/voltage/position/.is choice}
+\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
+\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
+
+\ctikzset{bipole/voltage/label/unit/.initial=}
+\ctikzset{bipole/voltage/label/name/.initial=}
+
+\ctikzset{bipole/current/.is family}
+\newif\ifpgf@circuit@bipole@current@backward
+\ctikzset{bipole/current/direction/.is choice}
+\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
+\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
+\newif\ifpgf@circuit@bipole@current@before
+\ctikzset{bipole/current/x position/.is choice}
+\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
+\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
+\newif\ifpgf@circuit@bipole@current@below
+\ctikzset{bipole/current/y position/.is choice}
+\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
+\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
+\ctikzset{bipole/current/label/unit/.initial=}
+\ctikzset{bipole/current/label/name/.initial=}
+
+\ctikzset{bipole/flow/.is family}
+\newif\ifpgf@circuit@bipole@flow@backward
+\ctikzset{bipole/flow/direction/.is choice}
+\ctikzset{bipole/flow/direction/forward/.code={\pgf@circuit@bipole@flow@backwardfalse}}
+\ctikzset{bipole/flow/direction/backward/.code={\pgf@circuit@bipole@flow@backwardtrue}}
+\newif\ifpgf@circuit@bipole@flow@before
+\ctikzset{bipole/flow/x position/.is choice}
+\ctikzset{bipole/flow/x position/after/.code={\pgf@circuit@bipole@flow@beforefalse}}
+\ctikzset{bipole/flow/x position/before/.code={\pgf@circuit@bipole@flow@beforetrue}}
+\newif\ifpgf@circuit@bipole@flow@below
+\ctikzset{bipole/flow/y position/.is choice}
+\ctikzset{bipole/flow/y position/above/.code={\pgf@circuit@bipole@flow@belowfalse}}
+\ctikzset{bipole/flow/y position/below/.code={\pgf@circuit@bipole@flow@belowtrue}}
+\ctikzset{bipole/flow/label/unit/.initial=}
+\ctikzset{bipole/flow/label/name/.initial=}
+\ctikzset{flow/distance/.initial = .5}
+\ctikzset{flow/offset/.initial = .2}%distance between flow-arrow and conductor
+
+\ctikzset{bipole/label/.is family}
+\ctikzset{bipole/label/position/.initial=90}
+\ctikzset{bipole/label/unit/.initial=}
+\ctikzset{bipole/label/name/.initial=}
+\ctikzset{bipole/annotation/.is family}
+\ctikzset{bipole/annotation/position/.initial=-90}
+\ctikzset{bipole/annotation/unit/.initial=}
+\ctikzset{bipole/annotation/name/.initial=}
+
+\newif\ifpgf@circ@siunitx
+\newif\ifpgf@circ@siunitx@res
+
+\ctikzset{label/align/.is choice}
+\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
+\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
+\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
+%%>>>
+
+% traditional styles %<<<1
+%
+\ctikzset{thickness/.initial=2}
+\ctikzset{color/.initial=black}
+\pgfkeys{/tikz/color/.add code={}{\ctikzset{color={#1}}}}
+\ctikzset{bipoles/border margin/.initial=1.1}
+\ctikzset{bipoles/thickness/.initial=2}
+\ctikzset{tripoles/thickness/.initial=2}
+\ctikzset{quadpoles/thickness/.initial=2}
+\ctikzset{nodes width/.initial=.04}
+%%>>>
+
+% Styles definitions and macros%<<<1
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% main style definitions
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% load a style file: search ctikzstyle-NAME.tex in path
+\def\ctikzloadstyle#1{%
+ \pgfutil@InputIfFileExists{ctikzstyle-#1}{}{%
+ \tikzerror{I did not find the circuitikz style #1}}%
+}
+
+% load and enact a style
+\def\ctikzsetstyle#1{%
+ \ctikzloadstyle{#1}%
+ \tikzset{#1 circuit style}%
+}
+
+% global style parameters
+\ctikzset{default/scale/.initial=1.0} % do not touch
+\ctikzset{default/fill/.initial=none} % do not touch
+\ctikzset{default/thickness/.initial=none} % do not touch
+% default is use as the generic default style for bipoles
+
+% mostly bipoles:
+
+\ctikzset{resistors/scale/.initial=1.0}
+\ctikzset{resistors/fill/.initial=none}
+\ctikzset{resistors/thickness/.initial=none}
+
+\ctikzset{capacitors/scale/.initial=1.0}
+\ctikzset{capacitors/fill/.initial=none}
+\ctikzset{capacitors/thickness/.initial=none}
+
+\ctikzset{inductors/scale/.initial=1.0}
+\ctikzset{inductors/fill/.initial=none}
+\ctikzset{inductors/thickness/.initial=none}
+
+\ctikzset{diodes/scale/.initial=1.0}
+\ctikzset{diodes/fill/.initial=none}
+\ctikzset{diodes/thickness/.initial=none}
+
+\ctikzset{batteries/scale/.initial=1.0}
+\ctikzset{batteries/fill/.initial=none}
+\ctikzset{batteries/thickness/.initial=none}
+
+\ctikzset{sources/scale/.initial=1.0}
+\ctikzset{sources/fill/.initial=none}
+\ctikzset{sources/thickness/.initial=none}
+
+\ctikzset{csources/scale/.initial=1.0}
+\ctikzset{csources/fill/.initial=none}
+\ctikzset{csources/thickness/.initial=none}
+
+\ctikzset{instruments/scale/.initial=1.0}
+\ctikzset{instruments/fill/.initial=none}
+\ctikzset{instruments/thickness/.initial=none}
+
+\ctikzset{mechanicals/scale/.initial=1.0}
+\ctikzset{mechanicals/fill/.initial=none}
+\ctikzset{mechanicals/thickness/.initial=none}
+
+\ctikzset{misc/scale/.initial=1.0}
+\ctikzset{misc/fill/.initial=none}
+\ctikzset{misc/thickness/.initial=none}
+
+\ctikzset{blocks/scale/.initial=1.0}
+\ctikzset{blocks/fill/.initial=none}
+\ctikzset{blocks/thickness/.initial=none}
+
+% mostly nodes
+
+\ctikzset{grounds/scale/.initial=1.0}
+\ctikzset{grounds/fill/.initial=none}
+\ctikzset{grounds/thickness/.initial=none}
+
+\ctikzset{power supplies/scale/.initial=1.0}
+\ctikzset{power supplies/fill/.initial=none}
+\ctikzset{power supplies/thickness/.initial=none}
+
+\ctikzset{transistors/scale/.initial=1.0}
+\ctikzset{transistors/fill/.initial=none}
+\ctikzset{transistors/thickness/.initial=none}
+
+\ctikzset{tubes/scale/.initial=1.0}
+\ctikzset{tubes/fill/.initial=none}
+\ctikzset{tubes/thickness/.initial=none}
+
+\ctikzset{RF/scale/.initial=1.0}
+\ctikzset{RF/fill/.initial=none}
+\ctikzset{RF/thickness/.initial=none}
+
+\ctikzset{electromechanicals/scale/.initial=1.0}
+\ctikzset{electromechanicals/fill/.initial=none}
+\ctikzset{electromechanicals/thickness/.initial=none}
+
+% transformers go with inductors
+\ctikzset{amplifiers/scale/.initial=1.0}
+\ctikzset{amplifiers/fill/.initial=none}
+\ctikzset{amplifiers/thickness/.initial=none}
+
+\ctikzset{switches/scale/.initial=1.0}
+\ctikzset{switches/fill/.initial=none}
+\ctikzset{switches/thickness/.initial=none}
+
+\ctikzset{logic ports/scale/.initial=1.0}
+\ctikzset{logic ports/fill/.initial=none}
+\ctikzset{logic ports/thickness/.initial=none}
+
+\ctikzset{flipflops/scale/.initial=1.0}
+\ctikzset{flipflops/fill/.initial=none}
+\ctikzset{flipflops/thickness/.initial=none}
+
+\ctikzset{muxdemuxes/scale/.initial=1.0}
+\ctikzset{muxdemuxes/fill/.initial=none}
+\ctikzset{muxdemuxes/thickness/.initial=none}
+
+\ctikzset{chips/scale/.initial=1.0}
+\ctikzset{chips/fill/.initial=none}
+\ctikzset{chips/thickness/.initial=none}
+
+\ctikzset{displays/scale/.initial=1.0}
+\ctikzset{displays/fill/.initial=none}
+\ctikzset{displays/thickness/.initial=none}
+%
+% general styles
+%
+\tikzset{european/.style = {european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester set}}
+\tikzset{american/.style = {american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester set}}
+\tikzset{cute/.style = {european currents, european voltages, american resistors, cute inductors, american ports}}
+%%>>>
+
+% grounds and power supplies%<<<1
+
+\ctikzset{monopoles/.is family}
+\ctikzset{monopoles/ground/width/.initial=.25}
+\ctikzset{monopoles/ground/connectionthickness/.initial=1}
+\ctikzset{monopoles/ground/thickness/.initial=2}
+\ctikzset{monopoles/rground/thickness/.initial=2}
+\ctikzset{monopoles/tground/thickness/.initial=3}
+\ctikzset{monopoles/vcc/width/.initial=.2}
+\ctikzset{monopoles/vcc/arrow/.initial=legacy}
+\ctikzset{monopoles/vee/arrow/.initial=legacy}
+\ctikzset{monopoles/match/width/.initial=.4}
+\ctikzset{monopoles/chassis/width/.initial=.25}
+\ctikzset{monopoles/alternative chassis/width/.initial=.25}
+\ctikzset{monopoles/equipotentiality/width/.initial=.25}
+\ctikzset{monopoles/antenna/width/.initial=.25}
+\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/txantenna/width/.initial=.25}
+\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
+\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
+\ctikzset{monopoles/rxantenna/width/.initial=.25}
+\ctikzset{monopoles/bareantenna/width/.initial=.25}
+\ctikzset{monopoles/bareantenna/label/xanchor/.initial=1}
+\ctikzset{monopoles/bareantenna/label/yanchor/.initial=0.5}
+\ctikzset{monopoles/waves/width/.initial=0.5}%
+%>>>
+
+% microstrips %<<<1
+\ctikzset{bipoles/mstline/height/.initial=0.3}
+\ctikzset{bipoles/mstline/width/.initial=1.2}
+\pgfkeys{/tikz/mstlinelen/.add code={}{\ctikzset{bipoles/mstline/width=#1}}}
+\ctikzset{monopoles/msport/width/.initial=.5}
+\ctikzset{monopoles/msrstub/height/.initial=1.0}
+\ctikzset{monopoles/msrstub/width/.initial=0.6}%
+%>>>
+
+% microphone and loudspeaker%<<<1
+\ctikzset{bipoles/loudspeaker/height/.initial=.8}
+\ctikzset{bipoles/loudspeaker/depth/.initial=.3}
+\ctikzset{bipoles/loudspeaker/width/.initial=.8}
+\ctikzset{bipoles/mic/height/.initial=1.2}
+\ctikzset{bipoles/mic/depth/.initial=.1}
+\ctikzset{bipoles/mic/width/.initial=.8}%
+%>>>
+
+% resistors%<<<1
+% Zig Zag resistors
+\ctikzset{resistors/zigs/.initial=3}
+\ctikzset{resistors/width/.code={%
+ \ctikzset{bipoles/resistor/width=#1}%
+ \ctikzset{bipoles/vresistor/width=#1}%
+ \ctikzset{bipoles/potentiometer/width=#1}%
+ \ctikzset{bipoles/resistivesens/width=#1}%
+ \ctikzset{bipoles/photoresistor/width=#1}%
+ \ctikzset{bipoles/thermistor/width=#1}%
+ \ctikzset{bipoles/thermistorntc/width=#1}%
+ \ctikzset{bipoles/thermistorptc/width=#1}%
+ \ctikzset{bipoles/varistor/width=#1}%
+ \ctikzset{bipoles/generic/width=#1}%
+ \ctikzset{bipoles/generic potentiometer/width=#1}%
+ \ctikzset{bipoles/ageneric/width=#1}%
+ \ctikzset{bipoles/tgeneric/width=#1}%
+}}
+\ctikzset{wiper pos/.code={%
+ \ctikzset{bipoles/potentiometer/wiper pos=#1}%
+ \ctikzset{bipoles/generic potentiometer/wiper pos=#1}%
+}}
+% zigzag resistor
+\ctikzset{bipoles/resistor/height/.initial=.3}
+\ctikzset{bipoles/resistor/width/.initial=.8}
+\ctikzset{bipoles/potentiometer/height/.initial=.8}
+\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
+\ctikzset{bipoles/potentiometer/width/.initial=.8}
+\ctikzset{bipoles/potentiometer/wiper pos/.initial=.5}
+\ctikzset{bipoles/vresistor/height/.initial=.6}
+\ctikzset{bipoles/vresistor/width/.initial=.8}
+\ctikzset{bipoles/resistivesens/height/.initial=.6}
+\ctikzset{bipoles/resistivesens/width/.initial=.8}
+% square resistors
+\ctikzset{bipoles/photoresistor/height/.initial=.6}
+\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
+\ctikzset{bipoles/photoresistor/width/.initial=.8}
+\ctikzset{bipoles/thermistor/main/.initial=.7}
+\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/width/.initial=.8}
+\ctikzset{bipoles/thermistorntc/main/.initial=.7}
+\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistorptc/width/.initial=.8}
+\ctikzset{bipoles/thermistorptc/main/.initial=.7}
+\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
+\ctikzset{bipoles/thermistor/width/.initial=.8}
+\ctikzset{bipoles/varistor/main/.initial=.7}
+\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
+\ctikzset{bipoles/varistor/width/.initial=.8}
+\ctikzset{bipoles/generic/height/.initial=.30}
+\ctikzset{bipoles/generic/width/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
+\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
+\ctikzset{bipoles/generic potentiometer/wiper pos/.initial=.5}
+\ctikzset{bipoles/ageneric/height/.initial=.30}
+\ctikzset{bipoles/tgeneric/height/.initial=.70}
+\ctikzset{bipoles/tgeneric/width/.initial=.80}
+\ctikzset{bipoles/ageneric/width/.initial=.80}
+\ctikzset{bipoles/memristor/height/.initial=.30}
+\ctikzset{bipoles/memristor/wave height/.initial=.5}
+\ctikzset{bipoles/memristor/width/.initial=.80}
+
+\newif\ifpgf@circuit@europeanresistor
+\ctikzset{resistor/.is choice}
+\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
+\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
+\tikzset{american resistors/.style = {\circuitikzbasekey/resistor = american}}
+\tikzset{european resistors/.style = {\circuitikzbasekey/resistor = european}}
+%%>>>
+
+%% Capacitors%<<<1
+\ctikzset{bipoles/capacitor/height/.initial=.6}
+\ctikzset{bipoles/capacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/height/.initial=.5}
+\ctikzset{bipoles/ecapacitor/width/.initial=.2}
+\ctikzset{bipoles/ecapacitor/font/.initial=\pgf@circ@font@sixbm}
+%%% pcapacitor is deprecated
+\ctikzset{bipoles/pcapacitor/height/.initial=.6}
+\ctikzset{bipoles/pcapacitor/width/.initial=.2}
+\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
+\ctikzset{bipoles/ccapacitor/height/.initial=.6}
+\ctikzset{bipoles/ccapacitor/width/.initial=.12}
+\ctikzset{bipoles/ccapacitor/bend width/.initial=1.1}
+\ctikzset{bipoles/vcapacitor/height/.initial=.6}
+\ctikzset{bipoles/vcapacitor/width/.initial=.5}
+\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
+\ctikzset{bipoles/piezoelectric/height/.initial=.7}
+\ctikzset{bipoles/piezoelectric/width/.initial=.5}%
+%>>>
+
+% Inductors%<<<1
+\ctikzset{inductors/coils/.code={%
+ \ctikzset{bipoles/cuteinductor/coils=#1}%
+ \ctikzset{bipoles/cutechoke/coils=#1}%
+ \ctikzset{bipoles/americaninductor/coils=#1}%
+ \ctikzset{bipoles/vcuteinductor/coils=#1}%
+ \ctikzset{bipoles/vamericaninductor/coils=#1}%
+}}
+\ctikzset{inductors/width/.code={%
+ \ctikzset{bipoles/cuteinductor/width=#1}%
+ \ctikzset{bipoles/cutechoke/width=#1}%
+ \ctikzset{bipoles/americaninductor/width=#1}%
+ \ctikzset{bipoles/vcuteinductor/width=#1}%
+ \ctikzset{bipoles/vamericaninductor/width=#1}%
+ \ctikzset{bipoles/fullgeneric/width=#1}%
+ \ctikzset{bipoles/tfullgeneric/width=#1}%
+}}
+\ctikzset{bipoles/cuteinductor/height/.initial=.3}
+\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
+\ctikzset{bipoles/cuteinductor/width/.initial=.6}
+\ctikzset{bipoles/cuteinductor/coils/.initial=5}
+\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+%% Cute choke settings
+\ctikzset{bipoles/cutechoke/height/.initial=.3}
+\ctikzset{bipoles/cutechoke/lower coil height/.initial=.15}
+\ctikzset{bipoles/cutechoke/width/.initial=.6}
+\ctikzset{bipoles/cutechoke/coils/.initial=5}
+\ctikzset{bipoles/cutechoke/coil aspect/.initial=.5}%percentage of choke width, which is covered by lower coil
+\ctikzset{bipoles/cutechoke/cstep/.initial=.3}
+\ctikzset{bipoles/cutechoke/cdist/.initial=1.3}
+\ctikzset{bipoles/cutechoke/cthick/.initial=1}
+\newif\ifpgf@circuit@bipole@twolineschoke
+\pgf@circuit@bipole@twolineschokefalse
+\pgfkeys{/tikz/onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
+\ctikzset{onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
+\pgfkeys{/tikz/twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
+\ctikzset{twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
+%
+\ctikzset{bipoles/americaninductor/height/.initial=.3}
+\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
+\ctikzset{bipoles/americaninductor/width/.initial=.8}
+\ctikzset{bipoles/americaninductor/coils/.initial=4}
+\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
+\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
+\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
+\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
+\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
+\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
+\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
+\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
+\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
+\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
+\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
+\ctikzset{bipoles/fullgeneric/height/.initial=.30}
+\ctikzset{bipoles/fullgeneric/width/.initial=.80}
+\ctikzset{inductor/.is choice}
+\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
+\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
+\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
+
+\tikzset{american inductors/.style = {\circuitikzbasekey/inductor = american}}
+\tikzset{european inductors/.style = {\circuitikzbasekey/inductor = european}}
+\tikzset{cute inductors/.style = {\circuitikzbasekey/inductor = cute}}
+\tikzset{american ports/.style = {\circuitikzbasekey/logic ports = american}}
+\tikzset{european ports/.style = {\circuitikzbasekey/logic ports = european}}
+
+%%>>>
+
+% Sources%<<<1
+
+\ctikzset{bipoles/esource/height/.initial=.60}
+\ctikzset{bipoles/esource/width/.initial=.60}
+\ctikzset{bipoles/pvsource/height/.initial=.60}
+\ctikzset{bipoles/pvsource/width/.initial=.60}
+\ctikzset{bipoles/isource/height/.initial=.60}
+\ctikzset{bipoles/isource/width/.initial=.60}
+\ctikzset{bipoles/oosource/height/.initial=.60}
+\ctikzset{bipoles/oosource/width/.initial=.60}
+\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/dcisource/angle/.initial=80}
+\ctikzset{bipoles/dcisource/height/.initial=.60}
+\ctikzset{bipoles/dcisource/width/.initial=.60}
+\ctikzset{bipoles/dcvsource/height/.initial=.60}
+\ctikzset{bipoles/dcvsource/width/.initial=.60}
+\ctikzset{bipoles/vsourcetri/height/.initial=.60}
+\ctikzset{bipoles/vsourcetri/width/.initial=.60}
+\ctikzset{bipoles/isourceam/height/.initial=.60}
+\ctikzset{bipoles/isourceam/width/.initial=.60}
+\ctikzset{bipoles/vsource/height/.initial=.60}
+\ctikzset{bipoles/vsource/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/height/.initial=.60}
+\ctikzset{bipoles/vsourceam/width/.initial=.60}
+\ctikzset{bipoles/vsourceam/margin/.initial=.7}
+\ctikzset{bipoles/isourcesin/height/.initial=.60}
+\ctikzset{bipoles/isourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesin/height/.initial=.60}
+\ctikzset{bipoles/vsourcesin/width/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
+\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
+\ctikzset{bipoles/cisource/height/.initial=.7}
+\ctikzset{bipoles/cisource/width/.initial=.7}
+\ctikzset{bipoles/cisourceam/height/.initial=.7}
+\ctikzset{bipoles/cisourceam/width/.initial=.7}
+\ctikzset{bipoles/ecsource/height/.initial=.7}
+\ctikzset{bipoles/ecsource/width/.initial=.7}
+\ctikzset{bipoles/cvsource/height/.initial=.7}
+\ctikzset{bipoles/cvsource/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/height/.initial=.7}
+\ctikzset{bipoles/cvsourceam/width/.initial=.7}
+\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
+\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
+\ctikzset{bipoles/cisourcesin/width/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
+\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
+\ctikzset{bipoles/battery/height/.initial=.6}
+\ctikzset{bipoles/battery/width/.initial=.3}
+\ctikzset{bipoles/battery1/height/.initial=.6}
+\ctikzset{bipoles/battery1/width/.initial=.3}
+\ctikzset{bipoles/battery2/height/.initial=.6}
+\ctikzset{bipoles/battery2/width/.initial=.3}
+% noise sources
+\ctikzset{bipoles/noise sources/fillcolor/.initial=gray!50}
+
+%%>>>
+
+% "oo" style transformers and power grid diagrams%<<<1
+% % % ootransformer
+\ctikzset{bipoles/oosourcetrans/height/.initial=.6}
+\ctikzset{bipoles/oosourcetrans/width/.initial=.6}
+\ctikzset{bipoles/oosourcetrans/circlesize/.initial=.6}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/oosourcetrans/circleoffset/.initial=.4}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/oosourcetrans/vectorgroupscale/.initial=1}
+
+% % % oootransformer
+\ctikzset{bipoles/ooosource/height/.initial=.6}
+\ctikzset{bipoles/ooosource/circlesize/.initial=.55}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/ooosource/circleoffset/.initial=.45}%circlesize+circleoffset should be =1
+\ctikzset{bipoles/ooosource/vectorgroupscale/.initial=1}
+
+% % % primary windings
+\newif\ifpgf@circ@prim@delta
+\newif\ifpgf@circ@prim@wye
+\newif\ifpgf@circ@prim@zig
+\pgfkeys{tikz/prim/.is choice}
+\pgfkeys{tikz/prim/delta/.add code={}{\pgf@circ@prim@deltatrue}}
+\pgfkeys{tikz/prim/wye/.add code={}{\pgf@circ@prim@wyetrue}}
+\pgfkeys{tikz/prim/zig/.add code={}{\pgf@circ@prim@zigtrue}}
+
+% % % secondary windings
+\newif\ifpgf@circ@sec@delta
+\newif\ifpgf@circ@sec@wye
+\newif\ifpgf@circ@sec@zig
+\pgfkeys{tikz/sec/.is choice}
+\pgfkeys{tikz/sec/delta/.add code={}{\pgf@circ@sec@deltatrue}}
+\pgfkeys{tikz/sec/wye/.add code={}{\pgf@circ@sec@wyetrue}}
+\pgfkeys{tikz/sec/zig/.add code={}{\pgf@circ@sec@zigtrue}}
+
+% % % tertiary windings (ooosource)
+\newif\ifpgf@circ@tert@delta
+\newif\ifpgf@circ@tert@wye
+\newif\ifpgf@circ@tert@zig
+\pgfkeys{tikz/tert/.is choice}
+\pgfkeys{tikz/tert/delta/.add code={}{\pgf@circ@tert@deltatrue}}
+\pgfkeys{tikz/tert/wye/.add code={}{\pgf@circ@tert@wyetrue}}
+\pgfkeys{tikz/tert/zig/.add code={}{\pgf@circ@tert@zigtrue}}%
+%>>>
+
+% diodes%<<<1
+
+\ctikzset{bipoles/diode/height/.initial=.50}
+\ctikzset{bipoles/diode/width/.initial=.40}
+\ctikzset{bipoles/bidirectionaldiode/height/.initial=1.1}
+\ctikzset{bipoles/bidirectionaldiode/width/.initial=1}
+\ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
+\ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
+\ctikzset{bipoles/varcap/height/.initial=.50}
+\ctikzset{bipoles/varcap/width/.initial=.45}
+\ctikzset{tripoles/thyristor/height/.initial=1.10}
+\ctikzset{tripoles/thyristor/height 2/.initial=.5}
+\ctikzset{tripoles/thyristor/width/.initial=1.0}
+\ctikzset{tripoles/thyristor/diode height/.initial=.5}
+\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
+\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
+
+\ctikzset{tripoles/triac/height/.initial=1.1}
+\ctikzset{tripoles/triac/width/.initial=1}
+\ctikzset{tripoles/triac/diode width left/.initial=.3}
+\ctikzset{tripoles/triac/diode width right/.initial=.3}
+%
+% Flipping arrows in LED and photodiodes
+%
+\newif\ifpgf@led@fliparrows
+\newif\ifpgf@pd@fliparrows
+\pgf@led@fliparrowsfalse
+\pgf@pd@fliparrowsfalse
+%
+% by default the arrows start (LED) and go (PD) to the anode.
+%
+\ctikzset{led arrows from anode/.code=\pgf@led@fliparrowsfalse}
+\ctikzset{pd arrows to anode/.code=\pgf@pd@fliparrowsfalse}
+%
+% but they can start form the cathode (LED) or go to it (PD)
+%
+\ctikzset{led arrows from cathode/.code=\pgf@led@fliparrowstrue}
+\ctikzset{pd arrows to cathode/.code=\pgf@pd@fliparrowstrue}
+
+\newif\ifpgf@circuit@strokediode
+\newif\ifpgf@circuit@fulldiode
+\pgf@circuit@strokediodefalse
+\pgf@circuit@fulldiodefalse
+
+\ctikzset{diode/.is choice}
+\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
+\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
+\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
+
+\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full}}
+\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty}}
+\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke}}
+
+%%>>>
+
+% switches%<<<1
+
+\ctikzset{bipoles/spst/height/.initial=.35}
+\ctikzset{bipoles/spst/width/.initial=.35}
+\ctikzset{bipoles/spst/depth/.initial=.2}
+\ctikzset{bipoles/nos/height/.initial=.3}
+\ctikzset{bipoles/nos/width/.initial=.35}
+\ctikzset{bipoles/nos/depth/.initial=.2}
+\ctikzset{bipoles/ncs/height/.initial=.35}
+\ctikzset{bipoles/ncs/width/.initial=.35}
+\ctikzset{bipoles/ncs/depth/.initial=.2}
+\ctikzset{bipoles/pushbutton/height/.initial=.5}
+\ctikzset{bipoles/pushbutton/height 2/.initial=.2}
+\ctikzset{bipoles/pushbutton/width/.initial=.50}
+%%% reed switch
+\ctikzset{bipoles/reed/height/.initial=.4}
+\ctikzset{bipoles/reed/width/.initial=.8}% 0.35 in nos
+\ctikzset{bipoles/reed/depth/.initial=.4}
+%% Cute switches
+\ctikzset{bipoles/cuteswitch/shape/.initial={ocirc}}
+\ctikzset{bipoles/cuteswitch/height/.initial=.6}
+\ctikzset{bipoles/cuteswitch/height 2/.initial=.2}
+\ctikzset{bipoles/cuteswitch/width/.initial=.50}
+\ctikzset{bipoles/cuteswitch/thickness/.initial=1}
+
+\ctikzset{tripoles/spdt/width/.initial=.85}
+\ctikzset{tripoles/spdt/height/.initial=.45}
+\ctikzset{tripoles/spdt/margin/.initial=.45}
+
+\ctikzset{tripoles/toggleswitch/height/.initial=.8}
+\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
+\ctikzset{tripoles/toggleswitch/width/.initial=.80}
+%%>>>
+
+% arresters, fuses, lamps, etc%<<<1
+
+\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
+\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
+\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
+\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
+\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
+\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
+\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
+\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
+\ctikzset{bipoles/fuse/height/.initial=.20}
+\ctikzset{bipoles/fuse/width/.initial=.50}
+\ctikzset{bipoles/afuse/height/.initial=.20}
+\ctikzset{bipoles/afuse/width/.initial=.50}
+\ctikzset{bipoles/lamp/height/.initial=.60}
+\ctikzset{bipoles/lamp/width/.initial=.60}
+\ctikzset{bipoles/bulb/height/.initial=.8}
+\ctikzset{bipoles/bulb/width/.initial=.8}
+\ctikzset{bipoles/tline/height/.initial=.3}
+\ctikzset{bipoles/tline/width/.initial=.6}
+\ctikzset{bipoles/squid/height/.initial=.60}
+\ctikzset{bipoles/squid/width/.initial=.60}
+\ctikzset{bipoles/barrier/height/.initial=.60}
+\ctikzset{bipoles/barrier/width/.initial=.60}
+\ctikzset{bipoles/openbarrier/gap/.initial=0.5}
+\ctikzset{bipoles/thermocouple/height/.initial=.250}
+\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
+\ctikzset{bipoles/thermocouple/width/.initial=.140}
+\newif\ifpgf@circuit@europeangfsurgearrester
+\ctikzset{gas filled surge arrester choice/.is choice}
+\ctikzset{gas filled surge arrester choice/european/.code= {\pgf@circuit@europeangfsurgearrestertrue}}
+\ctikzset{gas filled surge arrester choice/american/.code= {\pgf@circuit@europeangfsurgearresterfalse}}
+
+\tikzset{american gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=american}}
+\tikzset{european gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=european}}
+%%>>>
+
+% wires (open, shorts, ...)%<<<1
+
+\ctikzset{bipoles/open/height/.initial=.3} %necessary for curly voltages
+\ctikzset{bipoles/open/width/.initial=.3} %necessary for curly voltages
+\ctikzset{bipoles/open/voltage/straight label distance/.initial=0}
+\ctikzset{bipoles/open/voltage/distance from node/.initial=.2}
+\ctikzset{bipoles/short/height/.initial=.1} %dummy height for voltage positioning
+\ctikzset{bipoles/short/width/.initial=.1} %dummy width for voltage positioning
+% multiwire
+\ctikzset{bipoles/multiwire/height/.initial=0.4}
+\ctikzset{bipoles/multiwire/width/.initial=0.2}
+\ctikzset{bipoles/multiwire/spacing/.initial=0.05}
+% crossing wires
+\ctikzset{bipoles/crossing/size/.initial=.2}
+%%>>>
+
+% Instruments %<<<1
+\ctikzset{bipoles/ammeter/height/.initial=.60}
+\ctikzset{bipoles/ammeter/width/.initial=.60}
+\ctikzset{bipoles/ohmmeter/height/.initial=.60}
+\ctikzset{bipoles/ohmmeter/width/.initial=.60}
+\ctikzset{bipoles/voltmeter/height/.initial=.60}
+\ctikzset{bipoles/voltmeter/width/.initial=.60}
+\ctikzset{bipoles/smeter/height/.initial=.60}
+\ctikzset{bipoles/smeter/width/.initial=.60}
+\ctikzset{bipoles/smeter/voltage/additional shift/.initial=1}
+\ctikzset{bipoles/qmeter/depth/.initial=.40}
+\ctikzset{bipoles/qmeter/height/.initial=.80}
+\ctikzset{bipoles/qmeter/width/.initial=.60}
+% this must be specified for each one
+\ctikzset{bipoles/qvprobe/voltage/additional shift/.initial=.5}
+\ctikzset{bipoles/qiprobe/voltage/additional shift/.initial=.5}
+\ctikzset{bipoles/qpprobe/voltage/additional shift/.initial=.5}
+\ctikzset{bipoles/iloop/width/.initial=.40}
+\ctikzset{bipoles/iloop/height/.initial=.60}
+
+\ctikzset{bipoles/oscope/height/.initial=.60}
+\ctikzset{bipoles/oscope/width/.initial=.60}
+\ctikzset{bipoles/oscope/voltage/additional shift/.initial=1}
+
+
+% option to not rotate the new (Romano's) instruments
+\newif\ifpgf@circuit@straightinstruments\pgf@circuit@straightinstrumentstrue
+\pgfkeys{/tikz/straight instruments/.add code={}{\pgf@circuit@straightinstrumentstrue}}
+\ctikzset{straight instruments/.add code={}{\pgf@circuit@straightinstrumentstrue}}
+\pgfkeys{/tikz/rotated instruments/.add code={}{\pgf@circuit@straightinstrumentsfalse}}
+\ctikzset{rotated instruments/.add code={}{\pgf@circuit@straightinstrumentsfalse}}
+%%>>>
+
+% blocks (twoports and so)%<<<1
+
+\ctikzset{bipoles/twoport/width/.initial=.7}
+\ctikzset{bipoles/twoport/height/.initial=.7}
+\ctikzset{bipoles/twoport/text/.initial=}
+\ctikzset{bipoles/twoportsplit/width/.initial=.7}
+\ctikzset{bipoles/twoport/text in/.initial=}
+\ctikzset{bipoles/twoport/text out/.initial=}
+\ctikzset{text/.style={t=#1}}
+\ctikzset{t/.code={%
+ \ctikzsetvalof{bipoles/twoport/text}{#1}%
+}}
+\ctikzset{text in/.style={t1=#1}}
+\ctikzset{t1/.code={%
+ \ctikzsetvalof{bipoles/twoport/text in}{#1}%
+}}
+\ctikzset{text out/.style={t2=#1}}
+\ctikzset{t2/.code={%
+ \ctikzsetvalof{bipoles/twoport/text out}{#1}%
+}}
+\ctikzset{bipoles/vco/width/.initial=.7}
+\ctikzset{bipoles/bandpass/width/.initial=.7}
+\ctikzset{bipoles/bandstop/width/.initial=.7}
+\ctikzset{bipoles/highpass/width/.initial=.7}
+\ctikzset{bipoles/lowpass/width/.initial=.7}
+\ctikzset{bipoles/allpass/width/.initial=.7}
+\ctikzset{bipoles/adc/width/.initial=.7}
+\ctikzset{bipoles/dac/width/.initial=.7}
+\ctikzset{bipoles/dsp/width/.initial=.7}
+\ctikzset{bipoles/fft/width/.initial=.7}
+\ctikzset{bipoles/amp/width/.initial=.7}
+\ctikzset{bipoles/vamp/width/.initial=.7}
+\ctikzset{bipoles/piattenuator/width/.initial=.7}
+\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
+\ctikzset{bipoles/tattenuator/width/.initial=.7}
+\ctikzset{bipoles/vtattenuator/width/.initial=.7}
+\ctikzset{bipoles/phaseshifter/width/.initial=.7}
+\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
+\ctikzset{bipoles/detector/width/.initial=.7}
+\ctikzset{tripoles/mixer/width/.initial=0.7}
+\ctikzset{tripoles/adder/width/.initial=0.7}
+\ctikzset{tripoles/circulator/width/.initial=.7}
+\ctikzset{tripoles/oscillator/width/.initial=.7}
+
+\ctikzset{tripoles/wilkinson/height/.initial=1.3}
+\ctikzset{tripoles/wilkinson/width/.initial=1.3}
+
+\ctikzset{tripoles/splitter/height/.initial=1.3}
+\ctikzset{tripoles/splitter/width/.initial=1.3}
+
+\ctikzset{tripoles/mzm/height/.initial=1.3}
+\ctikzset{tripoles/mzm/width/.initial=1.3}
+%%>>>
+
+% Transistors %<<<1
+
+\newif\ifpgf@circuit@trans@depletiontype
+\pgf@circuit@trans@depletiontypefalse
+
+\newif\ifpgf@circuit@mos@arrows
+\ctikzset{tripoles/mos style/.is choice}
+\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
+\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
+\pgfkeys{/tikz/arrowmos/.add code={}{\pgf@circuit@mos@arrowstrue}}
+\pgfkeys{/tikz/noarrowmos/.add code={}{\pgf@circuit@mos@arrowsfalse}}
+
+% Fixed label positions
+\newif\ifpgf@circuit@transisors@fixlabels
+\pgf@circuit@transisors@fixlabelstrue
+\pgfkeys{/tikz/center transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
+\ctikzset{fix transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
+\pgfkeys{/tikz/legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
+\ctikzset{legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
+
+% Option solderdot for fet
+\newif\ifpgf@circuit@fet@solderdot
+\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
+\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
+
+% Option bodydiode for fet
+\newif\ifpgf@circuit@fet@bodydiode
+\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
+\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
+
+% Option draw fet without gate connection
+\newif\ifpgf@circuit@bpt@drawgate
+\pgf@circuit@bpt@drawgatetrue
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
+
+% Option draw bpt with schottky base
+\newif\ifpgf@circuit@bpt@schottky
+\pgf@circuit@bpt@schottkyfalse
+\pgfkeys{/tikz/schottky base/.add code={}{\pgf@circuit@bpt@schottkytrue}}
+\ctikzset{schottky base/.add code={}{\pgf@circuit@bpt@schottkytrue}}
+\pgfkeys{/tikz/no schottky base/.add code={}{\pgf@circuit@bpt@schottkyfalse}}
+\ctikzset{no schottky base/.add code={}{\pgf@circuit@bpt@schottkyfalse}}
+\ctikzset{tripoles/schottky base size/.initial=0.05}
+
+% Option draw bpt without base connection
+\newif\ifpgf@circuit@bpt@drawbase
+\pgf@circuit@bpt@drawbasetrue
+\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
+
+% Option draw bpt with optical input
+\newif\ifpgf@circuit@bpt@drawphoto
+\pgf@circuit@bpt@drawphotofalse
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
+
+% Option draw fet without bulk connection -- Added by Burak Kelleci
+\newif\ifpgf@circuit@bpt@drawbulk
+\pgfkeys{/tikz/bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
+\ctikzset{bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
+\pgfkeys{/tikz/nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
+\ctikzset{nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
+
+% Option draw pmos with empty circle
+\newif\ifpgf@circuit@pmos@emptycircle
+\pgf@circuit@pmos@emptycirclefalse
+\ctikzset{tripoles/pmos style/.is choice}
+\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
+% Option draw pmos with no circle
+\newif\ifpgf@circuit@pmos@nocircle
+\pgf@circuit@pmos@nocirclefalse
+\pgfkeys{/tikz/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
+\ctikzset{tripoles/pmos style/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
+% back to normal
+\pgfkeys{/tikz/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
+\ctikzset{tripoles/pmos style/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
+% arrows at the end, the correct way
+\newif\ifpgf@circuit@trans@arrowatend
+\pgf@circuit@trans@arrowatendfalse
+\ctikzset{transistors/arrow pos/.is choice}
+\ctikzset{transistors/arrow pos/legacy/.code={\pgf@circuit@trans@arrowatendfalse}}
+\ctikzset{transistors/arrow pos/end/.code={\pgf@circuit@trans@arrowatendtrue}}
+
+\newif\ifpgf@circuit@trans@ntype
+\pgf@circuit@trans@ntypetrue %default true
+%\newif\ifpgf@circuit@trans@ptype
+%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
+\ctikzset{tripoles/nmos/width/.initial=.7}
+\ctikzset{tripoles/nmos/gate height/.initial=.35}
+\ctikzset{tripoles/nmos/base height/.initial=.5}
+\ctikzset{tripoles/nmos/conn height/.initial=0}
+\ctikzset{tripoles/nmos/height/.initial=1.1}
+\ctikzset{tripoles/nmos/base width/.initial=.5}
+\ctikzset{tripoles/nmos/gate width/.initial=.62}
+\ctikzset{tripoles/nmos/arrow pos/.initial=.6}
+\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nmos/curr direction/.initial=1}
+
+\ctikzset{tripoles/pmos/width/.initial=.7}
+\ctikzset{tripoles/pmos/gate height/.initial=.35}
+\ctikzset{tripoles/pmos/base height/.initial=.5}
+\ctikzset{tripoles/pmos/conn height/.initial=0}
+\ctikzset{tripoles/pmos/height/.initial=1.1}
+\ctikzset{tripoles/pmos/base width/.initial=.5}
+\ctikzset{tripoles/pmos/gate width/.initial=.62}
+\ctikzset{tripoles/pmos/arrow pos/.initial=.4}
+\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pmos/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nmosd/width/.initial=.7}
+\ctikzset{tripoles/nmosd/gate height/.initial=.35}
+\ctikzset{tripoles/nmosd/base height/.initial=.5}
+\ctikzset{tripoles/nmosd/conn height/.initial=0}
+\ctikzset{tripoles/nmosd/height/.initial=1.1}
+\ctikzset{tripoles/nmosd/base width/.initial=.5}
+\ctikzset{tripoles/nmosd/gate width/.initial=.62}
+\ctikzset{tripoles/nmosd/arrow pos/.initial=.6}
+\ctikzset{tripoles/nmosd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nmosd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nmosd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nmosd/curr direction/.initial=1}
+\ctikzset{tripoles/nmosd/depletion width/.initial=.1}
+\ctikzset{tripoles/nmosd/depletion color/.initial=default}
+
+\ctikzset{tripoles/pmosd/width/.initial=.7}
+\ctikzset{tripoles/pmosd/gate height/.initial=.35}
+\ctikzset{tripoles/pmosd/base height/.initial=.5}
+\ctikzset{tripoles/pmosd/conn height/.initial=0}
+\ctikzset{tripoles/pmosd/height/.initial=1.1}
+\ctikzset{tripoles/pmosd/base width/.initial=.5}
+\ctikzset{tripoles/pmosd/gate width/.initial=.62}
+\ctikzset{tripoles/pmosd/arrow pos/.initial=.4}
+\ctikzset{tripoles/pmosd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pmosd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pmosd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pmosd/curr direction/.initial=-1}
+\ctikzset{tripoles/pmosd/depletion width/.initial=.1}
+\ctikzset{tripoles/pmosd/depletion color/.initial=default}
+\ctikzset{tripoles/hemt/width/.initial=.7}
+\ctikzset{tripoles/hemt/gate height/.initial=.35}
+\ctikzset{tripoles/hemt/base height/.initial=.5}
+\ctikzset{tripoles/hemt/conn height/.initial=0}
+\ctikzset{tripoles/hemt/height/.initial=1.1}
+\ctikzset{tripoles/hemt/base width/.initial=.5}
+\ctikzset{tripoles/hemt/gate width/.initial=.62}
+\ctikzset{tripoles/hemt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/hemt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/hemt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/hemt/curr direction/.initial=1}
+
+\ctikzset{tripoles/nfet/width/.initial=.7}
+\ctikzset{tripoles/nfet/gate height/.initial=.35}
+\ctikzset{tripoles/nfet/base height/.initial=.5}
+\ctikzset{tripoles/nfet/conn height/.initial=0}
+\ctikzset{tripoles/nfet/height/.initial=1.1}
+\ctikzset{tripoles/nfet/base width/.initial=.5}
+\ctikzset{tripoles/nfet/gate width/.initial=.62}
+\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pfet/width/.initial=.7}
+\ctikzset{tripoles/pfet/gate height/.initial=.35}
+\ctikzset{tripoles/pfet/base height/.initial=.5}
+\ctikzset{tripoles/pfet/conn height/.initial=0}
+\ctikzset{tripoles/pfet/height/.initial=1.1}
+\ctikzset{tripoles/pfet/base width/.initial=.5}
+\ctikzset{tripoles/pfet/gate width/.initial=.62}
+\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nfetd/width/.initial=.7}
+\ctikzset{tripoles/nfetd/gate height/.initial=.35}
+\ctikzset{tripoles/nfetd/base height/.initial=.5}
+\ctikzset{tripoles/nfetd/conn height/.initial=0}
+\ctikzset{tripoles/nfetd/height/.initial=1.1}
+\ctikzset{tripoles/nfetd/base width/.initial=.5}
+\ctikzset{tripoles/nfetd/gate width/.initial=.62}
+\ctikzset{tripoles/nfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nfetd/curr direction/.initial=1}
+
+\ctikzset{tripoles/pfetd/width/.initial=.7}
+\ctikzset{tripoles/pfetd/gate height/.initial=.35}
+\ctikzset{tripoles/pfetd/base height/.initial=.5}
+\ctikzset{tripoles/pfetd/conn height/.initial=0}
+\ctikzset{tripoles/pfetd/height/.initial=1.1}
+\ctikzset{tripoles/pfetd/base width/.initial=.5}
+\ctikzset{tripoles/pfetd/gate width/.initial=.62}
+\ctikzset{tripoles/pfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pfetd/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigfete/width/.initial=.7}
+\ctikzset{tripoles/nigfete/gate height/.initial=.35}
+\ctikzset{tripoles/nigfete/base height/.initial=.5}
+\ctikzset{tripoles/nigfete/conn height/.initial=.35}
+\ctikzset{tripoles/nigfete/height/.initial=1.1}
+\ctikzset{tripoles/nigfete/base width/.initial=.5}
+\ctikzset{tripoles/nigfete/gate width/.initial=.62}
+\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfete/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetd/width/.initial=.7}
+\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetd/base height/.initial=.5}
+\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetd/height/.initial=1.1}
+\ctikzset{tripoles/nigfetd/base width/.initial=.5}
+\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
+
+\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
+
+\ctikzset{tripoles/pigfete/width/.initial=.7}
+\ctikzset{tripoles/pigfete/gate height/.initial=.35}
+\ctikzset{tripoles/pigfete/base height/.initial=.5}
+\ctikzset{tripoles/pigfete/conn height/.initial=.35}
+\ctikzset{tripoles/pigfete/height/.initial=1.1}
+\ctikzset{tripoles/pigfete/base width/.initial=.5}
+\ctikzset{tripoles/pigfete/gate width/.initial=.62}
+\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetd/width/.initial=.7}
+\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetd/base height/.initial=.5}
+\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetd/height/.initial=1.1}
+\ctikzset{tripoles/pigfetd/base width/.initial=.5}
+\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
+\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
+\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
+\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
+\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
+\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
+
+\ctikzset{tripoles/npn/width/.initial=.6}
+\ctikzset{tripoles/npn/base height/.initial=.45}
+\ctikzset{tripoles/npn/base height 2/.initial=.15}
+\ctikzset{tripoles/npn/base height/.initial=.4}
+\ctikzset{tripoles/npn/conn height/.initial=0}
+\ctikzset{tripoles/npn/height/.initial=1.1}
+\ctikzset{tripoles/npn/base width/.initial=.5}
+\ctikzset{tripoles/npn/arrow pos/.initial=.5}
+\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/npn/curr direction/.initial=1}
+
+\ctikzset{tripoles/pnp/width/.initial=.6}
+\ctikzset{tripoles/pnp/base height/.initial=.45}
+\ctikzset{tripoles/pnp/base height 2/.initial=.15}
+\ctikzset{tripoles/pnp/base height/.initial=.4}
+\ctikzset{tripoles/pnp/conn height/.initial=0}
+\ctikzset{tripoles/pnp/height/.initial=1.1}
+\ctikzset{tripoles/pnp/base width/.initial=.5}
+\ctikzset{tripoles/pnp/arrow pos/.initial=.5}
+\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pnp/curr direction/.initial=-1}
+
+\ctikzset{tripoles/pigbt/width/.initial=.6}
+\ctikzset{tripoles/pigbt/gate height/.initial=.45}
+\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/pigbt/base height/.initial=.4}
+\ctikzset{tripoles/pigbt/outer base height/.initial=.4}
+\ctikzset{tripoles/pigbt/outer base thickness/.initial=1}
+\ctikzset{tripoles/pigbt/conn height/.initial=0}
+\ctikzset{tripoles/pigbt/height/.initial=1.1}
+\ctikzset{tripoles/pigbt/gate width/.initial=.62}
+\ctikzset{tripoles/pigbt/base width/.initial=.5}
+\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/nigbt/width/.initial=.6}
+\ctikzset{tripoles/nigbt/gate height/.initial=.45}
+\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/nigbt/base height/.initial=.4}
+\ctikzset{tripoles/nigbt/outer base height/.initial=.4}
+\ctikzset{tripoles/nigbt/outer base thickness/.initial=1}
+\ctikzset{tripoles/nigbt/conn height/.initial=0}
+\ctikzset{tripoles/nigbt/height/.initial=1.1}
+\ctikzset{tripoles/nigbt/gate width/.initial=.62}
+\ctikzset{tripoles/nigbt/base width/.initial=.5}
+\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/nigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/Lpigbt/width/.initial=.6}
+\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/outer base height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/outer base thickness/.initial=1}
+\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
+
+\ctikzset{tripoles/Lnigbt/width/.initial=.6}
+\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
+\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
+\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/outer base height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/outer base thickness/.initial=1}
+\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
+\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
+\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
+\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
+\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
+
+\ctikzset{tripoles/igbt/outer base height/.code={
+ \ctikzset{tripoles/nigbt/outer base height/.initial=#1}
+ \ctikzset{tripoles/pigbt/outer base height/.initial=#1}
+ \ctikzset{tripoles/Lnigbt/outer base height/.initial=#1}
+ \ctikzset{tripoles/Lpigbt/outer base height/.initial=#1}
+ \ctikzset{tripoles/Lnigbt/conn height/.initial=#1}
+ \ctikzset{tripoles/Lpigbt/conn height/.initial=#1}
+}}
+\ctikzset{tripoles/igbt/outer base thickness/.code={
+ \ctikzset{tripoles/nigbt/outer base thickness=#1}
+ \ctikzset{tripoles/pigbt/outer base thickness=#1}
+ \ctikzset{tripoles/Lnigbt/outer base thickness=#1}
+ \ctikzset{tripoles/Lpigbt/outer base thickness=#1}
+}}
+
+\ctikzset{tripoles/njfet/width/.initial=.7}
+\ctikzset{tripoles/njfet/gate height/.initial=.5}
+\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/njfet/gate width/.initial=.5}
+\ctikzset{tripoles/njfet/conn height/.initial=.35}
+\ctikzset{tripoles/njfet/height/.initial=1.1}
+\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/njfet/curr direction/.initial=1}
+
+\ctikzset{tripoles/pjfet/width/.initial=.7}
+\ctikzset{tripoles/pjfet/gate height/.initial=.5}
+\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
+\ctikzset{tripoles/pjfet/gate width/.initial=.5}
+\ctikzset{tripoles/pjfet/conn height/.initial=.35}
+\ctikzset{tripoles/pjfet/height/.initial=1.1}
+\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
+
+\ctikzset{tripoles/isfet/width/.initial=1}
+\ctikzset{tripoles/isfet/gate height/.initial=.35}
+\ctikzset{tripoles/isfet/base height/.initial=.5}
+\ctikzset{tripoles/isfet/height/.initial=1.1}
+\ctikzset{tripoles/isfet/base width/.initial=.3}
+\ctikzset{tripoles/isfet/gate width/.initial=.5}
+\ctikzset{tripoles/isfet/conn height/.initial=0}
+\ctikzset{tripoles/isfet/wave width/.initial=.16}
+\ctikzset{tripoles/isfet/wave amp/.initial=.06}
+\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
+\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
+\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
+\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
+\ctikzset{tripoles/isfet/curr direction/.initial=1}
+%
+% multi-emitter and multi-collector BJTs by Romano Giannetti
+%
+\ctikzset{tripoles/bjt/emitters/.initial=1}
+\ctikzset{tripoles/bjt/collectors/.initial=1}
+\pgfkeys{/tikz/emitters/.add code={}{\ctikzset{tripoles/bjt/emitters=#1}}}
+\pgfkeys{/tikz/collectors/.add code={}{\ctikzset{tripoles/bjt/collectors=#1}}}
+\ctikzset{tripoles/bjt/pins width/.initial=0.3}
+\pgfkeys{/tikz/bjt pins width/.add code={}{\ctikzset{tripoles/bjt/pins width=#1}}}
+\ctikzset{tripoles/bjt/multi height/.initial=.5}
+\pgfkeys{/tikz/bjt multi height/.add code={}{\ctikzset{tripoles/bjt/multi height/.initial=#1}}}
+%
+\ctikzset{tripoles/bjt/width/.initial=.3}
+\ctikzset{tripoles/bjt/base height 2/.initial=.4}
+\ctikzset{tripoles/bjt/base height/.initial=1.1}
+\ctikzset{tripoles/bjt/height/.initial=.4}
+\ctikzset{tripoles/bjt/base width/.initial=1}
+\ctikzset{tripoles/bjt/arrow pos/.initial=.5}
+% do NOT touch these two!
+\ctikzset{tripoles/bjt/npn/curr direction/.initial=1}
+\ctikzset{tripoles/bjt/pnp/curr direction/.initial=-1}
+
+%% transistors stop here
+%%>>>
+
+% Electronic tubes: diodetube, triode, tetrode and pentode%<<<1
+\ctikzset{tubes/width/.initial=1} % relative width
+\ctikzset{tubes/height/.initial=1.4} % relative height
+\ctikzset{tubes/tube radius/.initial=0.40} % radius of tube circle
+\ctikzset{tubes/anode distance/.initial=0.40} % distance from center
+\ctikzset{tubes/anode width/.initial=0.40} % width of an anode/plate
+\ctikzset{tubes/grid protrusion/.initial=0.25} % distance from center
+\ctikzset{tubes/grid dashes/.initial=5} % number of grid dashes
+\ctikzset{tubes/grid separation/.initial=0.2} % separation between grids
+\ctikzset{tubes/grid shift/.initial=0.0} % y shift grids from center
+\ctikzset{tubes/cathode distance/.initial=0.40} % distance from grid
+\ctikzset{tubes/cathode width/.initial=0.40} % width of an cathode
+\ctikzset{tubes/cathode corners/.initial=0.06} % corners of the cathode wire
+\ctikzset{tubes/cathode right extend/.initial=0.075} % extension at the right side
+\ctikzset{tubes/filament distance/.initial=0.1} % distance from cathode
+\ctikzset{tubes/filament angle/.initial=15} % Angle from centerpoint
+
+\newif\ifpgf@circuit@tubes@filament\pgf@circuit@tubes@filamentfalse
+\pgfkeys{/tikz/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
+\ctikzset{tubes/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
+\newif\ifpgf@circuit@tubes@nocathode\pgf@circuit@tubes@nocathodefalse
+\pgfkeys{/tikz/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
+\ctikzset{tubes/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
+\newif\ifpgf@circuit@tubes@fullcathode\pgf@circuit@tubes@fullcathodefalse
+\pgfkeys{/tikz/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
+\ctikzset{tubes/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}%
+%>>>
+
+%% Logic ports%<<<1
+%% beware that the third option is in IEEE ports in pgfcircmultipoles.tex
+
+% switches for logic gates
+%
+\pgfkeys{/tikz/number inputs/.initial=0}
+\pgfkeys{/tikz/number inputs/.default=0}
+
+\newif\ifpgf@circuit@europeanlogicport
+\ctikzset{logic ports/.is choice}
+\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue
+ \tikzset{and port/.style={shape=european and port}}%
+ \tikzset{or port/.style={shape=european or port}}%
+ \tikzset{xor port/.style={shape=european xor port}}%
+ \tikzset{buffer port/.style={shape=european buffer port}}%
+ \tikzset{not port/.style={shape=european not port}}%
+ \tikzset{nand port/.style={shape=european nand port}}%
+ \tikzset{nor port/.style={shape=european nor port}}%
+ \tikzset{xnor port/.style={shape=european xnor port}}%
+ % there is no Schmitt ports in european style (yet)
+ \tikzset{schmitt port/.style={shape=schmitt}}%
+ \tikzset{invschmitt port/.style={shape=invschmitt}}%
+}}
+\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse
+ \tikzset{and port/.style={shape=american and port}}%
+ \tikzset{or port/.style={shape=american or port}}%
+ \tikzset{xor port/.style={shape=american xor port}}%
+ \tikzset{buffer port/.style={shape=american buffer port}}%
+ \tikzset{not port/.style={shape=american not port}}%
+ \tikzset{nand port/.style={shape=american nand port}}%
+ \tikzset{nor port/.style={shape=american nor port}}%
+ \tikzset{xnor port/.style={shape=american xnor port}}%
+ \tikzset{schmitt port/.style={shape=schmitt}}%
+ \tikzset{invschmitt port/.style={shape=invschmitt}}%
+}}
+
+\ctikzset{logic ports origin/.is choice}
+\ctikzset{logic ports origin/legacy/.code={
+ \ctikzset{tripoles/american and port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american nand port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american nor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american or port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american xor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/american xnor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european and port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european nand port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european or port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european nor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european xor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european xnor port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european buffer port/origin/.initial=0.8}%
+ \ctikzset{tripoles/european not port/origin/.initial=0.8}%
+ }%
+}
+\ctikzset{logic ports origin/center/.code={%
+ \ctikzset{tripoles/american and port/origin/.initial=0}%
+ \ctikzset{tripoles/american nand port/origin/.initial=0}%
+ \ctikzset{tripoles/american nor port/origin/.initial=0}%
+ \ctikzset{tripoles/american or port/origin/.initial=0}%
+ \ctikzset{tripoles/american xor port/origin/.initial=0}%
+ \ctikzset{tripoles/american xnor port/origin/.initial=0}%
+ \ctikzset{tripoles/european and port/origin/.initial=0}%
+ \ctikzset{tripoles/european nand port/origin/.initial=0}%
+ \ctikzset{tripoles/european or port/origin/.initial=0}%
+ \ctikzset{tripoles/european nor port/origin/.initial=0}%
+ \ctikzset{tripoles/european xor port/origin/.initial=0}%
+ \ctikzset{tripoles/european xnor port/origin/.initial=0}%
+ \ctikzset{tripoles/european buffer port/origin/.initial=0}%
+ \ctikzset{tripoles/european not port/origin/.initial=0}%
+ }%
+}
+
+\newif\ifpgfcirc@roundy@or@shapes\pgfcirc@roundy@or@shapesfalse
+\ctikzset{american or shape/.is choice}
+\ctikzset{american or shape/roundy/.code={\pgfcirc@roundy@or@shapestrue}}
+\ctikzset{american or shape/pointy/.code={\pgfcirc@roundy@or@shapesfalse}}
+
+\newif\ifpgfcirc@draw@input@leads\pgfcirc@draw@input@leadstrue
+\ctikzset{logic ports draw input leads/.is choice}
+\ctikzset{logic ports draw input leads/true/.code={\pgfcirc@draw@input@leadstrue}}
+\ctikzset{logic ports draw input leads/false/.code={\pgfcirc@draw@input@leadsfalse}}
+\tikzset{input leads/.code={\pgfcirc@draw@input@leadstrue}}
+\tikzset{no input leads/.code={\pgfcirc@draw@input@leadsfalse}}
+
+\newif\ifpgfcirc@draw@output@leads\pgfcirc@draw@output@leadstrue
+\ctikzset{logic ports draw output leads/.is choice}
+\ctikzset{logic ports draw output leads/true/.code={\pgfcirc@draw@output@leadstrue}}
+\ctikzset{logic ports draw output leads/false/.code={\pgfcirc@draw@output@leadsfalse}}
+\tikzset{output leads/.code={\pgfcirc@draw@output@leadstrue}}
+\tikzset{no output leads/.code={\pgfcirc@draw@output@leadsfalse}}
+
+\ctikzset{logic ports draw leads/.is choice}
+\ctikzset{logic ports draw leads/true/.code={\pgfcirc@draw@output@leadstrue\pgfcirc@draw@input@leadstrue}}
+\ctikzset{logic ports draw leads/false/.code={\pgfcirc@draw@output@leadsfalse\pgfcirc@draw@input@leadsfalse}}
+\tikzset{all leads/.code={\pgfcirc@draw@output@leadstrue\pgfcirc@draw@input@leadstrue}}
+\tikzset{no leads/.code={\pgfcirc@draw@output@leadsfalse\pgfcirc@draw@input@leadsfalse}}
+
+% adding a different style of xnor port
+% see https://github.com/circuitikz/circuitikz/issues/467
+\ctikzset{european xnor style/.is choice}
+\ctikzset{european xnor style/default/.code={%
+ \pgfcircdeclareeurologicport{xnor}{$=1$}{\pgf@circ@res@count}{not}}%
+}
+\ctikzset{european xnor style/direct/.code={%
+ \pgfcircdeclareeurologicport{xnor}{$=$}{\pgf@circ@res@count}{}}%
+}
+
+
+% old, legacy keys that should be killed over
+\ctikzset{bipoles/buffer/height/.initial=1}
+\ctikzset{bipoles/buffer/width/.initial=1}
+\ctikzset{bipoles/not port/width/.initial=1}
+\ctikzset{bipoles/not port/height/.initial=.8}
+\ctikzset{bipoles/not port/circle width/.initial=.15}
+
+\ctikzset{tripoles/american and port/width/.initial=1.1}
+\ctikzset{tripoles/american and port/height/.initial=.8}
+\ctikzset{tripoles/american and port/port width/.initial=.7}
+\ctikzset{tripoles/american and port/input height/.initial=.5}
+\ctikzset{tripoles/american nand port/width/.initial=1.1}
+\ctikzset{tripoles/american nand port/height/.initial=.8}
+\ctikzset{tripoles/american nand port/port width/.initial=.7}
+\ctikzset{tripoles/american nand port/circle width/.initial=.15}
+\ctikzset{tripoles/american nand port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/width/.initial=1.1}
+\ctikzset{tripoles/american or port/height/.initial=.8}
+\ctikzset{tripoles/american or port/port width/.initial=.7}
+\ctikzset{tripoles/american or port/input height/.initial=.5}
+\ctikzset{tripoles/american or port/input skip/.initial=.25}
+\ctikzset{tripoles/american or port/aaa/.initial=.6}
+\ctikzset{tripoles/american or port/bbb/.initial=.4}
+\ctikzset{tripoles/american or port/ccc/.initial=.5}
+\ctikzset{tripoles/american or port/ddd/.initial=.0}
+\ctikzset{tripoles/american nor port/width/.initial=1.1}
+\ctikzset{tripoles/american nor port/height/.initial=.8}
+\ctikzset{tripoles/american nor port/port width/.initial=.7}
+\ctikzset{tripoles/american nor port/input height/.initial=.5}
+\ctikzset{tripoles/american nor port/input skip/.initial=.25}
+\ctikzset{tripoles/american nor port/circle width/.initial=.15}
+\ctikzset{tripoles/american nor port/aaa/.initial=.6}
+\ctikzset{tripoles/american nor port/bbb/.initial=.4}
+\ctikzset{tripoles/american nor port/ccc/.initial=.5}
+\ctikzset{tripoles/american nor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xor port/width/.initial=1.1}
+\ctikzset{tripoles/american xor port/height/.initial=.8}
+\ctikzset{tripoles/american xor port/port width/.initial=.7}
+\ctikzset{tripoles/american xor port/input height/.initial=.5}
+\ctikzset{tripoles/american xor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xor port/distance/.initial=.1}
+\ctikzset{tripoles/american xnor port/width/.initial=1.1}
+\ctikzset{tripoles/american xnor port/height/.initial=.8}
+\ctikzset{tripoles/american xnor port/port width/.initial=.7}
+\ctikzset{tripoles/american xnor port/input height/.initial=.5}
+\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
+\ctikzset{tripoles/american xnor port/distance/.initial=.1}
+\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
+\ctikzset{tripoles/american and port/origin/.initial=0.8}
+\ctikzset{tripoles/american and port/inputs/.initial=2}
+% variable number of inputs
+\ctikzset{tripoles/american nand port/origin/.initial=0.8}
+\ctikzset{tripoles/american nand port/inputs/.initial=2}
+\ctikzset{tripoles/american nor port/origin/.initial=0.8}
+\ctikzset{tripoles/american nor port/inputs/.initial=2}
+\ctikzset{tripoles/american nor port/angle/.initial=70}
+\ctikzset{tripoles/american nor port/inner/.initial=0.3}
+\ctikzset{tripoles/american or port/origin/.initial=0.8}
+\ctikzset{tripoles/american or port/inputs/.initial=2}
+\ctikzset{tripoles/american or port/angle/.initial=70}
+\ctikzset{tripoles/american or port/inner/.initial=0.3}
+\ctikzset{tripoles/american xor port/origin/.initial=0.8}
+\ctikzset{tripoles/american xor port/inputs/.initial=2}
+\ctikzset{tripoles/american xor port/angle/.initial=70}
+\ctikzset{tripoles/american xor port/inner/.initial=0.3}
+\ctikzset{tripoles/american xnor port/origin/.initial=0.8}
+\ctikzset{tripoles/american xnor port/inputs/.initial=2}
+\ctikzset{tripoles/american xnor port/angle/.initial=70}
+\ctikzset{tripoles/american xnor port/inner/.initial=0.3}
+
+\ctikzset{tripoles/european and port/width/.initial=1.4}
+\ctikzset{tripoles/european and port/height/.initial=.65}
+\ctikzset{tripoles/european and port/reserved/.initial=.6}
+\ctikzset{tripoles/european and port/input height/.initial=.6}
+\ctikzset{tripoles/european or port/width/.initial=1.4}
+\ctikzset{tripoles/european or port/height/.initial=.65}
+\ctikzset{tripoles/european or port/reserved/.initial=.6}
+\ctikzset{tripoles/european or port/input height/.initial=.6}
+\ctikzset{tripoles/european xor port/width/.initial=1.4}
+\ctikzset{tripoles/european xor port/height/.initial=.65}
+\ctikzset{tripoles/european xor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xor port/input height/.initial=.6}
+\ctikzset{tripoles/european nand port/width/.initial=1.4}
+\ctikzset{tripoles/european nand port/not height/.initial=.3}
+\ctikzset{tripoles/european nand port/not width/.initial=.8}
+\ctikzset{tripoles/european nand port/height/.initial=.65}
+\ctikzset{tripoles/european nand port/reserved/.initial=.6}
+\ctikzset{tripoles/european nand port/input height/.initial=.6}
+\ctikzset{tripoles/european buffer port/width/.initial=1.4}
+\ctikzset{tripoles/european buffer port/not height/.initial=.3}
+\ctikzset{tripoles/european buffer port/not width/.initial=.8}
+\ctikzset{tripoles/european buffer port/height/.initial=.65}
+\ctikzset{tripoles/european buffer port/reserved/.initial=.6}
+\ctikzset{tripoles/european buffer port/input height/.initial=0}
+\ctikzset{tripoles/european not port/width/.initial=1.4}
+\ctikzset{tripoles/european not port/not height/.initial=.3}
+\ctikzset{tripoles/european not port/not width/.initial=.8}
+\ctikzset{tripoles/european not port/height/.initial=.65}
+\ctikzset{tripoles/european not port/reserved/.initial=.6}
+\ctikzset{tripoles/european not port/input height/.initial=0}
+\ctikzset{tripoles/european xnor port/width/.initial=1.4}
+\ctikzset{tripoles/european xnor port/not height/.initial=.3}
+\ctikzset{tripoles/european xnor port/not width/.initial=.8}
+\ctikzset{tripoles/european xnor port/height/.initial=.65}
+\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
+\ctikzset{tripoles/european xnor port/input height/.initial=.6}
+\ctikzset{tripoles/european nor port/width/.initial=1.4}
+\ctikzset{tripoles/european nor port/not height/.initial=.3}
+\ctikzset{tripoles/european nor port/not width/.initial=.8}
+\ctikzset{tripoles/european nor port/height/.initial=.65}
+\ctikzset{tripoles/european nor port/reserved/.initial=.6}
+\ctikzset{tripoles/european nor port/input height/.initial=.6}
+% variable number of inputs
+\ctikzset{tripoles/european and port/origin/.initial=0.8}
+\ctikzset{tripoles/european and port/inputs/.initial=2}
+\ctikzset{tripoles/european nand port/origin/.initial=0.8}
+\ctikzset{tripoles/european nand port/inputs/.initial=2}
+\ctikzset{tripoles/european or port/origin/.initial=0.8}
+\ctikzset{tripoles/european or port/inputs/.initial=2}
+\ctikzset{tripoles/european nor port/origin/.initial=0.8}
+\ctikzset{tripoles/european nor port/inputs/.initial=2}
+\ctikzset{tripoles/european xor port/origin/.initial=0.8}
+\ctikzset{tripoles/european xor port/inputs/.initial=2}
+\ctikzset{tripoles/european xnor port/origin/.initial=0.8}
+\ctikzset{tripoles/european xnor port/inputs/.initial=2}
+\ctikzset{tripoles/european buffer port/origin/.initial=0.8}
+\ctikzset{tripoles/european buffer port/inputs/.initial=1}%
+\ctikzset{tripoles/european not port/origin/.initial=0.8}
+\ctikzset{tripoles/european not port/inputs/.initial=1}%
+%%% parameters that are not used anymore after multi-input
+%%% gates --- left for compatibility of source code.
+\ctikzset{tripoles/american xor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xor port/ddd/.initial=.0}
+\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
+\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
+\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
+\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
+%%>>>
+
+% flip flops and muxdemxes%<<<1
+
+%% flip-flop specific keys (most others are the same as chips)
+
+\ctikzset{multipoles/flipflop/font/.initial=\pgf@circ@font@small}
+\ctikzset{multipoles/flipflop/fontud/.initial=\pgf@circ@font@tiny}
+\ctikzset{multipoles/flipflop/width/.initial=1.2}
+\ctikzset{multipoles/flipflop/pin spacing/.initial=0.6}
+\ctikzset{multipoles/flipflop/clock wedge size/.initial=0.2}
+
+%% muxdemuxes keys
+
+\ctikzset{multipoles/muxdemux/base len/.initial=0.4}
+\ctikzset{multipoles/muxdemux/Lh/.initial=8.0}
+\ctikzset{multipoles/muxdemux/Rh/.initial=6.0}
+\ctikzset{multipoles/muxdemux/w/.initial=3.0}
+\ctikzset{multipoles/muxdemux/inset w/.initial=0.0}
+\ctikzset{multipoles/muxdemux/inset Lh/.initial=0.0}
+\ctikzset{multipoles/muxdemux/inset Rh/.initial=0.0}
+\ctikzset{multipoles/muxdemux/NL/.initial=8}
+\ctikzset{multipoles/muxdemux/NR/.initial=1}
+\ctikzset{multipoles/muxdemux/NB/.initial=3}
+\ctikzset{multipoles/muxdemux/NT/.initial=0}
+\ctikzset{multipoles/muxdemux/square pins/.initial=0}%
+%>>>
+
+% Amplifiers%<<<1
+%
+% switches for op amps
+% changing input polarity
+%
+\newif\ifpgf@circuit@oa@iplusup\pgf@circuit@oa@iplusupfalse
+\pgfkeys{/tikz/noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
+\ctikzset{noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
+\pgfkeys{/tikz/noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
+\ctikzset{noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
+%
+% changing output polarity (for fully diff objects)
+%
+\newif\ifpgf@circuit@oa@oplusup\pgf@circuit@oa@oplusuptrue
+\pgfkeys{/tikz/noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
+\ctikzset{noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
+\pgfkeys{/tikz/noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
+\ctikzset{noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
+
+% Operational amplifier
+\ctikzset{tripoles/op amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/op amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/op amp/height/.initial=1.4} % Total height
+\ctikzset{tripoles/op amp/input height/.initial=.5} % Input port vertical separation
+\ctikzset{tripoles/op amp/up pos/.initial=.45} % Top and bottom anchor position
+\ctikzset{tripoles/op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Fully differential operational amplifier
+\ctikzset{tripoles/fd op amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/fd op amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/fd op amp/height/.initial=1.4} % Total height
+\ctikzset{tripoles/fd op amp/input height/.initial=.5} % Input port vertical separation
+\ctikzset{tripoles/fd op amp/output height/.initial=.5} % Output port vertical separation
+\ctikzset{tripoles/fd op amp/up pos/.initial=.45} % Top and bottom anchor position
+\ctikzset{tripoles/fd op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+\ctikzset{tripoles/en amp/width/.initial=1.7}
+\ctikzset{tripoles/en amp/port width/.initial=.7}
+\ctikzset{tripoles/en amp/height/.initial=1.6}
+\ctikzset{tripoles/en amp/input height/.initial=.3}
+\ctikzset{tripoles/en amp/up pos/.initial=.45}
+\ctikzset{tripoles/en amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+\ctikzset{tripoles/en amp/font2/.initial=\pgf@circ@font@twelve} % Absolute font size needed!
+\ctikzset{tripoles/en amp/text/.initial={$\mathstrut{\triangleright}\,{\infty}$}}
+\tikzset{
+ en amp text/.code = {%
+ \ctikzsetvalof{tripoles/en amp/text}{#1}%
+ },
+ en amp text A/.code = {%
+ \ctikzsetvalof{tripoles/en amp/text}{$\mathstrut{\triangleright}\,\mathrm{A}$}%
+ },
+}
+
+% Transconductance amplifier
+\ctikzset{tripoles/gm amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/gm amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/gm amp/height/.initial=1.4} % Left side of the trapezoid
+\ctikzset{tripoles/gm amp/height 2/.initial=0.5} % Right side of the trapezoid
+\ctikzset{tripoles/gm amp/input height/.initial=.5} % Input port vertical separation
+\ctikzset{tripoles/gm amp/up pos/.initial=.45} % Top and bottom anchor position
+\ctikzset{tripoles/gm amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Instrumentation amplifier
+\ctikzset{tripoles/inst amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/inst amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/inst amp/height/.initial=1.4} % Left side of the trapezoid
+\ctikzset{tripoles/inst amp/height 2/.initial=0.6} % Right side of the trapezoid
+\ctikzset{tripoles/inst amp/input height/.initial=.5} % Input ports vertical separation
+\ctikzset{tripoles/inst amp/up pos/.initial=.4} % Top and bottom anchor position
+\ctikzset{tripoles/inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
+\ctikzset{tripoles/inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Instrumentation amplifier with differential output
+\ctikzset{tripoles/fd inst amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/fd inst amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/fd inst amp/height/.initial=1.4} % Left side of the trapezoid
+\ctikzset{tripoles/fd inst amp/height 2/.initial=0.6} % Right side of the trapezoid
+\ctikzset{tripoles/fd inst amp/input height/.initial=.5} % Input ports vertical separation
+\ctikzset{tripoles/fd inst amp/output height/.initial=.5} % Output ports vertical separation
+\ctikzset{tripoles/fd inst amp/up pos/.initial=.4} % Top and bottom anchor position
+\ctikzset{tripoles/fd inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
+\ctikzset{tripoles/fd inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Instrumentation amplifier with gain resistor terminals
+\ctikzset{tripoles/inst amp ra/width/.initial=2.4} % Total width
+\ctikzset{tripoles/inst amp ra/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/inst amp ra/height/.initial=2.9} % Left side of the trapezoid
+\ctikzset{tripoles/inst amp ra/height 2/.initial=0.4} % Right side of the trapezoid
+\ctikzset{tripoles/inst amp ra/input height/.initial=.7} % Input ports vertical separation
+\ctikzset{tripoles/inst amp ra/up pos/.initial=.4} % Top and bottom anchor position
+\ctikzset{tripoles/inst amp ra/refv pos/.initial=.7} % Top and bottom voltage reference position
+\ctikzset{tripoles/inst amp ra/ra pos/.initial=.6} % Gain resistor terminals vertical separation
+\ctikzset{tripoles/inst amp ra/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
+
+% Plain amplifier
+\ctikzset{tripoles/plain amp/width/.initial=1.7} % Total width
+\ctikzset{tripoles/plain amp/port width/.initial=.7} % Terminals length
+\ctikzset{tripoles/plain amp/height/.initial=1.4} % Total height
+\ctikzset{tripoles/plain amp/input height/.initial=.5} % Input ports vertical separation
+\ctikzset{tripoles/plain amp/up pos/.initial=.45} % Top and bottom anchor position
+
+% changing fonts and symbols of amplifiers
+\ctikzset{amplifiers/symbol font/.code={%
+ \ctikzset{tripoles/inst amp ra/font=#1}%
+ \ctikzset{tripoles/fd inst amp/font=#1}%
+ \ctikzset{tripoles/inst amp/font=#1}%
+ \ctikzset{tripoles/gm amp/font=#1}%
+ \ctikzset{tripoles/en amp/font=#1}%
+ \ctikzset{tripoles/fd op amp/font=#1}%
+ \ctikzset{tripoles/op amp/font=#1}%
+}}
+\ctikzset{amplifiers/plus/.initial={$+$}}
+\ctikzset{amplifiers/minus/.initial={$-$}}
+\tikzset{amp symbol font/.code={%
+ \ctikzset{amplifiers/symbol font={#1}}%
+ }
+}
+\tikzset{amp plus/.code={\ctikzsetvalof{amplifiers/plus}{#1}}}
+\tikzset{amp minus/.code={\ctikzsetvalof{amplifiers/minus}{#1}}}
+\def\pgf@circ@ampli@plus{\ctikzvalof{amplifiers/plus}}
+\def\pgf@circ@ampli@minus{\ctikzvalof{amplifiers/minus}}
+%%>>>
+
+% Transformers%<<<1
+
+\ctikzset{quadpoles/transformer/inner/.initial=0.4}
+\ctikzset{quadpoles/transformer/width/.initial=1.5}
+\ctikzset{quadpoles/transformer/width1/.initial=.4}
+\ctikzset{quadpoles/transformer/height/.initial=1.5}
+\ctikzset{quadpoles/transformer/height1/.initial=.8}
+\ctikzset{quadpoles/transformer core/inner/.initial=0.4}
+\ctikzset{quadpoles/transformer core/width/.initial=1.5}
+\ctikzset{quadpoles/transformer core/height/.initial=1.5}
+\ctikzset{quadpoles/transformer core/core height/.initial=.5}
+\ctikzset{quadpoles/transformer core/core width/.initial=.05}
+\ctikzset{quadpoles/gyrator/inner/.initial=0.4}
+\ctikzset{quadpoles/gyrator/width/.initial=1.5}
+\ctikzset{quadpoles/gyrator/height/.initial=1.5}
+\ctikzset{quadpoles/fourport/width/.initial=1.3}
+\ctikzset{quadpoles/fourport/height/.initial=1.3}
+\ctikzset{quadpoles/coupler/width/.initial=1.3}
+\ctikzset{quadpoles/coupler/height/.initial=1.3}
+\ctikzset{quadpoles/coupler2/width/.initial=1.3}
+\ctikzset{quadpoles/coupler2/height/.initial=1.3}
+
+\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
+
+\ctikzset{quadpoles style/.is choice}
+\ctikzset{quadpoles style/inward/.code={% default value
+ \ctikzset{quadpoles/transformer/inner=0.4}%
+ \ctikzset{quadpoles/transformer/width=1.5}%
+ \ctikzset{quadpoles/transformer core/inner=0.4}%
+ \ctikzset{quadpoles/transformer core/width=1.5}%
+ \ctikzset{quadpoles/gyrator/inner=0.4}%
+ \ctikzset{quadpoles/gyrator/width=1.5}%
+ }%
+}
+\ctikzset{quadpoles style/inline/.code={% now horizontal baffle
+ \ctikzset{quadpoles/transformer/inner=1}%
+ \ctikzset{quadpoles/transformer/width=0.6}%
+ \ctikzset{quadpoles/transformer core/inner=1}%
+ \ctikzset{quadpoles/transformer core/width=0.6}%
+ \ctikzset{quadpoles/gyrator/inner=1} % FIXME
+ \ctikzset{quadpoles/gyrator/width=0.6}%
+ }%
+}
+%%>>>
+
+% seven segment displays by RGtti%<<<1
+
+\newif\ifpgf@circ@sevenseg@dot
+\newif\ifpgf@circ@sevenseg@box
+\def\pgf@circ@sevenseg@dotstate{empty}
+\ctikzset{seven seg/.is family}
+\ctikzset{seven seg/dot/.is choice}
+% none means no dot, not space for it. Empty means no dot, but space
+\ctikzset{seven seg/dot/none/.code={\pgf@circ@sevenseg@dotfalse}}
+\ctikzset{seven seg/dot/empty/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{empty}}}
+\ctikzset{seven seg/dot/off/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{off}}}
+\ctikzset{seven seg/dot/on/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{on}}}
+%
+\ctikzset{seven seg/width/.initial=0.4}% relative to \pgf@circ@Rlen
+\ctikzset{seven seg/thickness/.initial=4pt}% segment thickness
+\ctikzset{seven seg/segment sep/.initial=0.2pt}% gap between segments
+\ctikzset{seven seg/box sep/.initial=1pt}% external box gap
+\ctikzset{seven seg/color on/.initial=red}% color for segment "on"
+\ctikzset{seven seg/color off/.initial=gray!20!white} % ...and "off"
+\ctikzset{seven seg/box/.is choice}
+\ctikzset{seven seg/box/off/.code={\pgf@circ@sevenseg@boxfalse}}
+\ctikzset{seven seg/box/on/.code={\pgf@circ@sevenseg@boxtrue}}
+
+\ctikzset{seven seg/bits/.initial=0000000}
+
+\ctikzset{seven seg/value/.code={%
+ \edef\@@tmp{#1}%
+ \edef\@@n{0} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111110}\fi
+ \edef\@@n{1} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110000}\fi
+ \edef\@@n{2} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1101101}\fi
+ \edef\@@n{3} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111001}\fi
+ \edef\@@n{4} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110011}\fi
+ \edef\@@n{5} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011011}\fi
+ \edef\@@n{6} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011111}\fi
+ \edef\@@n{7} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110000}\fi
+ \edef\@@n{8} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111111}\fi
+ \edef\@@n{9} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111011}\fi
+ \edef\@@n{10}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
+ \edef\@@n{11}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
+ \edef\@@n{12}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
+ \edef\@@n{13}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
+ \edef\@@n{14}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
+ \edef\@@n{15}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
+ \edef\@@n{A} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
+ \edef\@@n{B} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
+ \edef\@@n{C} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
+ \edef\@@n{D} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
+ \edef\@@n{E} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
+ \edef\@@n{F} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
+ \edef\@@n{a} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
+ \edef\@@n{b} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
+ \edef\@@n{c} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
+ \edef\@@n{d} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
+ \edef\@@n{e} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
+ \edef\@@n{f} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
+ \edef\@@n{-} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0000001}\fi
+}}
+
+\tikzset{%
+ seven segment val/.style args={#1dot#2box#3}{%
+ shape=bare7seg,
+ /tikz/circuitikz/seven seg/value=#1,
+ /tikz/circuitikz/seven seg/dot=#2,
+ /tikz/circuitikz/seven seg/box=#3,
+ },
+ seven segment bits/.style args={#1dot#2box#3}{%
+ shape=bare7seg,
+ /tikz/circuitikz/seven seg/bits=#1,
+ /tikz/circuitikz/seven seg/dot=#2,
+ /tikz/circuitikz/seven seg/box=#3,
+ },
+}
+%%>>>
+
+% Options for twoports and blocks%<<<1
+
+% Option ">" for twoports
+\newif\ifpgf@circuit@inputarrow
+\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/.is choice}
+\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
+\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
+
+% Option "boxed" for nodes and twoports
+\newif\ifpgf@circuit@boxed
+\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
+\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
+\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
+
+% Option "dashed" for nodes and twoports
+\newif\ifpgf@circuit@dashed
+\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
+\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}%
+%>>>
+
+% Chips and Rotary switches (multipoles) %<<<1
+%
+\ctikzset{multipoles/thickness/.initial=2}
+\ctikzset{multipoles/font/.initial=\pgf@circ@font@tiny}
+% DIP (dual in line package) chips
+\ctikzset{multipoles/dipchip/width/.initial=1.2}
+\ctikzset{multipoles/dipchip/num pins/.initial=8}
+\ctikzset{multipoles/dipchip/pin spacing/.initial=0.4}
+\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/dipchip/num pins=#1}}}
+% QFP (quad flat package) chips
+\ctikzset{multipoles/qfpchip/num pins/.initial=8}
+\ctikzset{multipoles/qfpchip/pin spacing/.initial=0.4}
+\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/qfpchip/num pins=#1}}}
+% chip numbers
+\newif\ifpgf@circuit@chip@shownumbers\pgf@circuit@chip@shownumberstrue
+\pgfkeys{/tikz/show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
+\ctikzset{show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
+\pgfkeys{/tikz/hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
+\ctikzset{hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
+\newif\ifpgf@circuit@chip@straightnumbers\pgf@circuit@chip@straightnumberstrue
+\pgfkeys{/tikz/straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
+\ctikzset{straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
+\pgfkeys{/tikz/rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
+\ctikzset{rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
+% external chip pins
+\ctikzset{multipoles/external pins thickness/.initial=1}
+\ctikzset{multipoles/external pins width/.initial=0.2}
+\ctikzset{multipoles/external pad fraction/.initial=0}
+\pgfkeys{/tikz/external pins width/.add code={}{\ctikzset{multipoles/external pins width=#1}}}
+\pgfkeys{/tikz/external pad fraction/.add code={}{\ctikzset{multipoles/external pad fraction=#1}}}
+% topmarks
+\newif\ifpgf@circuit@chip@topmark\pgf@circuit@chip@topmarktrue
+\pgfkeys{/tikz/topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
+\ctikzset{topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
+\pgfkeys{/tikz/no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
+\ctikzset{no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
+
+% rotary switch by Romano
+\ctikzset{multipoles/rotary/thickness/.initial=1}
+\ctikzset{multipoles/rotary/shape/.initial=ocirc}
+\ctikzset{multipoles/rotary/channels/.initial=5}
+\ctikzset{multipoles/rotary/angle/.initial=60}
+\ctikzset{multipoles/rotary/wiper/.initial=20}
+\ctikzset{multipoles/rotary/arrow/.is choice}
+\newif\ifpgf@circ@rotaryarrow\pgf@circ@rotaryarrowfalse
+\newif\ifpgf@circ@rotaryarrow@cw\pgf@circ@rotaryarrow@cwfalse
+\newif\ifpgf@circ@rotaryarrow@ccw\pgf@circ@rotaryarrow@ccwfalse
+\ctikzset{multipoles/rotary/arrow/none/.code={\pgf@circ@rotaryarrowfalse\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwfalse}}
+\ctikzset{multipoles/rotary/arrow/both/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwtrue}}
+\ctikzset{multipoles/rotary/arrow/cw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwfalse}}
+\ctikzset{multipoles/rotary/arrow/ccw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwtrue}}
+
+\tikzset{%
+ rotary switch/.style args={#1in#2wiper#3}{%
+ shape=rotaryswitch,
+ /tikz/circuitikz/multipoles/rotary/channels=#1,
+ /tikz/circuitikz/multipoles/rotary/angle=#2,
+ /tikz/circuitikz/multipoles/rotary/wiper=#3,
+ },
+ rotary switch -/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=none,
+ },
+ rotary switch <-/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=ccw,
+ },
+ rotary switch ->/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=cw,
+ },
+ rotary switch <->/.style args={#1in#2wiper#3}{
+ rotary switch=#1 in #2 wiper #3,
+ /tikz/circuitikz/multipoles/rotary/arrow=both,
+ },
+ % Notice that these should be the same as the initial values of the keys
+ rotary switch/.default={5 in 60 wiper 20},
+ rotary switch -/.default={5 in 60 wiper 20},
+ rotary switch <-/.default={5 in 60 wiper 20},
+ rotary switch ->/.default={5 in 60 wiper 20},
+ rotary switch <->/.default={5 in 60 wiper 20},
+}
+%%>>>
+
+% %Mechanical section%<<<1
+\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
+\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
+\ctikzset{bipoles/spring/height/.initial=.5}
+\ctikzset{bipoles/spring/width/.initial=.5}
+\ctikzset{bipoles/inerter/height/.initial=.7}
+\ctikzset{bipoles/inerter/width/.initial=.175}
+\ctikzset{bipoles/mass/height/.initial=.55}
+\ctikzset{bipoles/mass/box height/.initial=.4}
+\ctikzset{bipoles/mass/width/.initial=.5}
+
+\ctikzset{bipoles/damper/height/.initial=.35}
+\ctikzset{bipoles/damper/length/.initial=.3}
+\ctikzset{bipoles/damper/width/.initial=.4}
+%%>>>
+
+% powerelectronic blocks%<<<1
+\ctikzset{bipoles/sacdc/width/.initial=.7}
+\ctikzset{bipoles/sdcac/width/.initial=.7}
+\ctikzset{bipoles/tacdc/width/.initial=.7}
+\ctikzset{bipoles/tdcac/width/.initial=.7}
+\ctikzset{quadpoles/gridnode/width/.initial=.7} %not sure if quadpole?
+%>>>
+
+% voltage and current options%<<<1
+%
+\ctikzset{current arrow scale/.initial=16}
+\ctikzset{current/distance/.initial = .5}
+
+\newif\ifpgf@circuit@europeancurrent
+\newif\ifpgf@circuit@europeanvoltage
+\newif\ifpgf@circuit@bipole@voltage@straight
+\newif\ifpgf@circuit@bipole@voltage@raised
+
+\ctikzset{voltage/.is choice}
+%
+% straight is expected to be a subset of european, so disable it in american style
+%
+\ctikzset{voltage/american/.code = {%
+ \pgf@circuit@europeanvoltagefalse
+ \pgf@circuit@bipole@voltage@straightfalse
+ \pgf@circuit@bipole@voltage@raisedfalse
+}}
+\ctikzset{voltage/raised/.code = {%
+ \pgf@circuit@europeanvoltagefalse
+ \pgf@circuit@bipole@voltage@straightfalse
+ \pgf@circuit@bipole@voltage@raisedtrue
+}}
+\ctikzset{voltage/european/.code = {%
+ \pgf@circuit@europeanvoltagetrue
+ \pgf@circuit@bipole@voltage@straightfalse
+ \pgf@circuit@bipole@voltage@raisedfalse
+}}
+\ctikzset{voltage/straight/.code = {%
+ \pgf@circuit@europeanvoltagetrue
+ \pgf@circuit@bipole@voltage@straighttrue
+ \pgf@circuit@bipole@voltage@raisedfalse
+}}
+\ctikzset{voltage/curved/.code = {%
+ \pgf@circuit@europeanvoltagetrue
+ \pgf@circuit@bipole@voltage@straightfalse
+ \pgf@circuit@bipole@voltage@raisedfalse
+}}
+% are these used?
+\ctikzset{current/.is choice}
+\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse}
+\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue}
+
+% this is left for backward compatibility...
+\ctikzset{straight/.is choice}
+\ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}}
+\ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}}
+\ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight}
+%
+% voltage is used also to set parameters, apart for the /.is choice
+% above. I hope it is ok --- would be a mess otherwise
+%
+\ctikzset{voltage/shift/.initial=0.0} % shift form the cable of voltage symbols
+\ctikzset{voltage shift/.style={\circuitikzbasekey/voltage/shift=#1}}
+\tikzset{voltage shift/.style={\circuitikzbasekey/voltage/shift=#1}}
+%
+% keys for exporting voltage, current, flow anchors
+%
+\newif\ifpgfcirc@has@v\pgfcirc@has@vfalse
+\newif\ifpgfcirc@has@f\pgfcirc@has@ffalse
+\newif\ifpgfcirc@has@i\pgfcirc@has@ifalse
+\def\ctikzgetanchor#1#2{\csname pgfcirc@#1-#2-anchor\endcsname}
+\def\ctikzgetdirection#1{\csname pgfcirc@#1-direction\endcsname}
+%
+% shaping the +/- sign, see pgfcircvoltage.tex
+\ctikzset{voltage/american font/.initial={}}
+\ctikzset{voltage/american plus/.initial={$+$}}
+\ctikzset{voltage/american minus/.initial={$-$}}
+% here we start the voltage adjustments for special components.
+% default values:
+%
+% this is the distance of the "point" marking the voltage along the line
+% 0.0 is on the external nodes of the to path
+% 1.0 is cramped on the object
+% this can be overriden component by component
+\ctikzset{voltage/distance from node/.initial=.5}% pos, 0->1
+%
+% this is the distance from the line (perpendicular to) where the voltage is drawn.
+% It is global, and not adjustable by component (use the "label distance" or locally
+% if you need it)
+\ctikzset{voltage/distance from line/.initial=.08}% in \pgf@circ@scaled@Rlen units
+%
+% bend paramenters for european arc. You can override them component-based
+\ctikzset{voltage/bump b/.initial=1.5}
+%
+% generator voltages symbols or arrows (always straight) are put along the
+% 60 ... 120 angles of the symbol (don't ask why). The distance here is on the
+% center..angle line. It's called bump a because I don't know...
+%
+\ctikzset{voltage/bump a/.initial=1.2}
+%
+% these are the label distances FROM the drawings.
+% You can override them component by component.
+\ctikzset{voltage/european label distance/.initial=1.4}
+\ctikzset{voltage/straight label distance/.initial=1.4}
+\ctikzset{voltage/american label distance/.initial=1.4}
+% american open voltage adjusting
+%
+\newif\ifpgf@adjust@open@voltage\pgf@adjust@open@voltagetrue
+\ctikzset{open voltage position/.is choice}
+\ctikzset{open voltage position/center/.code={\pgf@adjust@open@voltagetrue}}
+\ctikzset{open voltage position/legacy/.code={\pgf@adjust@open@voltagefalse}}
+% bad names, kept for compatibility, don't use
+\ctikzset{american open voltage/.is choice}
+\ctikzset{american open voltage/center/.code={\pgf@adjust@open@voltagetrue}}
+\ctikzset{american open voltage/legacy/.code={\pgf@adjust@open@voltagefalse}}
+%
+% voltage and current styles
+%
+\tikzset{american currents/.style = {\circuitikzbasekey/current = american}}
+\tikzset{european currents/.style = {\circuitikzbasekey/current = european}}
+\tikzset{american voltages/.style = {\circuitikzbasekey/voltage = american}}
+\tikzset{european voltages/.style = {\circuitikzbasekey/voltage = european}}
+\tikzset{straight voltages/.style = {\circuitikzbasekey/voltage = straight}}
+\tikzset{raised voltages/.style = {\circuitikzbasekey/voltage = raised}}
+%%>>>
+
+% special cases for voltage positions%<<<1
+% the KIND is the node name without SHAPE
+% See the definition above for meaning
+% if bipoles/KIND/voltage/straight label distance is not defined, it uses the height
+% if bipoles/KIND/voltage/additional shift is not defined, it is 0 (extra distance)
+%
+\ctikzset{bipoles/generic/voltage/distance from node/.initial=0.4}
+\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
+%
+\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
+%
+\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
+%
+\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
+\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
+%
+\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
+%
+\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/varistor/voltage/american label distance/.initial=1.8}
+%
+\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=1.6}
+%
+\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
+\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=0.8}
+\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
+\ctikzset{bipoles/thermistorntc/voltage/european label distance/.initial=0.8}
+\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
+\ctikzset{bipoles/thermistorptc/voltage/european label distance/.initial=0.8}
+%
+\ctikzset{bipoles/ccapacitor/voltage/bump b/.initial=2.2}
+%
+\ctikzset{bipoles/emptyzzdiode/voltage/bump b/.initial=2.5}
+\ctikzset{bipoles/emptyzzdiode/voltage/european label distance/.initial=1.0}
+\ctikzset{bipoles/fullzzdiode/voltage/bump b/.initial=2.5}
+\ctikzset{bipoles/fullzzdiode/voltage/european label distance/.initial=1.0}
+\ctikzset{bipoles/emptythyristor/voltage/bump b/.initial=2.0}
+\ctikzset{bipoles/emptythyristor/voltage/european label distance/.initial=1.2}
+\ctikzset{bipoles/fullthyristor/voltage/bump b/.initial=2.0}
+\ctikzset{bipoles/fullthyristor/voltage/european label distance/.initial=1.2}
+\ctikzset{bipoles/emptytriac/voltage/bump b/.initial=1.8}
+\ctikzset{bipoles/emptytriac/voltage/european label distance/.initial=0.8}
+\ctikzset{bipoles/fulltriac/voltage/bump b/.initial=1.8}
+\ctikzset{bipoles/fulltriac/voltage/european label distance/.initial=0.8}
+%
+\ctikzset{bipoles/short/voltage/american label distance/.initial=2.8}
+\ctikzset{bipoles/open/voltage/distance from node/.initial=0.3}
+%
+\ctikzset{bipoles/battery/voltage/bump a/.initial=1.4}
+\ctikzset{bipoles/vsourceAM/voltage/american label distance/.initial=1.2}
+\ctikzset{bipoles/cvsourceAM/voltage/american label distance/.initial=1.2}
+%%>>>
+
+% vim: set fdm=marker fmr=%<<<,%>>>:
+%%%---------- close: tex/pgfcirc.defines
+%%%%%%%%%%% Springe nach tex/pgfcircutils
+%%%---------- open: tex/pgfcircutils.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+\def\pgf@circ@handleSI#1{
+ \noexpandarg
+ \def\pgf@temp{}
+ \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
+ \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
+
+ \ifnum\pgf@circ@handleSI@unit@len=0
+ \pgf@circ@siunitx@resfalse
+ \else
+ \IfEndWith{#1}{>}{
+ \pgf@circ@siunitx@restrue
+ \noexpandarg
+ \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
+ %\typeout{si |#1|}
+ }{
+ \pgf@circ@siunitx@resfalse
+ %\typeout{no si |#1|}
+ }
+\fi
+}
+
+\def\pgf@circ@ifkeyempty#1{
+ \pgfextra{
+ \ctikzset{#1/.get=\pgf@circ@temp}
+ \edef\pgf@temp{}
+ }
+ \ifx\pgf@circ@temp\pgf@temp
+ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Math routines
+
+\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% useful commands
+
+\ifpgfutil@format@is@latex
+ %% flipping text
+ \def\ctikzflipx#1{\scalebox{-1}[1]{#1}}
+ \def\ctikzflipy#1{\scalebox{1}[-1]{#1}}
+ \def\ctikzflipxy#1{\scalebox{-1}[-1]{#1}}
+ % text mode overbar
+ % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
+ \def\ctikztextnot#1{$\overline{\hbox{#1}}\m@th$}
+\else\ifpgfutil@format@is@plain
+ % text mode overbar
+ % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
+ \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
+\else\ifpgfutil@format@is@context
+ % text mode overbar
+ % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
+ \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
+\fi\fi\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% switch to use fpu in reciprocal scale transformations
+%%
+%% this code has been contributed by Schrรถdinger's cat
+%% https://tex.stackexchange.com/a/529159/38080
+%%
+%% Use the official key to use the fpu if installed, see
+%% https://github.com/pgf-tikz/pgf/issues/861
+%%
+%% Thanks to "muzimuzhi Z" https://tex.stackexchange.com/a/547085/38080
+%%
+\pgfkeysifdefined{/pgf/fpu/install only/.@cmd}{%
+ \pgfqkeys{/pgf}{use fpu reciprocal/.code={\pgfkeys{/pgf/fpu/install only={reciprocal}}}}%
+ }{%
+ \pgfqkeys{/pgf}{use fpu reciprocal/.code={%
+ \def\pgfmathreciprocal@##1{%
+ \begingroup
+ \pgfkeys{/pgf/fpu=true,/pgf/fpu/output format=fixed}%
+ \pgfmathparse{1/##1}%
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
+ }}}%
+}
+
+%%%---------- close: tex/pgfcircutils
+
+%%%%%%%%%%% Springe nach tex/pgfcircshapes
+%%%---------- open: tex/pgfcircshapes.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Other shapes
+
+%% Nothing
+
+\pgfdeclareshape{emptyshape}{
+ \savedanchor{\northeast}{%
+ \pgf@x=.5\wd\pgfnodeparttextbox%
+ \pgf@y=.5\ht\pgfnodeparttextbox%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+}
+%
+% Provision for changing opacity. Only expert use, see the manual.
+%
+\ctikzset{poles/open fill opacity/.initial=1.0}% better not touch it
+\tikzset{open poles opacity/.code={%
+ \ctikzset{poles/open fill opacity=#1}%
+}}
+\ctikzset{poles/full fill opacity/.initial=1.0}% better not touch it
+\tikzset{full poles opacity/.code={%
+ \ctikzset{poles/full fill opacity=#1}%
+}}
+
+%
+% Provision for changing default background
+%
+
+\ctikzset{open poles fill/.initial={white}}
+
+%% Full terminal
+
+\pgfdeclareshape{circ}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Empty round terminal
+
+\pgfdeclareshape{ocirc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
+ }
+
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{\ctikzvalof{open poles fill}}
+ % ...but override it if the class is defined!
+ % note that this element has no class, but will inherit it when used
+ % into another component
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+
+ }
+}
+
+%% Diamond terminal
+
+\pgfdeclareshape{diamondpole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
+ \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
+ \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
+ \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
+ % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
+ \pgfpointintersectionoflines
+ {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
+ % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgf@x=\@@switchx\pgf@x
+ \pgf@y=\@@switchy\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgftransformrotate{45}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% Diamond terminal, unfilled
+
+\pgfdeclareshape{odiamondpole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
+ \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
+ \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
+ \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
+ % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
+ \pgfpointintersectionoflines
+ {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
+ % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
+ \pgf@x=\@@switchx\pgf@x
+ \pgf@y=\@@switchy\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgftransformrotate{45}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{\ctikzvalof{open poles fill}}
+ % ...but override it if the class is defined!
+ % note that this element has no class, but will inherit it when used
+ % into another component
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% square terminal, filled
+
+\pgfdeclareshape{squarepole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpointborderrectangle
+ {\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{\pgf@circ@res@up}{\pgf@circ@res@up}}
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+%% square terminal, unfilled
+
+\pgfdeclareshape{osquarepole}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpointborderrectangle
+ {\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfqpoint{\pgf@circ@res@up}{\pgf@circ@res@up}}
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \pgfpathrectanglecorners
+ {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{\ctikzvalof{open poles fill}}
+ % ...but override it if the class is defined!
+ % note that this element has no class, but will inherit it when used
+ % into another component
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+% BNC connector
+
+\pgfdeclareshape{bnc}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ % BNC size is 2.5 times the size of the internal "ocirc"
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgf@y=2.5\pgf@y
+ \pgf@x=-\pgf@y
+ }
+ % center is on the opening
+ \anchor{center}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{zero}{ \pgfpointorigin }
+ \anchor{hot}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{shield}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ % geo-anchors
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{right}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{left}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
+ }
+ \behindforegroundpath{
+ \pgfextracty{\pgf@circ@res@other}{\northwest}
+ \pgf@circ@res@step=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgfsetcolor{\ctikzvalof{color}}
+ % external circle
+ \pgfscope
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{-2\pgf@circ@res@other}{-2\pgf@circ@res@other}}
+ {\pgfpoint{2\pgf@circ@res@other}{2\pgf@circ@res@other}}
+ % next the opening to the right
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ {\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@step}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@other}
+ \pgfusepath{draw}
+ \endpgfscope
+ % internal circle
+ \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@step}
+ \pgf@circ@draworfill
+ % and the contact line to the right
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+%% Fill for correct rectangular joins
+
+\pgfdeclareshape{rectjoinfill}{
+ \savedanchor{\northeast}{%
+ \pgf@x=.5\pgflinewidth%
+ \pgf@y=.5\pgflinewidth%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgfpathrectanglecorners
+ {\pgfpoint{0}{.5\pgflinewidth}}
+ {\pgfpoint{0}{-.5\pgflinewidth}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%% transistor arrow
+
+\def\pgf@circ@find@linescale{
+ % find the scale inverse of the scale factor: line width do not scale
+ % with scale=..., transform shape so we have to counteract it.
+ \iftikz@fullytransformed % this is true if `transform shape` is active
+ % from @Circumscribe https://tex.stackexchange.com/a/474035/38080
+ % Note that this trick is not working inside a `spy` environment...
+ \pgfgettransformentries{\scaleA}{\scaleB}{\scaleC}{\scaleD}{\whatevs}{\whatevs}%
+ \pgfmathsetmacro{\@@factor}{1.0/sqrt(abs(\scaleA*\scaleD-\scaleB*\scaleC))}%
+ \else
+ \pgfmathsetmacro{\@@factor}{1.0}
+ \fi
+}
+
+\pgfdeclareshape{trarrow}{%
+ % this arrow is only filled but grows with the linewidth, more or less
+ % like currarrow do
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \pgf@circ@find@linescale
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgfpoint{0.7*\pgf@circ@res@step +0.5*\@@factor*\pgflinewidth}
+ {0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
+ }
+ % The arrow size should be more or less the same of a currarrow, which is
+ % both filled and stroke, for backward output compatibility (more or less)
+ %
+ % angle \beta W is \pgf@circ@Rlen/\ctikzvalof{current arrow scale}
+ % |-\__ currarrow as the tip at (W,0)
+ % | | and the upper tail at (-0.7*W, 0.8*W)
+ % | \__ it then "overshoot" do to the linew width L
+ % | \__ xangle \alpha
+ % ---0------->
+ %
+ % \beta = atan(0.7/0.8) \alpha=atan(0.8/1.7)
+ % tip overshoot is (L/2)/sin(\alpha) = 1.743*L only in x direction
+ % tail overshoot is -(L/2) in x, and (L/2)/sin(\beta) = 0.7539*L in y
+ %
+ \savedanchor{\northwest}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@circ@find@linescale
+ \pgfpoint{-0.7*\pgf@circ@res@step -0.5*\@@factor*\pgflinewidth}
+ {0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
+ }
+ \savedanchor{\tip}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@circ@find@linescale
+ \pgfpoint{\pgf@circ@res@step + 1.743*\@@factor*\pgflinewidth}{0pt}
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \tip
+ }
+ \anchor{btip}{% this anchor is behind the tip of half a linewidth
+ \tip
+ \pgf@circ@find@linescale
+ \pgf@circ@res@temp=\@@factor\pgflinewidth
+ \advance\pgf@x by -.5\pgf@circ@res@temp
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \northwest
+ \pgf@circ@res@up=\pgf@y
+ \pgf@circ@res@left=\pgf@x
+ \tip
+ \pgf@circ@res@step = \pgf@x
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{fill} % just fill
+ \endpgfscope
+ }
+}
+
+%% Current arrow
+
+\pgfdeclareshape{currarrow}{
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@x=.5\pgf@circ@res@step
+ \pgf@y=\pgf@x%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \pgfpointorigin
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@x =\pgf@circ@res@step
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+
+ \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{draw,fill}
+
+ \endpgfscope
+ }
+}
+
+%% Flow arrow
+
+\pgfdeclareshape{flowarrow}{
+ \savedanchor{\northeast}{%
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@y=.5\pgf@circ@res@step
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 4
+ \pgf@x=\pgf@circ@res@step%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{text}{% text centered above
+ \pgfpointorigin
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox}
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{tip}{
+ \pgfpointorigin
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@x =\pgf@circ@res@step
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 4
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{draw}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfnode{currarrow}{tip}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+ }
+}
+
+%% Input arrow
+
+\pgfdeclareshape{inputarrow}{
+ \savedanchor{\northeast}{% this is really not northeast, really -northwest
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
+ \pgf@y=.5\pgf@circ@res@step
+ \pgf@x=1.7\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax\pgf@x=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
+ \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast\pgf@x=0cm\relax}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@x=0cm\relax}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \savedanchor{\tip}{
+ \pgfpointorigin
+ }
+ \anchor{center}{
+ \tip
+ }
+ \anchor{tip}{
+ \tip
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 16
+
+ \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfusepath{fill}
+
+ \endpgfscope
+ }
+}
+
+
+%% box
+
+\pgfdeclareshape{box}{
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+
+ \pgfscope
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
+ \pgf@circ@res@step = 0.5\pgf@circ@res@step
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+%% box scaled with blocks
+
+\pgfdeclareshape{blockbox}{
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{blocks/scale}\pgf@circ@Rlen}}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \behindforegroundpath{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{blocks/scale}\pgf@circ@Rlen}
+ \pgfscope
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@step = 0.5\pgf@circ@res@step
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+% full nodes for wire crossing
+
+\pgfdeclareshape{jump crossing}
+{
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \behindbackgroundpath{
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ % horizontal jumper
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
+ \pgfsetbeveljoin
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % vertical, broken path
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+\pgfdeclareshape{plain crossing}
+{
+ \savedanchor\northwest{%
+ \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{w}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{n}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \behindbackgroundpath{
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ % horizontal jumper
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % vertical, broken path
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.1\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.1\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+
+%%%---------- close: tex/pgfcircshapes
+%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
+%%%---------- open: tex/pgfcircmonopoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Monopoles
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%
+%% Grounds
+%%%%%%%%%%%%%
+
+
+%% Ground symbol
+% #1 -> name
+% #2 -> width
+% #3 -> depth
+% #4 -> code
+\long\def\pgf@circ@declareground#1#2#3#4{
+ \pgfdeclareshape{#1}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{grounds}} % class of these components
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\southeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
+ \pgf@x=#2\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
+ \pgf@y=-#3\pgf@y
+ }
+ \anchor{north}{\pgfpointorigin}
+ \anchor{north east}{\southeast\pgf@y=0pt\relax}
+ \anchor{east}{\southeast\pgf@y=.5\pgf@y}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\southeast\pgf@y=.5\pgf@y\pgf@x=-\pgf@x}
+ \anchor{north west}{\southeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ \anchor{center}{\pgfpointorigin}
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ #4
+ \endpgfscope
+ }
+ }
+}
+
+
+\pgf@circ@declareground{ground}{0.6}{1.6}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+\pgf@circ@declareground{tlground}{0.6}{0.4}{
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+
+\pgf@circ@declareground{rground}{0.6}{1}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{monopoles/rground}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+\pgf@circ@declareground{tground}{0.6}{0}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+}
+
+\pgf@circ@declareground{sground}{0.6}{1.8}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+}
+
+% noiseless ground
+\pgf@circ@declareground{nground}{0.9}{1.6}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.9\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
+ \pgfpatharc{0}{180}{0.9\pgf@circ@res@step}
+ \pgfusepath{draw}
+}
+
+% protective ground
+\pgf@circ@declareground{pground}{0.9}{1.8}{
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0pt}{-0.9\pgf@circ@res@step}}{0.9\pgf@circ@res@step}
+ \pgf@circ@draworfill
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+% chassis ground
+\pgf@circ@declareground{cground}{1}{2}{
+ \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-1.00\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{ 0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{ 0.50\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.25\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+% Contributed by @fotesan https://github.com/fotesan
+% european ground
+\pgf@circ@declareground{eground}{1.1}{1.7}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.1\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+\pgf@circ@declareground{eground2}{1.1}{1.7}{
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-.45\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%%%%%%
+%% Power supplies
+%%%%%%%%%%%%%%%%%%
+
+% Vcc
+\pgfdeclareshape{vcc}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{power supplies}} % class of these components
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \saveddimen{\scaledwidth}{% thanks to @Schrรถdinger's cat on https://tex.stackexchange.com/a/506249/38080
+ \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\gscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
+ \pgfmathsetlength{\pgf@x}{(\ctikzvalof{\ctikzclass/scale}*\gscale*\ctikzvalof{monopoles/vcc/width})*\pgf@circ@Rlen}%
+ }
+ \savedanchor{\northeast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@circ@res@step
+ \pgf@y=3\pgf@x%
+ }
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{center}{\pgfpointorigin}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ \anchor{text}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=2\pgf@circ@res@step
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \edef\pgf@circ@temp{\ctikzvalof{monopoles/vcc/arrow}}\edef\pgf@temp{legacy}
+ \ifx\pgf@temp\pgf@circ@temp
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \else
+ \pgfsetarrowsend{\pgf@circ@temp}
+ \fi
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% Vee
+\pgfdeclareshape{vee}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{power supplies}} % class of these components
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \saveddimen{\scaledwidth}{% thanks to @Schrรถdinger's cat on https://tex.stackexchange.com/a/506249/38080
+ \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\gscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
+ \pgfmathsetlength{\pgf@x}{(\ctikzvalof{\ctikzclass/scale}*\gscale*\ctikzvalof{monopoles/vcc/width})*\pgf@circ@Rlen}%
+ }
+ \savedanchor{\northeast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@circ@res@step
+ \pgf@y=-3\pgf@x%
+ }
+ \anchor{south}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
+ \anchor{north}{\pgfpointorigin}
+ \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast}
+ \anchor{south west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{north east}{\northeast\pgf@y=0pt\relax}
+ \anchor{north west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{center}{\pgfpointorigin}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ \anchor{text}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
+ \pgf@x=0pt
+ \pgf@y=-2\pgf@circ@res@step
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \edef\pgf@circ@temp{\ctikzvalof{monopoles/vee/arrow}}\edef\pgf@temp{legacy}
+ \ifx\pgf@temp\pgf@circ@temp
+
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \else
+ \pgfsetarrowsend{\pgf@circ@temp}
+ \fi
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+%%%%%%%%%%%%%%%%
+%% RF elements
+%%%%%%%%%%%%%%%%
+
+% Legacy tlinestub
+% Contributed by Leonardo Azzinnari
+\pgfdeclareshape{tlinestub}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\northeast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
+ \pgf@x=1.2\pgf@circ@res@step
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
+ \pgf@y=.2\pgf@circ@res@step%
+ }
+ % the center is on the left side of the shape for facility of usage
+ \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0.5\pgf@x\relax}
+ \anchor{west}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=0cm\relax}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@x=0cm\pgf@y=-\pgf@y}
+ \anchor{center}{\pgfpointorigin}
+ % this is not exact, but it's better than nothing
+ \anchor{text}{\northeast\pgf@xa=\pgf@x\pgf@ya=\pgf@y
+ \pgfpoint{\dimexpr-.5\wd\pgfnodeparttextbox+.8\pgf@xa}
+ {\dimexpr-.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@ya}}
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width}\pgf@circ@scaled@Rlen
+
+ \pgfscope\begin{pgftransparencygroup}
+ \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgf@circ@maybefill
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \end{pgftransparencygroup} \endpgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+ }
+}
+
+%% New antennas without tails
+
+% main body of antennas
+\def\pgf@circ@antennabody{%
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{2\pgf@circ@res@step}}
+ \pgfsetbeveljoin
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+% Waves for the antennas.
+\def\pgf@circ@antennawaves{%
+ \pgfscope
+ % define a triangle for clipping the waves
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfusepath{clip}
+ % ...and build the waves as clipped circles
+ \pgf@circ@count@a=8\pgf@circ@res@other=0.5\pgf@circ@res@step
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>2
+ \pgfpathcircle{\pgfpoint{0pt}{\pgf@circ@res@step}}{\the\pgf@circ@count@a*\pgf@circ@res@other}
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% additional shape with the waves
+\pgfdeclareshape{waves}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0pt}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
+ \anchor{bottom}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{north east}{\northeast}
+ \anchor{east}{\northeast\pgf@y=0pt}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@step=0.5\pgf@circ@res@step
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfscope
+ % define a triangle for clipping the waves
+ \pgfpathmoveto{\pgfpoint{-2\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{-2\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfusepath{clip}
+ % ...and build the waves as clipped circles
+ \c@pgf@counta=8\pgf@circ@res@other=0.5\pgf@circ@res@step
+ \pgfmathloop%
+ \ifnum\c@pgf@counta>1
+ \pgfpathcircle{\pgfpoint{-2\pgf@circ@res@step}{0pt}}{\the\c@pgf@counta*\pgf@circ@res@other}
+ \advance\c@pgf@counta-1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+% the three types of antennas: simple, TX, RX. Notice that you can flip them...
+
+\pgfdeclareshape{bareantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=2\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{bottom}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@antennabody
+ }
+}
+
+\pgfdeclareshape{bareTXantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=2\pgf@circ@res@step
+ }
+ \savedanchor{\savedwaves}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=4.2\pgf@circ@res@step
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
+ \pgf@x=\dimexpr-\pgf@x-\wd\pgfnodeparttextbox\relax
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{waves}{\savedwaves}
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{bottom}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@antennabody
+ \pgf@circ@antennawaves
+ }
+}
+
+\pgfdeclareshape{bareRXantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=2\pgf@circ@res@step
+ }
+ \savedanchor{\savedwaves}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-4.2\pgf@circ@res@step
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{waves}{\savedwaves}
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{bottom}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgf@circ@antennabody
+ \pgftransformxshift{-5.2\pgf@circ@res@step}
+ \pgf@circ@antennawaves
+ }
+}
+
+%%% dynodes (see https://github.com/circuitikz/circuitikz/issues/469)
+\ctikzset{monopoles/dynode/width/.initial=0.4}
+\ctikzset{monopoles/dynode/height/.initial=0.8}
+\ctikzset{monopoles/dynode/arc pos/.initial=0.5}
+\ctikzset{monopoles/dynode/arc angle/.initial=30}
+\ctikzset{monopoles/dynode/top width/.initial=1.0}
+
+\pgfdeclareshape{dynode}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/dynode/width}\pgf@circ@scaled@Rlen
+ \pgf@x=0.5\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/dynode/height}\pgf@circ@scaled@Rlen
+ }
+ \savedanchor{\arcpos}{% bottom part of the arc pos
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=0pt
+ \pgf@y=\ctikzvalof{monopoles/dynode/height}\pgf@circ@scaled@Rlen
+ \pgf@y=\ctikzvalof{monopoles/dynode/arc pos}\pgf@y
+ }
+ \savedanchor{\topright}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/dynode/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\ctikzvalof{monopoles/dynode/top width}\pgf@x
+ \pgf@x=0.5\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/dynode/height}\pgf@circ@scaled@Rlen
+ }
+ \anchor{arc}{\arcpos}
+ \anchor{top right}{\topright}
+ \anchor{top left}{\topright\pgf@x=-\pgf@x}
+ \anchor{text}{
+ \northeast
+ \advance\pgf@x by 4pt\relax
+ \pgf@y=\dimexpr0.5\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{bottom}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{south}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgfsetcolor{\ctikzvalof{color}}
+ \northeast
+ \pgf@circ@res@right=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \arcpos
+ \pgf@circ@res@step=\pgf@y
+ % top
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{monopoles/dynode/top width}*\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{monopoles/dynode/top width}*\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ % arc
+ \edef\@@angle{\ctikzvalof{monopoles/dynode/arc angle}}
+ \ifnum90=\@@angle\else % avoid divisions by zero
+ % radius
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@res@right/cos(\@@angle)}
+ % start angle y position
+ \pgfmathsetlength{\pgf@circ@res@step}{\pgf@circ@res@step+\pgf@circ@res@other*(1-sin(\@@angle))}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@step}}
+ \pgfpatharc{-180+\@@angle}{-\@@angle}{\pgf@circ@res@other}
+ \fi
+ % tail
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ }
+}
+% Microstrip monopoles
+
+\pgfdeclareshape{mslstub}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\southeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
+ \pgf@y=-.5\pgf@y
+ }
+ \savedanchor{\northwest}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{east}{\southeast\pgf@y=0pt\relax}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+ \anchor{north west}{\northwest}
+ %
+ \anchor{center}{\northwest\pgf@y=0pt\relax}
+ \anchor{left}{\northwest\pgf@y=0pt\relax}
+ \anchor{right}{\southeast\pgf@y=0pt\relax}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ \behindbackgroundpath{
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@right}{\southeast}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@down}{\southeast}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{msrstub}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\southeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt\relax
+ }
+ \savedanchor{\northwest}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/msrstub/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{east}{\southeast\pgf@y=0pt\relax}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+ \anchor{north west}{\northwest}
+ %
+ \anchor{center}{\pgfpointorigin}
+ \anchor{left}{\pgfpointorigin}
+ \anchor{right}{\pgfpointorigin}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ \behindbackgroundpath{
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@right}{\southeast}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@down}{\southeast}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointpolar{135}{\pgf@circ@res@step}}
+ \pgfpatharc{135}{45}{\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpointpolar{45}{\pgf@circ@res@up}}
+ \pgfpatharc{45}{135}{\pgf@circ@res@up}
+ \pgfclosepath
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{msport}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\southeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
+ \pgf@y=-.5\pgf@y
+ }
+ \savedanchor{\northwest}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{east}{\southeast\pgf@y=0pt\relax}
+ \anchor{south east}{\southeast}
+ \anchor{south}{\southeast\pgf@x=0pt\relax}
+ \anchor{south west}{\southeast\pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+ \anchor{north west}{\northwest}
+ %
+ \anchor{center}{\northwest\pgf@y=0pt\relax}
+ \anchor{left}{\northwest\pgf@y=0pt\relax}
+ \anchor{right}{\southeast\pgf@y=0pt\relax}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr-.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ }
+ \behindbackgroundpath{
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@right}{\southeast}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@down}{\southeast}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.5*\pgf@circ@res@up}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ }
+}
+
+% Legacy antennas (with tails)
+\def\pgf@circ@shift@antenna@xy#1#2{%
+ \pgf@y=\dimexpr\pgf@y+#2\pgf@circ@res@step
+ \pgf@x=\dimexpr\pgf@x+#1\pgf@circ@res@step
+\relax}
+
+% Legacy antenna
+\pgfdeclareshape{antenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=4\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{2}}
+ \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{0}{3}\relax}
+ \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{4}\relax}
+ \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{3}}
+ \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
+ \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
+ \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{0}{4}}
+ \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{4}}
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
+
+ \pgftransformxshift{ -4\pgf@circ@res@step }
+
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+% Legacy TX antenna
+\pgfdeclareshape{txantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=4\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
+ \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
+ \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
+ \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
+ \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{4}{2}}
+ \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
+ \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
+ \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
+ % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
+ \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ }
+}
+
+% Legacy RX antenna
+\pgfdeclareshape{rxantenna}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
+ \pgf@y=4\pgf@circ@res@step
+ }
+ \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
+ \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
+ \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
+ \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
+ \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{4}{2}}
+ \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
+ \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
+ \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
+ \anchor{text}{
+ \northeast
+ \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
+ \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
+ }
+ \behindforegroundpath{
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
+ % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
+ \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{3\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
+ \pgfpatharc{150}{210}{2\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ }
+}
+
+% Legacy match
+\pgfdeclareshape{match}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\northeast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@scaled@Rlen
+ \pgf@x=2\pgf@circ@res@step
+ \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@circ@res@step%
+ }
+ % the center is on the left side of the shape for facility of usage
+ \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\northeast\pgf@y=0pt\pgf@x=0.5\pgf@x\relax}
+ \anchor{west}{\pgfpointorigin}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=0cm\relax}
+ \anchor{south east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south west}{\pgfpointorigin}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@scaled@Rlen
+ \pgf@x=1.5\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \pgf@y=-1.5\ht\pgfnodeparttextbox
+ }
+ \behindforegroundpath{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@scaled@Rlen
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
+ \pgfusepath{fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \endpgfscope
+ }
+}
+
+%%%---------- close: tex/pgfcircmonopoles
+%%%%%%%%%%% Springe nach tex/pgfcircbipoles
+%%%---------- open: tex/pgfcircbipoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%% Generic macro for defining a bipole shape
+% #1 - additional anchors
+% #2 - lower y-size of the bipole (from the center).
+% #3 - #shape is the name of the shape
+% #4 - upper y-size of the bipole (from the center)
+% #5 - width of the bipole
+% #6 - macros drawing the bipole
+%
+\long\def\pgfcircdeclarebipole{%
+ \pgfcircdeclarebipolescaled{default}}
+
+%% Generic macro for defining a bipole shape
+% #1 - scale factor
+% #2 - additional anchors
+% #3 - lower y-size of the bipole (from the center).
+% #4 - #shape is the name of the shape
+% #5 - upper y-size of the bipole (from the center)
+% #6 - width of the bipole
+% #7 - macros drawing the bipole
+%
+\long\def\pgfcircdeclarebipolescaled#1#2#3#4#5#6#7{
+ \pgfdeclareshape{#4shape}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{#1}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor{\northeast}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@y=#5\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=#6\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\northeastborder}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@y=#5\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=#6\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwestborder}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@y=-#3\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
+ \pgf@x=-#6\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
+ }
+ \savedanchor{\southwest}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@y=-#3\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-#6\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor{\centerpoint}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@circ@res@down=-#3\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up=#5\pgf@circ@scaled@Rlen
+ \pgfpointorigin
+ \pgf@y=\pgf@circ@res@up
+ \advance\pgf@y by\pgf@circ@res@down
+ \pgf@y=.5\pgf@y
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{n}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{north east}{
+ \northeast
+ }
+ \anchor{north west}{
+ \northeast
+ \pgf@x=-\pgf@x
+ }
+ \anchor{ne}{
+ \northeast
+ }
+ \anchor{nw}{
+ \northeast
+ \pgf@x=-\pgf@x
+ }
+ \anchor{e}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{s}{
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{south east}{
+ \southwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \southwest
+ }
+ \anchor{se}{
+ \southwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{sw}{
+ \southwest
+ }
+ \anchor{w}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{east}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{south}{
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{west}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{right}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{above}{
+ \northeast
+ \pgf@x=0cm
+ }
+ \anchor{left}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \anchor{below}{
+ \southwest
+ \pgf@x=0cm
+ }
+ \anchor{a}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{b}{
+ \southwest
+ \pgf@y=0cm
+ }
+ \savedanchor{\textanchor}{%
+ \pgf@y=\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \anchor{text}{
+ \textanchor
+ }
+ \anchorborder{%
+ \ifpgf@circuit@bipole@inverted
+ \pgf@circ@res@left=-\pgf@x
+ \pgf@circ@res@up=-\pgf@y
+ \else
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \fi
+ \ifdim\pgf@circ@res@up>0cm
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\northeastborder}
+ \else
+ \southwestborder
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
+ \fi
+ }
+
+ #2
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@zero = 0cm
+ \pgf@circ@res@left = -\pgf@x
+ \pgf@circ@res@right = \pgf@x
+ \southwest
+ \pgf@circ@res@down = \pgf@y
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ #7
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ }
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% anchor adjustment macros
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Extend the border anchor position by the specified factors on the right-top (north east corner)
+% and the left-down (southwest border). Argument must be number (possibly decimal) without sign
+
+\def\pgfcirc@border@extend@full#1#2#3#4{% right, top, left, down
+ \anchorborder{%
+ \ifpgf@circuit@bipole@inverted
+ \pgf@circ@res@left=-\pgf@x
+ \pgf@circ@res@up=-\pgf@y
+ \else
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \fi
+ \ifdim\pgf@circ@res@up>0cm
+ \northeastborder
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{#1\pgf@x}{#2\pgf@y}}
+ \else
+ \southwestborder
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{-#3\pgf@x}{-#4\pgf@y}}
+ \fi
+ }
+}
+
+% Just up and down (very common)
+\def\pgfcirc@border@extend@updown#1#2{\pgfcirc@border@extend@full{1}{#1}{1}{#2}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Standard bipole shapes declarations
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+% Resistive components
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Short circuit
+
+%%% NOTICE that the short is really NOT drawn; we trust the fact that its
+%%% natural length is zero.
+\pgfcircdeclarebipole
+{% fix the anchor border to add a bit of space for voltage and labels
+ % it uses the dummy width and height
+ \anchorborder{%
+ \ifpgf@circuit@bipole@inverted
+ \pgf@circ@res@left=-\pgf@x
+ \pgf@circ@res@up=-\pgf@y
+ \else
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \fi
+ \ifdim\pgf@circ@res@up>0cm
+ \pgf@x=\ctikzvalof{bipoles/short/width}\pgf@circ@Rlen
+ \pgf@y=\ctikzvalof{bipoles/short/height}\pgf@circ@Rlen
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@x}{\pgf@y}}
+ \else
+ \pgf@x=-\ctikzvalof{bipoles/short/width}\pgf@circ@Rlen
+ \pgf@y=-\ctikzvalof{bipoles/short/height}\pgf@circ@Rlen
+ \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{-\pgf@x}{-\pgf@y}}
+ \fi
+ }
+}
+{0}
+{short}
+{0}
+{0}
+{}
+
+%% Open circuit
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/open/height}}
+{open}
+{\ctikzvalof{bipoles/open/height}}
+{\ctikzvalof{bipoles/open/width}}
+{}
+
+% multiwire(s)
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/multiwire/height}}
+{multiwire}
+{\ctikzvalof{bipoles/multiwire/height}}
+{\ctikzvalof{bipoles/multiwire/width}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/multiwire/height}}
+{bmultiwire}
+{\ctikzvalof{bipoles/multiwire/height}}
+{\ctikzvalof{bipoles/multiwire/width}}
+{
+ \pgf@circ@res@other=\ctikzvalof{bipoles/multiwire/spacing}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/multiwire/height}}
+{tmultiwire}
+{\ctikzvalof{bipoles/multiwire/height}}
+{\ctikzvalof{bipoles/multiwire/width}}
+{
+ \pgf@circ@res@other=\ctikzvalof{bipoles/multiwire/spacing}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+2\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+}
+
+%
+%
+%% Generic bipole - used as resistor by some (bleah)
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/generic/height}}
+{generic}
+{\ctikzvalof{bipoles/generic/height}}
+{\ctikzvalof{bipoles/generic/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+%
+% generic crossed, suggested by Radvรกnyi Patrik Tamรกs <patrikradvanyi@gmail.com>
+% inherit "generic" properties
+%
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/generic/height}}
+{xgeneric}
+{\ctikzvalof{bipoles/generic/height}}
+{\ctikzvalof{bipoles/generic/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ % cross it
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+%% Generic empty tunable
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/tgeneric/height}}
+{tgeneric}
+{\ctikzvalof{bipoles/tgeneric/height}}
+{\ctikzvalof{bipoles/tgeneric/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Generic asymmetric bipole
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/ageneric/height}}
+{ageneric}
+{\ctikzvalof{bipoles/ageneric/height}}
+{\ctikzvalof{bipoles/ageneric/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+%% Memristor
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/memristor/height}}
+{memristor}
+{\ctikzvalof{bipoles/memristor/height}}
+{\ctikzvalof{bipoles/memristor/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+%% Photoresistor
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/photoresistor/height 2}}
+{photoresistor}
+{\ctikzvalof{bipoles/photoresistor/height}}
+{\ctikzvalof{bipoles/photoresistor/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Thermistor
+\pgfcircdeclarebipolescaled{resistors}
+{% anchor for labelling the type of dependency
+ \anchor{label}{%
+ \southwest
+ \pgf@x=0.4\pgf@x
+ \pgf@y=1.2\pgf@y
+ }%
+ \pgfcirc@border@extend@updown{1}{1.2}
+}
+{\ctikzvalof{bipoles/thermistor/height}}
+{thermistor}
+{\ctikzvalof{bipoles/thermistor/height}}
+{\ctikzvalof{bipoles/thermistor/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ %\pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ %\endpgfscope
+}
+
+%% Thermistor PTC
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/thermistorptc/height 2}}
+{thermistorptc}
+{\ctikzvalof{bipoles/thermistorptc/height}}
+{\ctikzvalof{bipoles/thermistorptc/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Thermistor NTC
+\pgfcircdeclarebipolescaled{resistors}
+{}
+{\ctikzvalof{bipoles/thermistorntc/height 2}}
+{thermistorntc}
+{\ctikzvalof{bipoles/thermistorntc/height}}
+{\ctikzvalof{bipoles/thermistorntc/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$}
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Generic tunable
+\pgfcircdeclarebipolescaled{resistors}
+{
+ \savedanchor{\wiper}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@ya=\ctikzvalof{bipoles/generic potentiometer/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@ya
+ \pgf@xa=\ctikzvalof{bipoles/generic potentiometer/width}\pgf@circ@scaled@Rlen
+ \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/generic potentiometer/wiper pos}-0.5)*\pgf@xa}
+ }
+ \anchor{wiper}{\wiper}
+ \anchor{W}{\wiper}
+}
+{\ctikzvalof{bipoles/generic potentiometer/height 2}}
+{genericpotentiometer}
+{\ctikzvalof{bipoles/generic potentiometer/height}}
+{\ctikzvalof{bipoles/generic potentiometer/width}}
+{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \pgfextractx{\pgf@circ@res@other}{\wiper}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Zig zag resistores
+\def\pgf@circ@zigzag#1{%
+ \divide \pgf@circ@res@step by \numexpr4*\zigs\relax
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \pgf@circ@count@a=\zigs\relax
+ % first half zig
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}}
+ \pgfmathloop%
+ \advance\pgf@circ@count@a by -1\relax% Loop zigs -1 times
+ \ifnum\pgf@circ@count@a>0
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}}
+ \repeatpgfmathloop%
+ % last zig and a half
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+}
+
+%% Resistor
+\pgfcircdeclarebipolescaled{resistors}
+{
+\savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
+}
+{\ctikzvalof{bipoles/resistor/height}}
+{resistor}
+{\ctikzvalof{bipoles/resistor/height}}
+{\ctikzvalof{bipoles/resistor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgf@circ@zigzag{1}
+}
+
+
+%% Variable resistor
+\pgfcircdeclarebipolescaled{resistors}
+{
+\savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
+}
+{\ctikzvalof{bipoles/vresistor/height}}
+{vresistor}
+{\ctikzvalof{bipoles/vresistor/height}}
+{\ctikzvalof{bipoles/vresistor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/vresistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgf@circ@zigzag{.5}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Potentiometer
+\pgfcircdeclarebipolescaled{resistors}
+{
+ \savedanchor{\wiper}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
+ \pgf@ya=\ctikzvalof{bipoles/potentiometer/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@ya
+ \pgf@xa=\ctikzvalof{bipoles/potentiometer/width}\pgf@circ@scaled@Rlen
+ \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/potentiometer/wiper pos}-0.5)*\pgf@xa}
+ }
+ \anchor{wiper}{\wiper}
+ \anchor{W}{\wiper}
+ \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
+}
+{\ctikzvalof{bipoles/potentiometer/height 2}}
+{potentiometer}
+{\ctikzvalof{bipoles/potentiometer/height}}
+{\ctikzvalof{bipoles/potentiometer/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/potentiometer/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgf@circ@zigzag{1}
+
+ \pgfscope
+ %\pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \pgfextractx{\pgf@circ@res@other}{\wiper}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Resistive sensor
+\pgfcircdeclarebipolescaled{resistors}
+{% anchor for labelling the type of dependency
+ \anchor{label}{\southwest\pgf@x=0.4\pgf@x}%
+ \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
+}
+{\ctikzvalof{bipoles/resistivesens/height}}
+{resistivesens}
+{\ctikzvalof{bipoles/resistivesens/height}}
+{\ctikzvalof{bipoles/resistivesens/width}}
+{%
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistivesens/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgf@circ@zigzag{.5}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-.9\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%%%%%%%%%%%%%%
+%% Capacitors
+%%%%%%%%%%%%%
+
+%% Plain Capacitor
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/capacitor/height}}
+{capacitor}
+{\ctikzvalof{bipoles/capacitor/height}}
+{\ctikzvalof{bipoles/capacitor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+}
+
+%% Capacitive sensor
+\pgfcircdeclarebipolescaled{capacitors}
+{
+ \anchor{label}{\southwest\pgf@x=2.6\pgf@x\pgf@y=1.2\pgf@y}%
+ \pgfcirc@border@extend@full{2.6}{1}{4.4}{1.2}
+}
+{\ctikzvalof{bipoles/capacitor/height}}
+{capacitivesens}
+{\ctikzvalof{bipoles/capacitor/height}}
+{\ctikzvalof{bipoles/capacitor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{2.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-2.6\pgf@circ@res@right}{1.2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-4.4\pgf@circ@res@right}{1.2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Polar Capacitor (DEPRECATED)
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/pcapacitor/height}}
+{polarcapacitor}
+{\ctikzvalof{bipoles/pcapacitor/height}}
+{\ctikzvalof{bipoles/pcapacitor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgftransformrotate{-90}
+ \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+%% Curved capacitor
+% see https://tex.stackexchange.com/questions/509594/polar-capacitor-orientation-in-circuitikz-seems-wrong
+% for a rationale
+%
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/ccapacitor/height}}
+{ccapacitor}
+{\ctikzvalof{bipoles/ccapacitor/height}}
+{\ctikzvalof{bipoles/ccapacitor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+ \ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgftransformrotate{-90}
+ \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}}
+ \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+
+
+
+%% Electrolytic Capacitor
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/ecapacitor/height}}
+{ecapacitor}
+{\ctikzvalof{bipoles/ecapacitor/height}}
+{\ctikzvalof{bipoles/ecapacitor/width}}
+{
+ \pgfsetrectcap
+ % % % Draw plus pole
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ % % Draw minus pole
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{\ctikzvalof{color}}
+ \pgfusepath{draw,fill}
+ \pgfsetfillcolor{\ctikzvalof{color}}
+ % % plus pole annotation
+ \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
+ {\ctikzvalof{bipoles/ecapacitor/font} $+$}
+}
+
+%% Variable Capacitor
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/vcapacitor/height}}
+{vcapacitor}
+{\ctikzvalof{bipoles/vcapacitor/height}}
+{\ctikzvalof{bipoles/vcapacitor/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfusepath{draw}
+}
+
+
+%% Piezoelectric Element
+
+\pgfcircdeclarebipolescaled{capacitors}
+{}
+{\ctikzvalof{bipoles/piezoelectric/height}}
+{piezoelectric}
+{\ctikzvalof{bipoles/piezoelectric/height}}
+{\ctikzvalof{bipoles/piezoelectric/width}}
+{
+ % \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
+ % \divide \pgf@circ@res@step by 5
+
+ %% Outer markings
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %% Inner Box
+ \pgf@circ@res@step = \pgf@circ@res@right \divide \pgf@circ@res@step by 10
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\pgf@circ@res@left+4*\pgf@circ@res@step}{\pgf@circ@res@up-\pgf@circ@res@step}}
+ {\pgfpoint{\pgf@circ@res@right-4*\pgf@circ@res@step}{\pgf@circ@res@down+\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+ \endpgfscope
+}
+
+%%%%%%%%%%%%%%%
+%% Inductors
+%%%%%%%%%%%%%%%
+
+%% cute inductor
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
+ \ctikzvalof{bipoles/cuteinductor/height} :% even
+ -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
+{cuteinductor}
+{\ctikzvalof{bipoles/cuteinductor/height}}
+{\ctikzvalof{bipoles/cuteinductor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% cute inductive sensor
+\pgfcircdeclarebipolescaled{inductors}
+{% anchor for labelling the type of dependency
+ \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}%
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
+ \ctikzvalof{bipoles/cuteinductor/height} :% even
+ -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+ \pgfcirc@border@extend@full{1}{2}{1.6}{2.6}
+}
+{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
+{scuteinductor}
+{\ctikzvalof{bipoles/cuteinductor/height}}
+{\ctikzvalof{bipoles/cuteinductor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% cute choke
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
+ \ctikzvalof{bipoles/cuteinductor/height} :% even
+ -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/cutechoke/lower coil height}}
+{cutechoke}
+{\ctikzvalof{bipoles/cutechoke/height}}
+{\ctikzvalof{bipoles/cutechoke/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/cutechoke/coil aspect}*\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen/(\ctikzvalof{bipoles/cutechoke/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cutechoke/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cutechoke/coils}/2}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/cutechoke/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
+ \pgfusepath{stroke}
+
+ \ifpgf@circuit@bipole@twolineschoke
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
+ \pgfusepath{stroke}
+ \fi
+}
+
+%% variable cute inductor
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
+ \ctikzvalof{bipoles/cuteinductor/height} :% even
+ -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}
+{vcuteinductor}
+{\ctikzvalof{bipoles/vcuteinductor/height}}
+{\ctikzvalof{bipoles/vcuteinductor/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
+ {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
+
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
+ }
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% american inductor
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?%
+ 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even
+ 0) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/americaninductor/height 2}}
+{americaninductor}
+{\ctikzvalof{bipoles/americaninductor/height}}
+{\ctikzvalof{bipoles/americaninductor/width}}
+{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+
+%% american inductive sensor
+\pgfcircdeclarebipolescaled{inductors}
+{% anchor for labelling the type of dependency
+ \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}%
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?%
+ 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even
+ 0) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+ \pgfcirc@border@extend@full{1}{2}{1.6}{2.6}
+}
+{\ctikzvalof{bipoles/americaninductor/height 2}}
+{samericaninductor}
+{\ctikzvalof{bipoles/americaninductor/height}}
+{\ctikzvalof{bipoles/americaninductor/width}}
+{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% variable american inductor
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \savedanchor{\midtap}{%
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@y}{%
+ (mod(\ctikzvalof{bipoles/vamericaninductor/coils},2) ?%
+ 2*\ctikzvalof{bipoles/vamericaninductor/coil height} :% even
+ 0) %odd
+ *\pgf@circ@scaled@Rlen/2
+ }
+ }
+ \anchor{midtap}{\midtap}
+}
+{\ctikzvalof{bipoles/vamericaninductor/height 2}}
+{vamericaninductor}
+{\ctikzvalof{bipoles/vamericaninductor/height}}
+{\ctikzvalof{bipoles/vamericaninductor/width}}
+{
+ \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
+ \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
+ \divide \pgf@circ@res@step by 2
+ \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@scaled@Rlen
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
+ \foreach \x in {1,...,\ctikzvalof{bipoles/vamericaninductor/coils}}
+ {
+ \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
+ }
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Generic bipole, filled - used as inductor by some
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \anchor{midtap}{\northeast\pgf@x=0pt\relax}
+}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{fullgeneric}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{\ctikzvalof{bipoles/fullgeneric/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfusepath{draw,fill}
+}
+
+%% Generic sensor, filled - used as inductive sensor by some
+\pgfcircdeclarebipolescaled{inductors}
+{% anchor for labelling the type of dependency
+ \anchor{label}{\southwest\pgf@x=0.4\pgf@x\pgf@y=2\pgf@y}%
+ \anchor{midtap}{\northeast\pgf@x=0pt\relax}
+ \pgfcirc@border@extend@full{1}{2}{1}{2}
+}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{sfullgeneric}
+{\ctikzvalof{bipoles/fullgeneric/height}}
+{\ctikzvalof{bipoles/fullgeneric/width}}
+{
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw,fill}
+ %\pgfscope
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ %\endpgfscope
+}
+
+%% Generic full tunable
+\pgfcircdeclarebipolescaled{inductors}
+{
+ \anchor{midtap}{\northeast\pgf@x=0pt\relax}
+}
+{\ctikzvalof{bipoles/tfullgeneric/height}}
+{tfullgeneric}
+{\ctikzvalof{bipoles/tfullgeneric/height}}
+{\ctikzvalof{bipoles/tfullgeneric/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
+ \divide \pgf@circ@res@step by 14
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw,fill}
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%%%%%%%%%%%
+%% Battery
+%%%%%%%%%%%
+
+%% Battery
+\pgfcircdeclarebipolescaled{batteries}
+{}
+{\ctikzvalof{bipoles/battery/height}}
+{battery}
+{\ctikzvalof{bipoles/battery/height}}
+{\ctikzvalof{bipoles/battery/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 6
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \ifpgf@circ@fixbatteries
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+}
+
+
+%% Battery 1 % poles with equl thickness
+
+\pgfcircdeclarebipolescaled{batteries}
+{}
+{\ctikzvalof{bipoles/battery1/height}}
+{battery1}
+{\ctikzvalof{bipoles/battery1/height}}
+{\ctikzvalof{bipoles/battery1/width}}
+{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \ifpgf@circ@fixbatteries
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+}
+
+%% Battery 2 % negative pole thicker
+
+\pgfcircdeclarebipolescaled{batteries}
+{}
+{\ctikzvalof{bipoles/battery2/height}}
+{battery2}
+{\ctikzvalof{bipoles/battery2/height}}
+{\ctikzvalof{bipoles/battery2/width}}
+{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \ifpgf@circ@fixbatteries
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{3\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{3\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%
+%% Round and diamond sources
+%%%%%%%%%%%
+
+%% Independent voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsource/height}}
+{vsource}
+{\ctikzvalof{bipoles/vsource/height}}
+{\ctikzvalof{bipoles/vsource/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+%% To change the internal symbols of the voltage source american style
+\ctikzset{bipoles/vsourceam/inner plus/.initial={$+$}}
+\ctikzset{bipoles/vsourceam/inner minus/.initial={$-$}}
+%% Independent voltage source - American style
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsourceam/height}}
+{vsourceAM}
+{\ctikzvalof{bipoles/vsourceam/height}}
+{\ctikzvalof{bipoles/vsourceam/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifpgf@circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner plus}}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner minus}}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner minus}}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner plus}}
+ \fi
+}
+
+%% Independent sinusoidal voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsourcesin/height}}
+{vsourcesin}
+{\ctikzvalof{bipoles/vsourcesin/height}}
+{\ctikzvalof{bipoles/vsourcesin/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Square Voltage source - contributed by Alistair Kwan
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsourcesquare/height}}
+{vsourcesquare}
+{\ctikzvalof{bipoles/vsourcesquare/height}}
+{\ctikzvalof{bipoles/vsourcesquare/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% Triangle Voltage source - contributed by Ralf Farkas
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsourcetri/height}}
+{vsourcetri}
+{\ctikzvalof{bipoles/vsourcetri/height}}
+{\ctikzvalof{bipoles/vsourcetri/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% PV Source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/pvsource/height}}
+{pvsource}
+{\ctikzvalof{bipoles/pvsource/height}}
+{\ctikzvalof{bipoles/pvsource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ %Arrow Part
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty Source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/esource/height}}
+{esource}
+{\ctikzvalof{bipoles/esource/height}}
+{\ctikzvalof{bipoles/esource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+}
+
+%% DC Current Source with open shape
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/dcisource/height}}
+{dcisource}
+{\ctikzvalof{bipoles/dcisource/height}}
+{\ctikzvalof{bipoles/dcisource/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@maybefill
+ \edef\@@angle{\ctikzvalof{bipoles/dcisource/angle}}
+ \pgfpathmoveto{\pgfpointpolar{\@@angle}{\pgf@circ@res@up}}
+ \pgfpatharc{\@@angle}{-\@@angle}{\pgf@circ@res@up}
+ \pgfpathmoveto{\pgfpointpolar{180-\@@angle}{\pgf@circ@res@up}}
+ \pgfpatharc{180-\@@angle}{180+\@@angle}{\pgf@circ@res@up}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% DC-Voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/dcvsource/height}}
+{dcvsource}
+{\ctikzvalof{bipoles/dcvsource/height}}
+{\ctikzvalof{bipoles/dcvsource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
+ \pgfusepath{draw}
+}
+
+%% Independent current source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isource}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+}
+
+%% Independent double oo source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/oosource/height}}
+{oosource}
+{\ctikzvalof{bipoles/oosource/height}}
+{\ctikzvalof{bipoles/oosource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
+ \pgf@circ@maybefill
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
+ \pgf@circ@draworfill
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
+ \pgfusepath{draw}
+}
+
+% % % winding symbols
+% triangle
+\def\pgf@circ@delta#1{
+ \pgfscope
+ \pgftransformscale{-.01\pgf@circ@res@left*#1}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \pgftransformrotate{-\pgfcircmathresult}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0}{.866\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgfusepath{stroke}
+ \endpgfscope
+}
+
+% star
+\def\pgf@circ@wye#1{
+ \pgfscope
+ \pgftransformscale{-.015\pgf@circ@res@left*#1}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \pgftransformrotate{-\pgfcircmathresult}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpointpolar{-30}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpointpolar{-150}{\pgf@circ@res@down}}
+ \pgfusepath{stroke}
+ \endpgfscope
+}
+
+% zigzag
+\def\pgf@circ@zig#1{
+ \pgfscope
+ \pgftransformscale{-.015\pgf@circ@res@left*#1}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \pgftransformrotate{-\pgfcircmathresult}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpointpolar{90}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{60}{\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpointpolar{210}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{0}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpointpolar{330}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{-60}{\pgf@circ@res@up}}
+ \pgfusepath{stroke}
+ \endpgfscope
+}
+
+% % % % round three-phase transformer
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/oosourcetrans/height}}
+{oosourcetrans}
+{\ctikzvalof{bipoles/oosourcetrans/height}}
+{\ctikzvalof{bipoles/oosourcetrans/width}}
+{
+
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
+ \pgf@circ@maybefill
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@right}{0}}
+ {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
+ \pgf@circ@draworfill
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@left}{0}}
+ {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
+ \pgfusepath{draw}
+
+
+% % % % draw inner symbols
+
+ %%primary winding
+ \ifpgf@circ@prim@delta
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
+ \pgf@circ@delta{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@prim@wye
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
+ \pgf@circ@wye{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@prim@zig
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
+ \pgf@circ@zig{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
+ \endpgfscope
+ \fi\fi\fi
+
+ %%secondary winding
+ \ifpgf@circ@sec@delta
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
+ \pgf@circ@delta{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@sec@wye
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
+ \pgf@circ@wye{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@sec@zig
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
+ \pgf@circ@zig{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
+ \endpgfscope
+ \fi\fi\fi
+}
+
+
+% % % % ooosource for three phase transformer
+\pgfcircdeclarebipolescaled{sources}
+{
+ \anchor{right}{
+ \northeast
+ \pgf@y=0pt
+ \pgfmathparse{
+ \ctikzvalof{bipoles/ooosource/circleoffset}* sin(30) +
+ %%the sqrt must be > 0, the circles have to intersect
+ sqrt(
+ pow(\ctikzvalof{bipoles/ooosource/circlesize},2) -
+ pow(\ctikzvalof{bipoles/ooosource/circleoffset}*cos(30),2)
+ )
+ }
+ \pgf@x=\pgfmathresult\pgf@x
+ }
+ \anchor{east}{
+ \northeast
+ \pgf@y=0pt
+ }
+ \savedanchor{\centerprim}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen
+ \pgf@y=0pt
+ \pgf@x=.5\pgf@circ@scaled@Rlen
+ }
+ \anchor{centerprim}{
+ \centerprim
+ }
+ \savedanchor{\centersec}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen
+ \pgfpointpolar{60}{.5\pgf@circ@scaled@Rlen}
+ \pgf@y=-\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{centersec}{
+ \centersec
+ }
+ \savedanchor{\centertert}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen
+ \pgfpointpolar{60}{.5\pgf@circ@scaled@Rlen}
+ \pgf@y=\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{centertert}{
+ \centertert
+ }
+
+ % add some anchors in case the are needed :)
+ \anchor{prim1}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centerprim}{\pgfpointpolar{135}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{prim2}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centerprim}{\pgfpointpolar{-135}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{sec1}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centersec}{\pgfpointpolar{0}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{sec2}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centersec}{\pgfpointpolar{45}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{sec3}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centersec}{\pgfpointpolar{90}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{tert1}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centertert}{\pgfpointpolar{0}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{tert2}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centertert}{\pgfpointpolar{-45}{.5\pgf@circ@scaled@Rlen}}
+ }
+ \anchor{tert3}{
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
+ \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
+ \pgfpointadd{\centertert}{\pgfpointpolar{-90}{.5\pgf@circ@scaled@Rlen}}
+ }
+}
+{\ctikzvalof{bipoles/ooosource/height}}
+{ooosource}
+{\ctikzvalof{bipoles/ooosource/height}}
+{\ctikzvalof{bipoles/ooosource/height}}
+{
+% \pgf@circ@res@other = \ctikzvalof{bipoles/ooosource/vectorgroup} \pgf@circ@scaled@Rlen
+
+% % filling
+% left
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@left}{0}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left}
+ \pgf@circ@maybefill
+
+ % up
+ \pgfscope
+ \pgfpointorigin
+ \pgfpathcircle{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}
+ \pgf@circ@maybefill
+ \endpgfscope
+% down
+ \pgfscope
+ \pgfpointorigin
+ \pgfpathcircle{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+% drawing
+ % left
+ \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@left}{0}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left}
+ \pgfusepath{draw}
+
+ % up
+ \pgfscope
+ \pgfpointorigin
+ \pgfpathcircle{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}
+ \pgfusepath{draw}
+ \endpgfscope
+
+% % % draw inner symbols
+
+% % primary winding
+ \ifpgf@circ@prim@delta
+ \pgfscope
+ \pgftransformxshift{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left}
+ \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@prim@wye
+ \pgfscope
+ \pgftransformxshift{.6\pgf@circ@res@left}
+ \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@prim@zig
+ \pgfscope
+ \pgftransformxshift{.6\pgf@circ@res@left}
+ \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+ \fi\fi\fi
+
+% % secondary winding
+ \ifpgf@circ@sec@delta
+ \pgfscope
+ \pgfpointorigin
+ \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
+ \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@sec@wye
+ \pgfscope
+ \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
+ \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@sec@zig
+ \pgfscope
+ \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
+ \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+ \fi\fi\fi
+
+% % tertiary winding
+ \ifpgf@circ@tert@delta
+ \pgfscope
+ \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
+ \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@tert@wye
+ \pgfscope
+ \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
+ \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+
+ \else\ifpgf@circ@tert@zig
+ \pgfscope
+ \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
+ \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
+ \endpgfscope
+ \fi\fi\fi
+}
+
+%% Independent current source - American
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isourceam/height}}
+{isourceAM}
+{\ctikzvalof{bipoles/isourceam/height}}
+{\ctikzvalof{bipoles/isourceam/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% Independent sinusoidal current source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isourcesin}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty controlled source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/ecsource/height}}
+{ecsource}
+{\ctikzvalof{bipoles/ecsource/height}}
+{\ctikzvalof{bipoles/ecsource/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+}
+
+%% Controlled voltage source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsource/height}}
+{cvsource}
+{\ctikzvalof{bipoles/cvsource/height}}
+{\ctikzvalof{bipoles/cvsource/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+%% To change the internal symbols of the controlled voltage source american style
+\ctikzset{bipoles/cvsourceam/inner plus/.initial={$+$}}
+\ctikzset{bipoles/cvsourceam/inner minus/.initial={$-$}}
+%% Controlled voltage source - American
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsourceam/height}}
+{cvsourceAM}
+{\ctikzvalof{bipoles/cvsourceam/height}}
+{\ctikzvalof{bipoles/cvsourceam/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifpgf@circ@oldvoltagedirection
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{\ctikzvalof{bipoles/cvsourceam/inner plus}}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{\ctikzvalof{bipoles/cvsourceam/inner minus}}
+ \else
+ \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{\ctikzvalof{bipoles/cvsourceam/inner minus}}
+ \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{\ctikzvalof{bipoles/cvsourceam/inner plus}}
+ \fi
+}
+
+%% Controlled sinusoidal voltage source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{cvsourcesin}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{\ctikzvalof{bipoles/cvsourcesin/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Controlled sinusoidal current source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{cisourcesin}
+{\ctikzvalof{bipoles/cvsourcesin/height}}
+{\ctikzvalof{bipoles/cvsourcesin/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgfscope
+ \pgftransformrotate{90}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Controlled current source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cisource/height}}
+{cisource}
+{\ctikzvalof{bipoles/cisource/height}}
+{\ctikzvalof{bipoles/cisource/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+%% Controlled current source - American
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cisourceam/height}}
+{cisourceAM}
+{\ctikzvalof{bipoles/cisourceam/height}}
+{\ctikzvalof{bipoles/cisourceam/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%% Cute Independent voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsource/height}}
+{vsourceC}
+{\ctikzvalof{bipoles/vsource/height}}
+{\ctikzvalof{bipoles/vsource/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Cute Independent current source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isourceC}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Cute Controlled voltage source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cvsource/height}}
+{cvsourceC}
+{\ctikzvalof{bipoles/cvsource/height}}
+{\ctikzvalof{bipoles/cvsource/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Cute Controlled current source
+\pgfcircdeclarebipolescaled{csources}
+{}
+{\ctikzvalof{bipoles/cisource/height}}
+{cisourceC}
+{\ctikzvalof{bipoles/cisource/height}}
+{\ctikzvalof{bipoles/cisource/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@draworfill
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@down}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%% Noise voltage source
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/vsource/height}}
+{vsourceN}
+{\ctikzvalof{bipoles/vsource/height}}
+{\ctikzvalof{bipoles/vsource/width}}
+{
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ %
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax
+ \edef\pgf@noise@temp{dashed}
+ \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}}
+ \ifx\pgf@noise@temp\pgf@noise@fill
+ % fillable in this case
+ \pgf@circ@draworfillandclip
+ \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thinner\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ %
+ \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \else
+ \pgfsetfillcolor{\pgf@noise@fill}
+ \pgfusepath{draw,fill}
+ \fi
+ \endpgfscope
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+%% Noise current source
+
+\pgfcircdeclarebipolescaled{sources}
+{}
+{\ctikzvalof{bipoles/isource/height}}
+{isourceN}
+{\ctikzvalof{bipoles/isource/height}}
+{\ctikzvalof{bipoles/isource/width}}
+{
+ \pgfpointorigin
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ %
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax
+ \edef\pgf@noise@temp{dashed}
+ \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}}
+ \ifx\pgf@noise@temp\pgf@noise@fill
+ % fillable in this case
+ \pgf@circ@draworfillandclip
+ \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thinner\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ %
+ \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \else
+ \pgfsetfillcolor{\pgf@noise@fill}
+ \pgfusepath{draw,fill}
+ \fi
+ \endpgfscope
+ \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
+ \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
+ \pgfsetroundcap\pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%%
+%% Diodes
+%%%%%%%%%%%%%%
+
+%% Black generic diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fulldiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Black Zener diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black alternative zigzag Zener diode
+\pgfcircdeclarebipolescaled{diodes}
+{% fix the anchor border
+ \pgfcirc@border@extend@updown{1.3}{1.3}
+}
+{\ctikzvalof{bipoles/diode/height}}
+{fullzzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Black Schottky diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fullsdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Black tunnel diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{fulltdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%
+% draw LED arrows
+%
+\def\pgf@circ@draw@ledarrows{%
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latexslim}
+ \ifpgf@led@fliparrows
+ \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-0.6\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@right}{0.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{1.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \else
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \fi
+}
+%
+% ---and photodiode arrows
+%
+\def\pgf@circ@draw@pdarrows{%
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsstart{latexslim}
+ \ifpgf@pd@fliparrows
+ \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-0.6\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@right}{0.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{1.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \else
+ \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \fi
+}
+%% Black light emitting diode
+\pgfcircdeclarebipolescaled{diodes}
+{% fix the anchor border
+ \pgfcirc@border@extend@updown{1.8}{1}
+}
+{\ctikzvalof{bipoles/diode/height}}
+{fulllediode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgf@circ@draw@ledarrows
+}
+
+%% Black photodiode
+\pgfcircdeclarebipolescaled{diodes}
+{% fix the anchor border
+ \pgfcirc@border@extend@updown{1.8}{1}
+}
+{\ctikzvalof{bipoles/diode/height}}
+{fullpdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgf@circ@draw@pdarrows
+}
+
+%% Black varcap
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/varcap/height}}
+{fullvarcap}
+{\ctikzvalof{bipoles/varcap/height}}
+{\ctikzvalof{bipoles/varcap/width}}
+{
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfusepath{draw,fill}
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Code for the diode triangle
+\def\pgf@circ@basicdiodeshape{
+ % \pgfscope
+ \pgftransformxshift{\pgf@circ@res@left}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfscope
+ % to allow filling, we need to draw explicitly the stroke here.
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \ifpgf@circuit@bipole@strokedsymbol
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+ % \endpgfscope
+}
+
+%% Empty generic diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptydiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty Zener diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptyzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty alternative zigzag Zener diode
+\pgfcircdeclarebipolescaled{diodes}
+{% fix the anchor border
+ \pgfcirc@border@extend@updown{1.3}{1.3}
+}
+{\ctikzvalof{bipoles/diode/height}}
+{emptyzzdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%% Empty Schottky diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptysdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+}
+
+%% Empty tunnel diode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/diode/height}}
+{emptytdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Empty light emitting diode
+\pgfcircdeclarebipolescaled{diodes}
+{% fix the anchor border
+ \pgfcirc@border@extend@updown{1.8}{1}
+}
+{\ctikzvalof{bipoles/diode/height}}
+{emptylediode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgf@circ@draw@ledarrows
+}
+
+%% Empty photodiode
+\pgfcircdeclarebipolescaled{diodes}
+{% fix the anchor border
+ \pgfcirc@border@extend@updown{1.8}{1}
+}
+{\ctikzvalof{bipoles/diode/height}}
+{emptypdiode}
+{\ctikzvalof{bipoles/diode/height}}
+{\ctikzvalof{bipoles/diode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope
+ \pgf@circ@basicdiodeshape
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgf@circ@draw@pdarrows
+}
+
+%% Empty varcap
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/varcap/height}}
+{emptyvarcap}
+{\ctikzvalof{bipoles/varcap/height}}
+{\ctikzvalof{bipoles/varcap/width}}
+{
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgfsetlinewidth{\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ % \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfscope
+ % to allow filling, we need to draw explicitily the stroke here.
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \ifpgf@circuit@bipole@strokedsymbol
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+ %
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Empty bidirectionaldiode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{emptybidirectionaldiode}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{\ctikzvalof{bipoles/bidirectionaldiode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgf@circ@draworfill
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%% Full bidirectionaldiode
+\pgfcircdeclarebipolescaled{diodes}
+{}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{fullbidirectionaldiode}
+{\ctikzvalof{bipoles/bidirectionaldiode/height}}
+{\ctikzvalof{bipoles/bidirectionaldiode/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw, fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%% Black thyristor
+\pgfcircdeclarebipolescaled{diodes}
+{
+ \anchor{gate}{\northeast}
+ \anchor{anode}{\southwest\pgf@y=0cm}
+ \anchor{G}{\northeast}
+ \anchor{cathode}{\northeast\pgf@y=0cm }
+}
+{\ctikzvalof{tripoles/thyristor/height 2}}
+{fullthyristor}
+{\ctikzvalof{tripoles/thyristor/height}}
+{\ctikzvalof{tripoles/thyristor/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+
+}
+
+%% Empty thyristor
+
+\pgfcircdeclarebipolescaled{diodes}
+{
+ \anchor{gate}{\northeast}
+ \anchor{anode}{\southwest\pgf@y=0cm}
+ \anchor{G}{\northeast}
+ \anchor{cathode}{\northeast\pgf@y=0cm }
+}
+{\ctikzvalof{tripoles/thyristor/height 2}}
+{emptythyristor}
+{\ctikzvalof{tripoles/thyristor/height}}
+{\ctikzvalof{tripoles/thyristor/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
+
+ \pgfscope
+ \pgftransformxshift{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+
+ \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfscope
+ % to allow filling, we need to draw explicitily the stroke here.
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \ifpgf@circuit@bipole@strokedsymbol
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%% Empty triac
+\pgfcircdeclarebipolescaled{diodes}
+{
+ \anchor{gate}{\northeast}
+ \anchor{anode}{\southwest\pgf@y=0cm}
+ \anchor{G}{\northeast}
+ \anchor{cathode}{\northeast\pgf@y=0cm }
+}
+{\ctikzvalof{tripoles/triac/height}}
+{emptytriac}
+{\ctikzvalof{tripoles/triac/height}}
+{\ctikzvalof{tripoles/triac/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgf@circ@draworfill
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%% Full triac
+\pgfcircdeclarebipolescaled{diodes}
+{
+ \anchor{gate}{\northeast}
+ \anchor{anode}{\southwest\pgf@y=0cm}
+ \anchor{G}{\northeast}
+ \anchor{cathode}{\northeast\pgf@y=0cm }
+}
+{\ctikzvalof{tripoles/triac/height}}
+{fulltriac}
+{\ctikzvalof{tripoles/triac/height}}
+{\ctikzvalof{tripoles/triac/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
+ \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
+
+ \pgfusepath{draw,fill}
+
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%
+%% switches
+%%%%%%%%%%%%%
+
+%% (Closing) SPST
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/spst/depth}}
+{cspst}
+{\ctikzvalof{bipoles/spst/height}}
+{\ctikzvalof{bipoles/spst/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpointpolar{90}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{90}{-20}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Opening SPST
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/spst/depth}}
+{ospst}
+{\ctikzvalof{bipoles/spst/height}}
+{\ctikzvalof{bipoles/spst/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{-10}{90}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfsetbeveljoin
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% Normal open Switch
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/nos/depth}}
+{nos}
+{\ctikzvalof{bipoles/nos/height}}
+{\ctikzvalof{bipoles/nos/width}}
+{
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+}
+
+%% Normal closed Switch
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/ncs/depth}}
+{ncs}
+{\ctikzvalof{bipoles/ncs/height}}
+{\ctikzvalof{bipoles/ncs/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% Push Button
+\pgfcircdeclarebipolescaled{switches}
+{
+ \anchor{tip}{\northeast\pgf@x=0pt\relax}
+}
+{\ctikzvalof{bipoles/pushbutton/height 2}}
+{pushbutton}
+{\ctikzvalof{bipoles/pushbutton/height}}
+{\ctikzvalof{bipoles/pushbutton/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+
+%% Normally closed Push Button
+\pgfcircdeclarebipolescaled{switches}
+{
+ \anchor{tip}{\northeast\pgf@x=0pt\relax}
+}
+{\ctikzvalof{bipoles/pushbutton/height 2}}
+{ncpushbutton}
+{\ctikzvalof{bipoles/pushbutton/height}}
+{\ctikzvalof{bipoles/pushbutton/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ % Warning, if the nodes will have a class, we have to touch this.
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp}}
+ \pgfpathmoveto{\pgfpoint{0}{-\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ %
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+%% Push Button (normally closed but now open :-) see
+%% https://github.com/circuitikz/circuitikz/issues/128#issuecomment-731771299
+\pgfcircdeclarebipolescaled{switches}
+{
+ \anchor{tip}{
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \northeast\divide\pgf@y by 2\advance\pgf@y by \pgf@circ@res@temp
+ \pgf@x=0pt\relax
+ }
+}
+{\ctikzvalof{bipoles/pushbutton/height 2}}
+{pushbuttonc}
+{\ctikzvalof{bipoles/pushbutton/height}}
+{\ctikzvalof{bipoles/pushbutton/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp}}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up/2+\pgf@circ@res@temp}}
+ \pgfusepath{draw}
+
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+
+%% Normally closed Push Button now open
+\pgfcircdeclarebipolescaled{switches}
+{
+ \anchor{tip}{
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \northeast\divide\pgf@y by 2\advance\pgf@y by \pgf@circ@res@temp
+ \pgf@x=0pt\relax
+ }
+}
+{\ctikzvalof{bipoles/pushbutton/height 2}}
+{ncpushbuttono}
+{\ctikzvalof{bipoles/pushbutton/height}}
+{\ctikzvalof{bipoles/pushbutton/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ % Warning, if the nodes will have a class, we have to touch this.
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up/2}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@up/2}}
+ \pgfpathmoveto{\pgfpoint{0}{-\pgf@circ@res@up/2}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up/2+\pgf@circ@res@temp}}
+ \pgfusepath{draw}
+ %
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
+}
+%%% reed switches
+\pgfcircdeclarebipolescaled{switches}
+{}
+{\ctikzvalof{bipoles/reed/depth}}
+{reed}
+{\ctikzvalof{bipoles/reed/height}}
+{\ctikzvalof{bipoles/reed/width}}
+{
+ % this is designed to be the same as a "nos".
+ \pgfmathsetmacro{\@@tmpx}{0.9*\ctikzvalof{bipoles/nos/width}/\ctikzvalof{bipoles/reed/width}}
+ \pgfmathsetmacro{\@@tmpy}{\ctikzvalof{bipoles/nos/height}/\ctikzvalof{bipoles/reed/height}}
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ % eclosure
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@up}{\pgf@circ@res@up}}
+ \pgfpatharc{90}{-90}{\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@up}{-\pgf@circ@res@up}}
+ \pgfpatharc{270}{90}{\pgf@circ@res@up}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ % switch
+ \pgfpathmoveto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{\@@tmpy\pgf@circ@res@up}}
+ % connection lines
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ % connection lines
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+}
+
+% cute switch "to" shapes help function
+% #1 -> name
+% #2 -> barposition
+% #3 -> arrowcode
+\long\def\pgfcircdeclarecutesw#1#2#3{
+ \pgfcircdeclarebipolescaled{switches}
+ {
+ \savedanchor\midlever{
+ % these values are calculated when we create the definition of the shape.
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgf@circ@res@down = -.5\pgf@y
+ \pgf@circ@res@up = .5\pgf@y
+ \pgfextracty{\pgf@circ@res@other}{#2}
+ \pgf@x=0pt
+ \pgf@y=.5\pgf@circ@res@other
+ }
+ % radius of the connector
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ % If cnnecting nodes are scaled, we have to modify this
+ \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % shape type
+ \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
+ % mid of the lever, to stack switches
+ \anchor{mid}{\midlever}
+ \anchor{cout}{\northeast \pgf@y=0cm}
+ \anchor{cin}{\southwest\pgf@y=0cm}
+ \anchor{out}{\northeast \pgf@y=0cm\advance\pgf@x by \radius}
+ \anchor{in}{\southwest\pgf@y=0cm\advance\pgf@x by -\radius}
+ }
+ {\ctikzvalof{bipoles/cuteswitch/height 2}}
+ {#1}
+ {\ctikzvalof{bipoles/cuteswitch/height}}
+ {\ctikzvalof{bipoles/cuteswitch/width}}{
+ \pgfscope
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ % If cnnecting nodes are scaled, we have to modify this
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgfsetlinewidth{2\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{#2}
+ \pgfsetroundcap\pgfusepath{draw}
+ \endpgfscope
+ \pgfscope % arrow
+ #3
+ \endpgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{draw}}
+ \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out}{\pgfusepath{draw}}
+ }
+}
+
+%% closed cute switch
+\pgfcircdeclarecutesw{cuteclosedswitch}
+ {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
+ {}
+
+%% open cute switch
+\pgfcircdeclarecutesw{cuteopenswitch}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ {}
+
+%% closing cute switch
+\pgfcircdeclarecutesw{cuteclosingswitch}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ {
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{70}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{70}{-10}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+ }
+
+%% opening cute switch
+\pgfcircdeclarecutesw{cuteopeningswitch}
+ {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
+ {
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
+ \pgfpatharc{-10}{60}{1.2\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+ }
+
+%%%%%%%%%%%%%%%%%
+%% Instruments
+%%%%%%%%%%%%%%%%%
+
+% % METERINGSHAPE
+\long\def\drawmeteringcircle{
+ \def\pgf@circ@temp{right}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \def\pgf@circ@temp{below}
+ \ifx\tikz@res@label@pos\pgf@circ@temp
+ \pgf@circ@res@step=-1.2\pgf@circ@res@up
+ \else
+ \pgf@circ@res@step=1.2\pgf@circ@res@up
+ \fi
+ \fi
+ %draw connections to circle
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ %draw circle
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgf@circ@draworfill
+ \endpgfscope
+ %draw arrow
+ \pgfscope
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%AMPEREMETER
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/ammeter/height}}
+{ammeter}
+{\ctikzvalof{bipoles/ammeter/height}}
+{\ctikzvalof{bipoles/ammeter/width}}
+{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\pgf@circ@font@bold{A}}{}{}
+}
+%OHMMETER
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/ohmmeter/height}}
+{ohmmeter}
+{\ctikzvalof{bipoles/ohmmeter/height}}
+{\ctikzvalof{bipoles/ohmmeter/width}}
+{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
+}
+%VOLTMETER
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/voltmeter/height}}
+{voltmeter}
+{\ctikzvalof{bipoles/voltmeter/height}}
+{\ctikzvalof{bipoles/voltmeter/width}}
+{
+ \drawmeteringcircle
+ \pgfnode{circle}{center}{\pgf@circ@font@bold{V}}{}{}
+
+}
+
+% oscilloscope, suggested by @nobrl https://github.com/circuitikz/circuitikz/issues/176
+\pgfcircdeclarebipolescaled{instruments}
+{
+ \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
+ \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/oscope/height}}
+{oscope}
+{\ctikzvalof{bipoles/oscope/height}}
+{\ctikzvalof{bipoles/oscope/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\southwest}
+ \pgfextracty{\pgf@circ@res@down}{\southwest}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfscope
+ \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ % this would create a round (analog?) scope...
+ % \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ % get the rotation
+ \ifpgf@circuit@straightinstruments
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \else
+ \edef\rot{0}
+ \fi
+ % and unrotate the scope
+ \pgfscope
+ \pgftransformrotate{\rot}
+ % grid
+ \pgfscope
+ \pgfsetlinewidth{0.5\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfpathgrid[stepx=\pgf@circ@res@step, stepy=\pgf@circ@res@step]%
+ {\pgfpoint{0.75\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ {\pgfpoint{0.75\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfsetstrokeopacity{0.5}
+ \pgfusepath{draw}
+ \endpgfscope
+ % function displayed, thanks to
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% generic round meter with always horizontal text, no arrow
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/esource/height}}
+{rmeter}
+{\ctikzvalof{bipoles/esource/height}}
+{\ctikzvalof{bipoles/esource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ % draw the text label
+ % get the rotation
+ \ifpgf@circuit@straightinstruments
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \else
+ \edef\rot{0}
+ \fi
+ % and unrotate the scope
+ \pgfscope
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgftransformrotate{\rot}
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+ \endpgfscope
+}
+
+% generic round meter with always horizontal text, with arrow
+\pgfcircdeclarebipolescaled{instruments}
+{}
+{\ctikzvalof{bipoles/esource/height}}
+{rmeterwa}
+{\ctikzvalof{bipoles/esource/height}}
+{\ctikzvalof{bipoles/esource/width}}
+{
+ \pgfpointorigin
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ % draw the text label
+ % get the rotation
+ \ifpgf@circuit@straightinstruments
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \else
+ \edef\rot{0}
+ \fi
+ % and unrotate the scope
+ \pgfscope
+ \pgftransformrotate{\rot}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ % arrow: create a center hole to have better visual
+ \pgfscope
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ % next open a circle into it
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{.6\pgf@circ@res@up}}{\pgfpoint{.6\pgf@circ@res@left}{0}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfsetarrowsend{latexslim}
+ % the arrow is better if it has a bit of breath and it's not 45ยบ
+ \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@right}{1.2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgftext[center]{\ctikzvalof{bipoles/twoport/text}}
+ \endpgfscope
+}
+
+% generic square meter with always horizontal text
+\pgfcircdeclarebipolescaled{instruments}
+{
+ \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
+ \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/smeter/height}}
+{smeter}
+{\ctikzvalof{bipoles/smeter/height}}
+{\ctikzvalof{bipoles/smeter/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\southwest}
+ \pgfextracty{\pgf@circ@res@down}{\southwest}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfscope
+ \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ % get the rotation
+ \ifpgf@circuit@straightinstruments
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \else
+ \edef\rot{0}
+ \fi
+ % and unrotate the scope
+ \pgfscope
+ \pgftransformrotate{\rot}
+ % the metering window
+ \pgfscope
+ \def\@starta{105}\def\@stopa{75}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftransformshift{\pgfpoint{0pt}{-1.8\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{\@starta}{2\pgf@circ@res@up}}
+ \pgfpatharc{\@starta}{\@stopa}{2\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
+ \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
+ \pgfclosepath
+ \pgfpathmoveto{\pgfpointpolar{80}{2\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{80}{2.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgftext[center, y=0.5\pgf@circ@res@down]{\ctikzvalof{bipoles/twoport/text}}
+ \endpgfscope
+}
+
+% probes qucs style:
+% #1 : name
+% #2 : extra code
+\long\def\pgfcirc@qucsprobe#1#2{
+ \pgfcircdeclarebipolescaled{instruments}
+ {
+ \anchor{v+}{\southwest\pgf@x=0.6\pgf@x}
+ \anchor{v-}{\southwest\pgf@x=-0.6\pgf@x}
+ % put the node text above and centered
+ \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+ }
+ {\ctikzvalof{bipoles/qmeter/depth}}
+ {#1}
+ {\ctikzvalof{bipoles/qmeter/height}}
+ {\ctikzvalof{bipoles/qmeter/width}}
+ {
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\southwest}
+ \pgfextracty{\pgf@circ@res@down}{\southwest}
+ \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
+ \pgfscope
+ \pgfscope
+ \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \def\@starta{103}\def\@stopa{77}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{0pt}{-1.7\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{\@starta}{2.1\pgf@circ@res@up}}
+ \pgfpatharc{\@starta}{\@stopa}{2.1\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
+ \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
+ \pgfclosepath
+ \pgfpathmoveto{\pgfpointpolar{83}{2.1\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointpolar{83}{2.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgf@circ@draworfill
+ \endpgfscope
+ #2
+ \endpgfscope
+ }
+}
+
+\pgfcirc@qucsprobe{qiprobe}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \pgfnode{currarrow}{center}{}{}{}
+}
+
+\pgfcirc@qucsprobe{qvprobe}{
+ \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{0pt}}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
+ \pgfusepath{draw}
+ \pgfscope
+ % "+" and "-", drawn so that they scale correctly
+ \pgfsetlinewidth{2\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-1.5\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-3.5\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+\pgfcirc@qucsprobe{qpprobe}{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \pgfnode{currarrow}{center}{}{}{}
+ \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{-4\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{-4\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfscope
+ % "+" and "-", drawn so that they scale correctly
+ \pgfsetlinewidth{2\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-2\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-4\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right-4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% current loop for oscope and similar: stylized
+\pgfcircdeclarebipolescaled{instruments}
+{
+ \anchor{i}{\northeast\pgf@x=0pt\relax}
+ \anchor{text}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/iloop/height}}
+{iloop}
+{\ctikzvalof{bipoles/iloop/height}}
+{\ctikzvalof{bipoles/iloop/width}}
+{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@down=-\pgf@circ@res@up
+ \pgf@circ@res@left=-\pgf@circ@res@right
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcolor{\ctikzvalof{color}}
+ % external ellipse
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ % next the opening to the left
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
+ {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathellipse{\pgfpointorigin}{
+ \pgfpoint{0pt}{0.8\pgf@circ@res@up}}{
+ \pgfpoint{0.4\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \endpgfscope
+ % internal wire
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % and the contact line up
+ \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% current loop for oscope and similar: real (double connection)
+\pgfcircdeclarebipolescaled{instruments}
+{
+ \anchor{i+}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@step=0.4\pgf@circ@res@right
+ \pgf@circ@res@other=0.8\pgf@circ@res@up
+ \pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgf@y=\pgf@circ@res@up
+ }
+ \anchor{i-}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@step=0.4\pgf@circ@res@right
+ \pgf@circ@res@other=0.8\pgf@circ@res@up
+ \pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgf@y=\pgf@circ@res@up
+ }
+ \anchor{text}{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@left}{\northeast}
+ \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
+ \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
+ }
+ }
+}
+{\ctikzvalof{bipoles/iloop/height}}
+{iloop2}
+{\ctikzvalof{bipoles/iloop/height}}
+{\ctikzvalof{bipoles/iloop/width}}
+{
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgf@circ@res@down=-\pgf@circ@res@up
+ \pgf@circ@res@left=-\pgf@circ@res@right
+ % must be the same than internal i+ and i- anchors definition
+ \pgf@circ@res@step=0.4\pgf@circ@res@right
+ \pgf@circ@res@other=0.8\pgf@circ@res@up
+ \def\@plus{\pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}}
+ \def\@minus{\pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}}
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfsetcolor{\ctikzvalof{color}}
+ % external ellipse
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ % clipping path: first a rectangle bigger then the shape
+ % to avoid problems with the line thickness
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
+ {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
+ % next the opening to the left
+ \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
+ {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
+ % do the difference and clip before drawing
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathmoveto{\@plus}
+ \pgfpatharc{105}{435}{\pgf@circ@res@step and \pgf@circ@res@other}
+ \pgfusepath{draw}
+ \endpgfscope
+ % internal wire
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ % and the contact line up
+ % I use ...left and ---right as temporal lengths here to avoid defining more
+ \pgfextractx{\pgf@circ@res@left}{\@plus}
+ \pgfextractx{\pgf@circ@res@right}{\@minus}
+ \pgfpathmoveto{\@plus}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\@minus}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+
+%% Varistor
+\pgfcircdeclarebipolescaled{resistors}
+{
+ \pgfcirc@border@extend@updown{1}{1.4}
+}
+{\ctikzvalof{bipoles/varistor/height}}
+{varistor}
+{\ctikzvalof{bipoles/varistor/height}}
+{\ctikzvalof{bipoles/varistor/width}}
+{
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\pgf@circ@font@tiny\textsf{U}}}
+}
+
+%%%%%%%%%%%%%%
+%% RF bipoles
+%%%%%%%%%%%%%%
+
+% transmission line
+\pgfcircdeclarebipolescaled{RF}
+{}
+{\ctikzvalof{bipoles/tline/height}}
+{tline}
+{\ctikzvalof{bipoles/tline/height}}
+{\ctikzvalof{bipoles/tline/width}}
+{
+ \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
+ \begin{pgftransparencygroup}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{-\pgf@circ@res@up}}
+ \pgf@circ@draworfill
+ \end{pgftransparencygroup}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{stroke}
+}
+
+% microstrip transmission line
+\pgfcircdeclarebipolescaled{RF}
+{}
+{\ctikzvalof{bipoles/mstline/height}}
+{mstline}
+{\ctikzvalof{bipoles/mstline/height}}
+{\ctikzvalof{bipoles/mstline/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+%%%%%%%%%%%%%%%%%%%
+%% Block diagrams
+%%%%%%%%%%%%%%%%%%%
+
+%% Draw the two-port fillable box
+\def\pgf@circ@twoportbox{
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \endpgfscope
+}
+
+%% Generic two port box
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/twoport/height}}
+{twoport}
+{\ctikzvalof{bipoles/twoport/height}}
+{\ctikzvalof{bipoles/twoport/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw outer box
+ \pgf@circ@twoportbox
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+}
+
+%% twoport split
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/twoportsplit/width}}
+{twoportsplit}
+{\ctikzvalof{bipoles/twoportsplit/width}}
+{\ctikzvalof{bipoles/twoportsplit/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/twoportsplit/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ %get texts
+ \def\pgfcirc@tin{\ctikzvalof{bipoles/twoport/text in}}
+ \def\pgfcirc@tout{\ctikzvalof{bipoles/twoport/text out}}
+
+ % rotate inner symbol
+ \def\texti{\pgfcirc@tin}
+ \def\textii{\pgfcirc@tout}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{\pgfcirc@tout}
+ \def\textii{\pgfcirc@tin}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{\pgfcirc@tout}
+ \def\textii{\pgfcirc@tin}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{\pgfcirc@tin}
+ \def\textii{\pgfcirc@tout}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\texti}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textii}
+}
+
+%% voltage controled oscillator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/vco/width}}
+{vco}
+{\ctikzvalof{bipoles/twoport/width}}
+{\ctikzvalof{bipoles/vco/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+ % draw circle
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% bandpass filter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/bandpass/width}}
+{bandpass}
+{\ctikzvalof{bipoles/bandpass/width}}
+{\ctikzvalof{bipoles/bandpass/width}}
+{
+
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% bandstop filter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/bandstop/width}}
+{bandstop}
+{\ctikzvalof{bipoles/bandstop/width}}
+{\ctikzvalof{bipoles/bandstop/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/bandstop/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225% 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt}% always draw solid line for inner symbol
+ \pgfsetarrows{-}%never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% highpass filter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/highpass/width}}
+{highpass}
+{\ctikzvalof{bipoles/highpass/width}}
+{\ctikzvalof{bipoles/highpass/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% lowpass filter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/lowpass/width}}
+{lowpass}
+{\ctikzvalof{bipoles/lowpass/width}}
+{\ctikzvalof{bipoles/lowpass/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% allpass filter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/allpass/width}}
+{allpass}
+{\ctikzvalof{bipoles/allpass/width}}
+{\ctikzvalof{bipoles/allpass/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/allpass/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% ADC
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/adc/width}}
+{adc}
+{\ctikzvalof{bipoles/adc/width}}
+{\ctikzvalof{bipoles/adc/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{A}
+ \def\textii{D}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{D}
+ \def\textii{A}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{A}
+ \def\textii{D}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DAC
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/dac/width}}
+{dac}
+{\ctikzvalof{bipoles/dac/width}}
+{\ctikzvalof{bipoles/dac/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\texti{D}
+ \def\textii{A}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \def\texti{A}
+ \def\textii{D}
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \def\texti{D}
+ \def\textii{A}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
+ \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
+}
+
+%% DSP
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/dsp/width}}
+{dsp}
+{\ctikzvalof{bipoles/dsp/width}}
+{\ctikzvalof{bipoles/dsp/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{DSP}}
+}
+
+%% FFT
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/fft/width}}
+{fft}
+{\ctikzvalof{bipoles/fft/width}}
+{\ctikzvalof{bipoles/fft/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgftext[center,x=0,y=0]{\textsf{FFT}}
+}
+
+%% Amplifier
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{amp}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \pgf@circ@draworfill
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+
+ \pgfsetarrows{-} %never draw arrows
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+}
+
+
+%% variable amplifier
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{vamp}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \ifpgf@circuit@boxed
+ \ctikzvalof{bipoles/twoport/width}
+ \else
+ \ctikzvalof{bipoles/amp/width}
+ \fi
+}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw input arrow
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \ifpgf@circuit@boxed
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
+ \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
+ \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
+
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ % draw inner text
+ \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+
+ % draw arrow
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+%% pi attenuator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/piattenuator/width}}
+{piattenuator}
+{\ctikzvalof{bipoles/piattenuator/width}}
+{\ctikzvalof{bipoles/piattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable pi attenuator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/vpiattenuator/width}}
+{vpiattenuator}
+{\ctikzvalof{bipoles/vpiattenuator/width}}
+{\ctikzvalof{bipoles/vpiattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% T attenuator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/tattenuator/width}}
+{tattenuator}
+{\ctikzvalof{bipoles/tattenuator/width}}
+{\ctikzvalof{bipoles/tattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% variable T attenuator
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/vtattenuator/width}}
+{vtattenuator}
+{\ctikzvalof{bipoles/vtattenuator/width}}
+{\ctikzvalof{bipoles/vtattenuator/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% phase shifter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{phaseshifter}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+}
+
+%% variable phase shifter
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/phaseshifter/width}}
+{vphaseshifter}
+{\ctikzvalof{bipoles/vphaseshifter/width}}
+{\ctikzvalof{bipoles/vphaseshifter/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % inner symbol
+ \pgftext[center,x=0,y=0]{\Large$\varphi$}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% detector
+\pgfcircdeclarebipolescaled{blocks}
+{}
+{\ctikzvalof{bipoles/detector/width}}
+{detector}
+{\ctikzvalof{bipoles/detector/width}}
+{\ctikzvalof{bipoles/detector/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{0.8\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@fulldiode
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width}}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
+ \fi
+
+}
+
+%% single phase ac/dc converter
+\pgfcircdeclarebipolescaled{blocks}
+{
+ \anchor{dc1}{
+ \northeast
+ \pgf@y=.4\pgf@y
+ }
+ \anchor{dc2}{
+ \northeast
+ \pgf@y=-.4\pgf@y
+ }
+}
+{\ctikzvalof{bipoles/sacdc/width}}
+{sacdc}
+{\ctikzvalof{bipoles/sacdc/width}}
+{\ctikzvalof{bipoles/sacdc/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/sacdc/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % draw sin wave
+ \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ % draw equal sign
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.375\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.375\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.625\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.625\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+
+
+%% single phase dc/ac converter
+\pgfcircdeclarebipolescaled{blocks}
+{
+ \anchor{dc1}{
+ \northeast
+ \pgf@y=.4\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{dc2}{
+ \northeast
+ \pgf@y=-.4\pgf@y
+ \pgf@x=-\pgf@x
+ }
+}
+{\ctikzvalof{bipoles/sdcac/width}}
+{sdcac}
+{\ctikzvalof{bipoles/sdcac/width}}
+{\ctikzvalof{bipoles/sdcac/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/sdcac/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % draw sin wave
+ \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ % draw equal sign
+ \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.375\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.375\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.625\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.625\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+
+%% threephase ac/dc converter
+\pgfcircdeclarebipolescaled{blocks}
+{
+ \anchor{dc1}{
+ \northeast
+ \pgf@y=.4\pgf@y
+ }
+ \anchor{dc2}{
+ \northeast
+ \pgf@y=-.4\pgf@y
+ }
+ \anchor{ac1}{
+ \northeast
+ \pgf@y=.6\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{ac2}{
+ \northeast
+ \pgf@y=0\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{ac3}{
+ \northeast
+ \pgf@y=-.6\pgf@y
+ \pgf@x=-\pgf@x
+ }
+}
+{\ctikzvalof{bipoles/tacdc/width}}
+{tacdc}
+{\ctikzvalof{bipoles/tacdc/width}}
+{\ctikzvalof{bipoles/tacdc/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tacdc/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % draw sin waves
+ \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.65\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.35\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+
+
+
+ % draw equal sign
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.375\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.375\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.625\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.625\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+
+%% threephase dc/ac converter
+\pgfcircdeclarebipolescaled{blocks}
+{
+ \anchor{dc1}{
+ \northeast
+ \pgf@y=.4\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{dc2}{
+ \northeast
+ \pgf@y=-.4\pgf@y
+ \pgf@x=-\pgf@x
+ }
+ \anchor{ac1}{
+ \northeast
+ \pgf@y=.6\pgf@y
+ }
+ \anchor{ac2}{
+ \northeast
+ \pgf@y=0\pgf@y
+ }
+ \anchor{ac3}{
+ \northeast
+ \pgf@y=-.6\pgf@y
+ }
+}
+{\ctikzvalof{bipoles/tdcac/width}}
+{tdcac}
+{\ctikzvalof{bipoles/tdcac/width}}
+{\ctikzvalof{bipoles/tdcac/width}}
+{
+ \pgf@circ@res@step = \ctikzvalof{bipoles/tdcac/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % draw sin waves
+ \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.65\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.5\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.35\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+
+
+
+ % draw equal sign
+ \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.375\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.375\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.625\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.625\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%% MECHANICAL SYMBOLS
+%%%%%%%%%%%%%%%%%%%%%%%
+
+%% mechanical capacitance - stiffness/spring
+
+\pgfcircdeclarebipolescaled{mechanicals}
+{}
+{\ctikzvalof{bipoles/spring/height}}
+{spring}
+{\ctikzvalof{bipoles/spring/height}}
+{\ctikzvalof{bipoles/spring/width}}{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+
+ \pgfmathsetlength{\pgf@circ@res@step}
+ {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@scaled@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \advance\pgf@circ@res@other by 2\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical capacitance - inerter
+\pgfcircdeclarebipolescaled{mechanicals}
+{}
+{\ctikzvalof{bipoles/inerter/height}}
+{inerter}
+{\ctikzvalof{bipoles/inerter/height}}
+{\ctikzvalof{bipoles/inerter/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+
+%% mechanical inductance - mass
+\pgfcircdeclarebipolescaled{mechanicals}
+{}
+{\ctikzvalof{bipoles/mass/box height}}
+{mass}
+{\ctikzvalof{bipoles/mass/height}}
+{\ctikzvalof{bipoles/mass/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgftransformationadjustments
+ \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+}
+
+%% mechanical resistor - damper
+\pgfcircdeclarebipolescaled{mechanicals}
+{}
+{\ctikzvalof{bipoles/damper/height}}
+{damper}
+{\ctikzvalof{bipoles/damper/height}}
+{\ctikzvalof{bipoles/damper/width}}
+{
+ \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@maybefill
+
+ % line into the damper
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {\pgf@circ@res@zero}}
+ \pgfusepath{stroke}
+
+ % damper box
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+
+ % damper vertical element
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{stroke}
+
+}
+%% mechanical viscoelastic element, suggested by @alex
+%% in https://tex.stackexchange.com/questions/484268/combined-spring-damper-in-circuitikz
+\pgfcircdeclarebipolescaled{mechanicals}
+{} % extra anchors
+{\ctikzvalof{bipoles/damper/height}} % depth (under the path line)
+{viscoe} % name
+{\ctikzvalof{bipoles/damper/height}} % height (above the path line)
+{\ctikzvalof{bipoles/damper/width}} % width
+{ % draw the bipole
+ \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgf@circ@maybefill
+
+ % spring into the damper
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfsetcornersarced{\pgfpoint{.25\pgf@circ@res@up}{.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.75\pgf@circ@res@left}{.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@left}{-.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-.75\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{.75\pgf@circ@res@up}}
+ \pgfusepath{stroke}
+ \endpgfscope
+ % damper box
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+
+ \pgfsetrectcap
+ \pgfsetmiterjoin
+ \pgfusepath{stroke}
+
+ % damper vertical element
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
+ {.8\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{stroke}
+
+}
+
+%%%%%%%%%%%%%%%%
+%% Crossing
+%%%%%%%%%%%%%%%%
+
+%% crossing bipole (but see also nodes)
+\pgfcircdeclarebipole
+{}
+{\ctikzvalof{bipoles/crossing/size}}
+{crossing}
+{\ctikzvalof{bipoles/crossing/size}}
+{\ctikzvalof{bipoles/crossing/size}}{
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
+ \pgfsetbeveljoin
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Miscellaneous bipoles
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% loudspeaker and microphone
+
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/loudspeaker/depth}}
+{loudspeaker}
+{\ctikzvalof{bipoles/loudspeaker/height}}
+{\ctikzvalof{bipoles/loudspeaker/width}}{
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{.4\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/mic/depth}}
+{mic}
+{\ctikzvalof{bipoles/mic/height}}
+{\ctikzvalof{bipoles/mic/width}}{
+
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpoint{0pt}{.6\pgf@circ@res@up}}{.4\pgf@circ@res@up}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{0pt}}
+ % 0.25358 is 0.6-0.4*cos(30)
+ \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+%% european gas filled surge arrester
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
+{european gas filled surge arrester}
+{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
+{\ctikzvalof{bipoles/european gas filled surge arrester/width}}
+{
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@draworfill
+
+ \pgfscope
+ \pgfsetarrowsend{latexslim}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+}
+
+%% american gas filled surge arrester
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
+{american gas filled surge arrester}
+{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
+{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfsetarrowsend{latex}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+ \endpgfscope{}
+
+ \pgfcircle{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\ctikzvalof{bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\ctikzvalof{bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
+ \pgfusepath{fill}
+}
+
+%% thermocouple
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/thermocouple/height 2}}
+{thermocouple}
+{\ctikzvalof{bipoles/thermocouple/height}}
+{\ctikzvalof{bipoles/thermocouple/width}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+}
+
+%% fuse
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/fuse/height}}
+{fuse}
+{\ctikzvalof{bipoles/fuse/height}}
+{\ctikzvalof{bipoles/fuse/width}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgf@circ@draworfill
+}
+
+%% asymmetric fuse
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/afuse/height}}
+{afuse}
+{\ctikzvalof{bipoles/afuse/height}}
+{\ctikzvalof{bipoles/afuse/width}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{stroke,fill}
+}
+
+%% SQUID added by Cor Molenaar 5 March 2010
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/squid/height}}
+{squid}
+{\ctikzvalof{bipoles/squid/height}}
+{\ctikzvalof{bipoles/squid/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+}
+
+% Generic barrier added by Cor Molenaar 5 March 2010
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/barrier/height}}
+{barrier}
+{\ctikzvalof{bipoles/barrier/height}}
+{\ctikzvalof{bipoles/barrier/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
+
+ \pgfusepath{draw}
+}
+
+%
+% open version of the barrier symbol
+% suggested by Radvรกnyi Patrik Tamรกs <patrikradvanyi@gmail.com>
+%
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/barrier/height}}
+{openbarrier}
+{\ctikzvalof{bipoles/barrier/height}}
+{\ctikzvalof{bipoles/barrier/width}}
+{
+ % this is set with normal wire linewidth
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/openbarrier/gap}*\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/openbarrier/gap}*\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+
+ % do the cross part
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
+
+ \pgfusepath{draw}
+}
+%% Lamp
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/lamp/height}}
+{lamp}
+{\ctikzvalof{bipoles/lamp/height}}
+{\ctikzvalof{bipoles/lamp/width}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+%% bulb
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/bulb/height}}
+{bulb}
+{\ctikzvalof{bipoles/bulb/height}}
+{\ctikzvalof{bipoles/bulb/width}}
+{%
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{0.8\pgf@circ@res@up}}{\pgfpoint{0.8\pgf@circ@res@left}{0}}
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
+ \pgfsetbeveljoin
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+}
+
+
+% end of pgfcircbipoles.tex
+%%%---------- close: tex/pgfcircbipoles
+%%%%%%%%%%% Springe nach tex/pgfcirctripoles
+%%%---------- open: tex/pgfcirctripoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Tripoles
+
+%%%%%%%%%%%%%
+%% switches
+%%%%%%%%%%%%%
+
+% Legacy spdt
+\pgfdeclareshape{spdt}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/spdt/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out 1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{out 2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@res@other = \ctikzvalof{tripoles/spdt/margin}\pgf@circ@res@left
+
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
+ {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
+ }
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+
+% cute switch "node" shapes, matching with cute "to" shapes
+% #1 -> name
+% #2 -> barposition
+% #3 -> arrowcode
+\long\def\pgfcircdeclarecutespdt#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.25\pgf@x
+ }
+ \savedanchor\midlever{
+ % these values are calculated when we create the definition of the shape.
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgf@circ@res@down = -.5\pgf@y
+ \pgf@circ@res@up = .5\pgf@y
+ \pgfextracty{\pgf@circ@res@other}{#2}
+ \pgf@x=0pt
+ \pgf@y=.5\pgf@circ@res@other
+ }
+ % radius of the connector
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % shape type
+ \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
+ % mid of the lever, to stack switches
+ \anchor{mid}{\midlever}
+ % center anchors
+ \anchor{cin}{ \northwest \pgf@y=0pt}
+ \anchor{cout 1}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{cout 2}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ % horizontal angles
+ \anchor{in}{ \northwest \pgf@y=0pt\advance\pgf@x by -\radius}
+ \anchor{out 1}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius}
+ \anchor{out 2}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius \pgf@y=-\pgf@y }
+
+ \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \pgf@circ@res@temp=\radius\relax
+ \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
+ \pgfsetlinewidth{2\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{#2}
+ \pgfsetroundcap\pgfusepath{draw}
+ \endpgfscope
+ \pgfscope % arrow
+ #3
+ \endpgfscope
+ % terminals
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out 1}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out 2}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ }
+ }
+}
+
+\pgfcircdeclarecutespdt{cute spdt up}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
+{}
+
+\pgfcircdeclarecutespdt{cute spdt mid}
+{\pgfpoint{\pgf@circ@res@right}{0pt}}
+{}
+
+\pgfcircdeclarecutespdt{cute spdt down}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
+{}
+
+\pgfcircdeclarecutespdt{cute spdt up arrow}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{70}{1.5\pgf@circ@res@right}}
+ \pgfpatharc{70}{-50}{1.5\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclarecutespdt{cute spdt mid arrow}
+{\pgfpoint{\pgf@circ@res@right}{0pt}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfsetarrowsstart{latexslim}
+ \pgfpathmoveto{\pgfpointpolar{-60}{1.5\pgf@circ@res@right}}
+ \pgfpatharc{-60}{60}{1.5\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclarecutespdt{cute spdt down arrow}
+{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
+{
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
+ \pgfpathmoveto{\pgfpointpolar{-50}{1.5\pgf@circ@res@right}}
+ \pgfpatharc{-50}{70}{1.5\pgf@circ@res@right}
+ \pgfsetarrowsend{latexslim}
+ \pgfusepath{draw}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Logic ports
+%%
+%% Code from John Kormylo at tex.stackexchange.com
+%% See https://tex.stackexchange.com/questions/372993/is-it-possible-to-implement-multiple-input-logic-ports-with-circuitikz
+%% Integration and fixes from Romano Giannetti and TheTeXnician <38565529+TheTeXnician@users.noreply.github.com>
+%%
+
+\newcount\pgf@circ@res@count% reserve global register
+
+\def\pgf@circ@logicport@input#1% #1 = \pgfmathcounter
+{%
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+}%
+
+% #1 = \pgfmathcounter #2=type #3 specificic port
+% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor, 4 for european.
+\def\pgf@circ@logicport@baseinput#1#2#3%
+{%
+ % and and nand
+ \ifnum #2=1\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@x=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@left
+ \fi
+ % or and nor
+ \ifnum #2=2\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american #3 port/angle}}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\pgf@y
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgf@x=\pgf@circ@res@other
+ \fi
+ % xor and xnor
+ \ifnum #2=3\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american #3 port/angle}{\pgf@circ@math@angle}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/american #3 port/distance}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
+ % this compensates for the effect of the line width on the gap between the arcs
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
+
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@circ@res@temp=\pgf@y
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \advance\pgf@circ@res@other by -\pgf@circ@math@distance
+ \pgf@x=\pgf@circ@res@other
+ \fi
+ % european
+ \ifnum #2=4\relax
+ \pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@other}{\left}%
+ \step
+ \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
+ \advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@x=\pgf@circ@res@other
+ \fi
+}%
+
+%%% american
+\long\def\pgfcircdeclarelogicport#1#2#3{%
+ \pgfdeclareshape{american #1 port}%
+ {%
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro\resize{% automatic
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@up = \ctikzvalof{tripoles/american #1 port/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgf@circ@res@down = -\pgf@circ@res@up
+ \pgf@circ@res@right = \ctikzvalof{tripoles/american #1 port/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right = .5\pgf@circ@res@right
+ \pgf@circ@res@left = -\pgf@circ@res@right
+ }%
+ \savedmacro\inputs{% get number of inputs
+ \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
+ \ifnum\pgf@circ@res@count=0
+ \pgf@circ@res@count=\ctikzvalof{tripoles/american #1 port/inputs}\relax%
+ \fi
+ \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
+ \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
+ \def\inputs{\the\pgf@circ@res@count}%
+ }%
+ \savedanchor\step{% 1/2 gap at edges
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step = \ctikzvalof{tripoles/american #1 port/height}\pgf@circ@scaled@Rlen
+ \divide\pgf@circ@res@step by \pgf@circ@res@count
+ \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
+ }%
+ \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \savedanchor\left{\pgfpoint{\ctikzvalof{tripoles/american #1 port/port width}\pgf@circ@res@left}{0pt}}
+ \savedanchor\right{\pgfpoint{\ctikzvalof{tripoles/american #1 port/port width}\pgf@circ@res@right}{0pt}}
+ \savedanchor\origin{\pgfpoint{\ctikzvalof{tripoles/american #1 port/origin}\pgf@circ@res@right}{0pt}}
+
+ \anchor{center}{\origin}% for backwards compatibility
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+ % create input anchors
+ \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@american #1 port\endcsname{%
+ \pgfmathloop%
+ \ifnum\pgfmathcounter>\pgf@circ@res@count%
+ \else%
+ %\pgfutil@ifundefined{pgf@anchor@american #1 port@in \pgfmathcounter}{%
+ \expandafter\xdef\csname pgf@anchor@american #1 port@in \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
+ }%
+ \expandafter\xdef\csname pgf@anchor@american #1 port@bin \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{#2}{#1}% defined above
+ }%
+ %}{}%
+ \repeatpgfmathloop%
+ }
+
+ \anchor{out}{\northeast\pgf@y=0pt}
+ \anchor{bout}{\right\pgf@y=0pt}
+
+
+ \anchor{left}{\left}% edges of component minus leads
+ \anchor{right}{\right}
+
+ \anchor{north east}{\northeast}% see \Compass macro
+ \anchor{south west}{\southwest}
+ \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfpoint{0cm}{\pgf@circ@res@up}}
+ \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{0cm}}
+ \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfpoint{0cm}{\pgf@circ@res@down}}
+ \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{0cm}}
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ #3
+ }
+}
+}
+%%% american and %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{and}{1}{
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@input@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@temp}}
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+ % output lead
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@right} {0pt}}
+ \pgfusepath{draw}
+ \fi
+
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@left
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpatharc{-90}{90}{-2\pgf@circ@res@other and \pgf@circ@res@up}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ }
+%%% american nand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \pgfcircdeclarelogicport{nand}{1}{
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@input@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@temp}}
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@right} {0pt}}
+ \pgfusepath{draw}
+ \fi
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgf@circ@res@step = \ctikzvalof{tripoles/american nand port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@other = \ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@right
+ \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
+ \pgfpatharc{-90}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}
+ \pgfpathclose
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgf@circ@draworfill
+}
+%%% american nor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{nor}{2}{
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american nor port/angle}}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@input@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/port width}\pgf@circ@res@right
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \fi
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american nor port/angle}}%
+ \pgf@circ@res@step = \ctikzvalof{tripoles/american nor port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
+ \advance\pgf@circ@res@other by -\pgf@circ@res@step
+
+ % main shape
+ \ifpgfcirc@roundy@or@shapes
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpathclose
+ \else
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathclose
+ \fi
+
+ % not dot
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+
+ \pgf@circ@draworfill
+}
+%%% american or %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{or}{2}{
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american or port/angle}}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@input@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/port width}\pgf@circ@res@right
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \fi
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american or port/angle}}%
+
+ % main shape
+ \ifpgfcirc@roundy@or@shapes
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpathclose
+ \else
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathclose
+ \fi
+
+ \pgf@circ@draworfill
+}
+%%% american xor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{xor}{3}{
+ \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xor port/angle}{\pgf@circ@math@angle}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/american xor port/distance}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
+ % this compensates for the effect of the line width on the gap between the arcs
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@input@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \advance\pgf@circ@res@other by -\pgf@circ@math@distance
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/port width}\pgf@circ@res@right
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \fi
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american xor port/angle}}%
+
+ % main shape
+ \ifpgfcirc@roundy@or@shapes
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
+ \pgfpathclose
+ \else
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathclose
+ \fi
+ \pgf@circ@draworfill
+
+ \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
+
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
+
+ \pgfusepath{draw}
+}
+%%% american xnor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfcircdeclarelogicport{xnor}{3}{
+ \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xnor port/angle}{\pgf@circ@math@angle}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/inner}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/american xor port/distance}\pgf@circ@res@right
+ \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
+ % this compensates for the effect of the line width on the gap between the arcs
+ \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
+ \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
+
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ \pgf@circ@res@count = \inputs\relax
+ \ifpgfcirc@draw@input@leads
+ %input leads
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \advance\pgf@circ@res@other by -\pgf@circ@math@distance
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@right
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \fi
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american xnor port/angle}}%
+ \pgf@circ@res@step = \ctikzvalof{tripoles/american xnor port/circle width}\pgf@circ@res@right
+ \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
+ \advance\pgf@circ@res@other by -\pgf@circ@res@step
+
+ % main shape
+ \ifpgfcirc@roundy@or@shapes
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
+ \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
+ \pgfpathclose
+ \else
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
+ \pgfpathclose
+ \fi
+
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
+ \pgf@circ@draworfill
+
+ \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@left
+ \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
+ \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
+
+ \pgfusepath{draw}
+}
+
+%%% Original one-input ports
+
+\pgfdeclareshape{american not port}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{left}{
+ \northwest
+ \pgf@x=0.7\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@x=0.7\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{bin 1}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{right}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchorborder{% this is used when the node is used as a path element
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ }
+ \anchor{text}{%
+ % centered and a bit to the left (it's a triangle)!
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgf@circ@draworfill
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \ifpgfcirc@draw@input@leads
+ %input leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+ \fi
+
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \fi
+
+ \pgfusepath{draw}
+ }
+}
+
+\pgfdeclareshape{american buffer port}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{left}{
+ \northwest
+ \pgf@x=0.7\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@x=0.7\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{bin 1}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{right}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchorborder{% this is used when the node is used as a path element
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ }
+ \anchor{text}{%
+ % centered and a bit to the left (it's a triangle)!
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \ifpgfcirc@draw@input@leads
+ %input leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+ \fi
+
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \fi
+
+ \pgfusepath{draw}
+ }
+}
+\pgfdeclareshape{invschmitt}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{left}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{bin 1}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{right}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchorborder{% this is used when the node is used as a path element
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ }
+ \anchor{text}{%
+ % centered and a bit to the left (it's a triangle)!
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@other = \ctikzvalof{bipoles/not port/circle width}\pgf@circ@res@right
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfpathellipse
+ {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
+ {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \ifpgfcirc@draw@input@leads
+ %input leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+ \fi
+
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \fi
+ \pgfusepath{draw}
+ %draw inner shape
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ }
+}
+
+\pgfdeclareshape{schmitt}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{left}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{bin 1}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{right}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-.7\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchorborder{% this is used when the node is used as a path element
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ }
+ \anchor{text}{%
+ % centered and a bit to the left (it's a triangle)!
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \ifpgfcirc@draw@input@leads
+ %input leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+ \fi
+
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}
+ \fi
+ \pgfusepath{draw}
+ %draw inner shape
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+
+ \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ }
+}
+
+
+%%% start european logic ports, from John Kormylo
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+
+% #1 - name
+% #2 - text inside
+% #3 - number of inputs
+% #4 = is it a not?
+%
+% option to add a circle for not-output, see
+% https://github.com/circuitikz/circuitikz/issues/385
+%
+\newif\ifpgf@circ@european@port@circle\pgf@circ@european@port@circlefalse
+\newif\ifpgf@circ@european@port@circle@ieee\pgf@circ@european@port@circle@ieeefalse
+\ctikzset{tripoles/european not shape/.initial=ocirc}
+\ctikzset{tripoles/european not symbol/.is choice}
+\ctikzset{tripoles/european not symbol/triangle/.code={\pgf@circ@european@port@circlefalse}}
+\ctikzset{tripoles/european not symbol/circle/.code={%
+\pgf@circ@european@port@circletrue\pgf@circ@european@port@circle@ieeefalse\ctikzset{tripoles/european not shape=ocirc}}}
+\ctikzset{tripoles/european not symbol/ieee circle/.code={%
+\pgf@circ@european@port@circletrue\pgf@circ@european@port@circle@ieeetrue\ctikzset{tripoles/european not shape=notcirc}}}
+
+\long\def\pgfcircdeclareeurologicport#1#2#3#4{
+ \pgfdeclareshape{european #1 port}
+ {
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \saveddimen{\boutshift}{%
+ \edef\pgf@temp{not}
+ \edef\pgf@circ@temp{#4}
+ \ifx\pgf@temp\pgf@circ@temp % is a not
+ \ifpgf@circ@european@port@circle
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \edef\pgf@temp{ocirc}
+ \edef\pgf@circ@temp{\ctikzvalof{tripoles/european not shape}}
+ \ifx\pgf@temp\pgf@circ@temp % it's ocirc
+ \pgfmathsetlength{\pgf@x}{2*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \else % it's ieee not circ
+ \pgf@circ@notradius % defined together with ieeestd ports
+ \pgf@x=2\pgf@circ@res@temp
+ \fi
+ \else
+ \pgf@x=0pt
+ \fi
+ \else
+ \pgf@x=0pt
+ \fi
+ }
+ \savedmacro\resize{% automatic
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@up = \ctikzvalof{tripoles/european #1 port/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up = .5\pgf@circ@res@up
+ \pgf@circ@res@down = -\pgf@circ@res@up
+ \pgf@circ@res@right = \ctikzvalof{tripoles/european #1 port/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right = .5\pgf@circ@res@right
+ \pgf@circ@res@left = -\pgf@circ@res@right
+ }%
+ \savedmacro\inputs{% get number of inputs
+ \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
+ \ifnum\pgf@circ@res@count=0
+ \pgf@circ@res@count=\ctikzvalof{tripoles/european #1 port/inputs}\relax%
+ \fi
+ \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
+ \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
+ \def\inputs{\the\pgf@circ@res@count}%
+ }%
+ \savedanchor\step{% 1/2 gap at edges
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step = \ctikzvalof{tripoles/european #1 port/height}\pgf@circ@scaled@Rlen
+ \divide\pgf@circ@res@step by #3
+ \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
+ }%
+ \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}%
+ \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}%
+ \savedanchor\left{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
+ \savedanchor\right{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}%
+ \savedanchor\origin{\pgfpoint{\ctikzvalof{tripoles/european #1 port/origin}\pgf@circ@res@right}{0pt}}%
+
+ \anchor{center}{\origin}% for backwards compatibility
+ % the text anchor overlaps the logic symbol
+ \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}%
+ % create input anchors
+ \ifnum#3=1\relax
+ \anchor{in}{\southwest\pgfpoint{\pgf@x}{0pt}}% or \step
+ \anchor{in 1}{\southwest\pgfpoint{\pgf@x}{0pt}}% or \step
+ \anchor{bin}{\left\pgfpoint{\pgf@x}{0pt}}% or \step
+ \anchor{bin 1}{\left\pgfpoint{\pgf@x}{0pt}}% or \step
+ \else
+ \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@european #1 port\endcsname{%
+ \pgfmathloop%
+ \ifnum\pgfmathcounter>#3%
+ \else%
+ %\pgfutil@ifundefined{pgf@anchor@european #1 port@in \pgfmathcounter}{% redundant
+ \expandafter\xdef\csname pgf@anchor@european #1 port@in \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
+ }%
+ \expandafter\xdef\csname pgf@anchor@european #1 port@bin \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{4}{#1}% defined above
+ }%
+ %}{}%
+ \repeatpgfmathloop%
+ }
+ \fi
+ \anchor{out}{\northeast\pgf@y=0pt}
+ \anchor{bout}{\right\advance\pgf@x by \boutshift\pgf@y=0pt}
+
+ \anchor{left}{\left}% edges of component minus leads
+ \anchor{right}{\right\advance\pgf@x by \boutshift\pgf@y=0pt}
+
+ \anchor{north east}{\northeast}% see \Compass macro
+ \anchor{south west}{\southwest}
+ \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfpoint{0cm}{\pgf@circ@res@up}}
+ \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
+ \pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
+ \pgfpoint{\pgf@circ@res@left}{0cm}}
+ \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfpoint{0cm}{\pgf@circ@res@down}}
+ \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
+ \pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
+ \pgfpoint{\pgf@circ@res@right}{0cm}}
+
+ \anchorborder{% this is used when the node is used as a path element
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\northeast}
+ \pgfextractx{\pgf@circ@res@right}{\northeast}
+ \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfstartlinewidth=\pgflinewidth
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathrectanglecorners
+ {\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \ifpgfcirc@draw@input@leads
+ %input leads
+ \ifnum#3=1\relax
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}%
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
+ \else
+ \pgfextracty{\pgf@circ@res@temp}{\step}%
+ \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
+ %\pgf@circ@res@count = #3\relax% redundant
+ \loop\ifnum\pgf@circ@res@count>0
+ \advance\pgf@circ@res@temp by -\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}
+ {\pgf@circ@res@temp}}
+ \advance\pgf@circ@res@count by -1
+ \repeat
+ \fi
+ \pgfusepath{draw}
+ \fi
+ %
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{ \pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ %
+ \edef\pgf@temp{not}
+ \edef\pgf@circ@temp{#4}
+ \ifx\pgf@temp\pgf@circ@temp % is a not
+ \ifpgf@circ@european@port@circle
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}
+ % reset linewidth for IEEE ports, otherwise they will multiply...
+ \ifpgf@circ@european@port@circle@ieee\pgfsetlinewidth{\pgfstartlinewidth}\fi
+ \pgfnode{\ctikzvalof{tripoles/european not shape}}{west}{}{NOT}{\pgfusepath{stroke}}
+ \endpgfscope
+ \else
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/european #1 port/not height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \fi
+ \fi
+ %
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgftext{#2}
+ }
+ }
+}
+\pgfcircdeclareeurologicport{and}{\&}{\pgf@circ@res@count}{}
+\pgfcircdeclareeurologicport{or}{$\ge 1$}{\pgf@circ@res@count}{}
+\pgfcircdeclareeurologicport{xor}{$=1$}{\pgf@circ@res@count}{}
+\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
+\pgfcircdeclareeurologicport{buffer}{$1$}{1}{}
+\pgfcircdeclareeurologicport{nand}{\&}{\pgf@circ@res@count}{not}
+\pgfcircdeclareeurologicport{nor}{$\ge 1$}{\pgf@circ@res@count}{not}
+\pgfcircdeclareeurologicport{xnor}{$=1$}{\pgf@circ@res@count}{not}
+
+%% end european logic ports
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% Transistors
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+%
+% definitions for transistor circles
+%
+\ctikzset{transistor circle/.is family}
+\ctikzset{transistor circle/relative thickness/.initial=1}
+\ctikzset{transistor circle/color/.initial=default}
+\ctikzset{transistor circle/dash/.initial=none}
+\ctikzset{transistor circle/scale circle radius/.initial=1}
+\ctikzset{transistor circle/default base in/.initial=0.9}
+\ctikzset{transistor circle/njfet base in/.initial=1.05}
+\ctikzset{transistor circle/pjfet base in/.initial=1.05}
+\ctikzset{transistor circle/isfet base in/.initial=0.65}
+
+\newif\ifpgf@circ@trcircle\pgf@circ@trcirclefalse
+\ctikzset{tr circle/.is if=pgf@circ@trcircle}
+\tikzset{tr circle/.is if=pgf@circ@trcircle}
+%
+% add a circle to the transistor:
+%
+\def\pgfcirc@transistorcircle{
+ \ifpgf@circ@trcircle
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfsetlinewidth{\ctikzvalof{transistor circle/relative thickness}\pgflinewidth}
+ \edef\@@none{none}\edef\@@default{default}
+ \edef\@@tmp{\ctikzvalof{transistor circle/color}}
+ \ifx\@@tmp\@@default\else
+ \pgfsetcolor{\@@tmp}
+ \fi
+ \edef\@@tmp{\ctikzvalof{transistor circle/dash}}
+ \ifx\@@tmp\@@none\else
+ \expandafter\pgfsetdash\expandafter{\@@tmp}{0cm}
+ \fi
+ % radius of the circle
+ % \pgfmathsetlength{\pgf@circ@res@temp}{((#2+\extrabodydiodelen)-(#1)+(#3)*(#3)/((#2+\extrabodydiodelen)-(#1)))/2}
+ % \pgfpathcircle{\pgfpoint{#1+\pgf@circ@res@temp}{0pt}}{\pgf@circ@res@temp}
+ \pgfpathcircle{\pgfpoint{\circleleft+\circleradius}{0pt}}{\circleradius}
+ \pgf@circ@draworfill
+ \endpgfscope
+ \fi
+}
+
+\long\def\pgfcircdeclaretransistor#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{transistors}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\circlebase}{
+ \pgfkeysifdefined{\circuitikzbasekey/transistor circle/#1 base in}%
+ {% yes, we have it
+ \edef\circlebase{\ctikzvalof{transistor circle/#1 base in}}%
+ }{% no, use default
+ \edef\circlebase{\ctikzvalof{transistor circle/default base in}}
+ }}
+ % \savedmacro{\thistypeoftr}{\edef\thistypeoftr{#1}}
+ \saveddimen{\extrabodydiodelen}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@fet@bodydiode
+ % try to put the text to the right of the flyback diode
+ \pgfmathsetlength{\pgf@x}{(
+ \ctikzvalof{tripoles/#1/bodydiode distance}*
+ \ctikzvalof{tripoles/#1/width} +
+ \ctikzvalof{tripoles/#1/bodydiode scale}*
+ \ctikzvalof{bipoles/diode/height}/2
+ )*\pgf@circ@scaled@Rlen}
+ \else
+ \pgf@x=0pt\relax
+ \fi
+ }
+ \savedmacro{\scaecircleradius}{
+ \edef\scalecircleradius{\ctikzvalof{transistor circle/scale circle radius}}
+ }
+ \saveddimen{\circleradius}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ % repeat the extrabodydiodelen (grrr)
+ \ifpgf@circuit@fet@bodydiode
+ % try to put the text to the right of the flyback diode
+ \pgfmathsetlength{\pgf@circ@res@other}{(
+ \ctikzvalof{tripoles/#1/bodydiode distance}*
+ \ctikzvalof{tripoles/#1/width} +
+ \ctikzvalof{tripoles/#1/bodydiode scale}*
+ \ctikzvalof{bipoles/diode/height}/2
+ )*\pgf@circ@scaled@Rlen}
+ \else
+ \pgf@circ@res@other=0pt\relax
+ \fi
+ % left
+ \pgf@xa=-\ctikzvalof{tripoles/#1/width}\pgf@circ@scaled@Rlen
+ \pgf@xa=\circlebase\pgf@xa % this is the base point of the circle
+ % northeast
+ \pgf@yb=\ctikzvalof{tripoles/#1/height}\pgf@circ@scaled@Rlen % y of the left point of circle
+ \pgf@yb=.5\pgf@yb
+ \pgf@xb=\pgf@circ@res@other % this is the x of the right points of the circle
+ %
+ \pgf@yb=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@yb %this is #3 of the circle
+ % find the radius of the circle
+ \pgfmathsetlength{\pgf@x}{((\pgf@xb)-(\pgf@xa)+(\pgf@yb)*(\pgf@yb)/((\pgf@xb)-(\pgf@xa)))/2*\scalecircleradius}
+ }
+ \saveddimen{\circleleft}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@xa=-\ctikzvalof{tripoles/#1/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\circlebase\pgf@xa
+ }
+ \anchor{circle center}{
+ \pgf@y=0pt\pgf@x=\circleleft\advance\pgf@x by\circleradius
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northeast{% upper right
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/#1/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%center left
+ \pgf@y=0pt
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/#1/width}\pgf@circ@scaled@Rlen
+ }
+ \savedanchor\right{%center right -- added by Burak Kelleci % this is really 0,0
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{text}{
+ \northeast
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@transisors@fixlabels
+ \ifpgf@circuit@fet@bodydiode
+ \advance \pgf@x by \extrabodydiodelen
+ \fi
+ \ifpgf@circ@trcircle
+ \left\pgf@xa=\pgf@x
+ \pgfmathsetlength{\pgf@x}{\circleleft+2*\circleradius}
+ % \advance \pgf@x by \circleradius
+ \fi
+ % add a bit of space to avoid central (substrate) terminal if drawn
+ \advance\pgf@x by 0.05\pgf@circ@scaled@Rlen\relax
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ \else
+ \pgf@y=.7\pgf@y
+ \pgf@x= \pgf@circ@scaled@Rlen
+ \pgf@x=0.1\pgf@x
+ \fi
+ }
+ \anchor{pathstart}{ % south
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{pathend}{
+ \northeast
+ }
+ \anchor{north}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \northeast
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=-\pgf@circ@res@step
+ }
+ \anchor{north east}{
+ \northeast
+ }
+ \anchor{north west}{
+ \northeast
+ \pgf@circ@res@step=\pgf@y
+ \left
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{south east}{
+ \northeast
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{base}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{bulk}{ %added by Burak Kelleci
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \right
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{nobulk}{ %added by Burak Kelleci
+ \left
+ \pgf@x=\ctikzvalof{tripoles/#1/base width}\pgf@x
+ }
+ \anchor{G}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{gate}{
+ \northeast
+ \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
+ \left
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
+ }
+ \anchor{nobase}{
+ \left
+ \pgf@x=\ctikzvalof{tripoles/#1/base width}\pgf@x
+ }
+ \anchor{circle base}{
+ \left
+ \pgf@x=\circlebase\pgf@x
+ }
+ \anchor{nogate}{
+ \left
+ \pgf@x=\ctikzvalof{tripoles/#1/gate width}\pgf@x
+ }
+ \anchor{E}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{emitter}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{C}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{collector}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{S}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{source}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{D}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{drain}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ }
+ \anchor{body C in}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y
+ }
+ \anchor{circle C}{
+ \left
+ \pgf@xa=\circlebase\pgf@x % this is #1 of the circle
+ \northeast
+ \pgf@xb=\pgf@x %this is #2 of the circle
+ \pgf@yb=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y %this is #3 of the circle
+ % the base of the triangle is x_2 - x_1 - r
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@xb-\pgf@xa-\circleradius}
+ % so let's go with the height
+ \pgfmathsetlength{\pgf@ya}{sqrt(abs(\circleradius*\circleradius-\pgf@circ@res@other*\pgf@circ@res@other))}
+ % finally, direction
+ \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@ya
+ }
+ \anchor{circle E}{
+ \left
+ \pgf@xa=\circlebase\pgf@x % this is #1 of the circle
+ \northeast
+ \pgf@xb=\pgf@x %this is #2 of the circle
+ \pgf@yb=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y %this is #3 of the circle
+ % the base of the triangle is x_2 - x_1 - r
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@xb-\pgf@xa-\circleradius}
+ % so let's go with the height
+ \pgfmathsetlength{\pgf@ya}{sqrt(abs(\circleradius*\circleradius-\pgf@circ@res@other*\pgf@circ@res@other))}
+ % finally, direction
+ % finally, direction
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@ya
+ }
+ \anchor{body E in}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y
+ }
+ \anchor{body C out}{
+ \northeast
+ \pgf@ya=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ \pgf@ya=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@ya
+ \pgf@y=\pgf@ya
+ \left
+ \pgf@x=-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@x
+ \pgf@y=\pgf@ya
+ }
+ \anchor{body E out}{
+ \northeast
+ \pgf@ya=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
+ \pgf@ya=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@ya
+ \pgf@y=\pgf@ya
+ \left
+ \pgf@x=-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@x
+ \pgf@y=\pgf@ya
+ }
+ #2
+ \backgroundpath{
+ \pgftransformationadjustments
+ \pgfsetcolor{\ctikzvalof{color}}
+ %
+ \ifnum \ctikzvalof{tripoles/#1/curr direction} > 0
+ \pgf@circuit@trans@ntypetrue
+ \else
+ \pgf@circuit@trans@ntypefalse
+ \fi
+ \northeast
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \left
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ %
+ #3
+ % BODY DIODE
+ \ifpgf@circuit@fet@bodydiode
+ \drawbodydiode{#1}
+ \fi
+ %
+ }
+}
+}
+
+\long\def\drawbodydiode#1{
+ \pgfscope
+ \pgftransformshift{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgftransformrotate{90}
+ % diode scale and bodydiode scale interacts. We want the size of the diode
+ % proportional to the transistor, so we will:
+ % 1) undo diode scale 2) apply transistor scale (using the current class) 3) apply bodydiode scale
+ \pgfmathsetmacro{\@@BDscale}{\ctikzvalof{tripoles/#1/bodydiode scale}* \ctikzvalof{\ctikzclass/scale}/\ctikzvalof{diodes/scale}}
+ \pgftransformscale{\@@BDscale}
+ \ifpgf@circuit@fulldiode
+ \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \else
+ \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
+ \fi
+ \endpgfscope
+ % Draw stroke line
+ \ifpgf@circuit@strokediode
+ \pgfpathmoveto{\pgfpointanchor{pgf@bodydiode}{west}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
+ \pgfusepath{stroke}
+ \fi
+ %Draw upper connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope{}
+ %Draw lower connection to body diode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
+ \pgftransformscale{0.5}
+ \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
+ \endpgfscope
+}
+
+\long\def\declarebpt#1{
+ \pgfcircdeclaretransistor{#1}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/base height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/base height}\pgf@y
+ }
+ }{
+
+ % add the circle if requested (before everything else, so we can fill it)
+ \pgfcirc@transistorcircle
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % drawing base
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \ifpgf@circuit@bpt@schottky
+ % upper
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
+ % % lower
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transistor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \edef\@@anchor{center}
+ \ifpgf@circuit@trans@ntype
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{btip}
+ \pgftransformlineattime{1.0}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{\ctikzvalof{tripoles/#1/arrow pos}}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}%
+ }
+ \fi
+ \else % p-type
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{tip}
+ \pgftransformlineattime{1.0}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}%
+ }
+ \else
+ \pgftransformlineattime{\ctikzvalof{tripoles/#1/arrow pos}}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \fi
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \ifpgf@circuit@bpt@drawphoto
+ \pgfscope
+ \pgfsetarrowsstart{latexslim}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpointadd{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
+ \pgfusepath{draw}
+ \endpgfscope
+ \else
+ \ifpgf@circuit@bpt@drawbase
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+ \fi
+ }
+}
+
+\declarebpt{npn}
+\declarebpt{pnp}
+%
+% multi-emitter and multi-collector BJTs by Romano Giannetti
+%
+\def\pgf@circ@bjt@C@anchor#1{% #1: collector number
+ \pgfextractx{\pgf@circ@res@temp}{\basedimension}
+ \pgfextracty{\pgf@circ@res@other}{\basedimension}
+ \ifnum\cdir>0 % NPN, above
+ \pgfpoint{\pgf@circ@res@temp}{%
+ \pgf@circ@res@other+\pgfverticaltransformationadjustment*.5*\pgflinewidth+(#1-1)*\multistep}
+ \else % PNP, below
+ \pgfpoint{\pgf@circ@res@temp}{%
+ -\pgf@circ@res@other-\pgfverticaltransformationadjustment*.5*\pgflinewidth-(#1-1)*\multistep}
+ \fi
+}
+\def\pgf@circ@bjt@E@anchor#1{% #1: collector number
+ \pgfextractx{\pgf@circ@res@temp}{\basedimension}
+ \pgfextracty{\pgf@circ@res@other}{\basedimension}
+ \ifnum\cdir<0 % PNP, above
+ \pgfpoint{\pgf@circ@res@temp}{%
+ \pgf@circ@res@other+\pgfverticaltransformationadjustment*.5*\pgflinewidth+(#1-1)*\multistep}
+ \else % PNP, below
+ \pgfpoint{\pgf@circ@res@temp}{%
+ -\pgf@circ@res@other-\pgfverticaltransformationadjustment*.5*\pgflinewidth-(#1-1)*\multistep}
+ \fi
+}
+
+\long\def\declarebjt#1{
+ \pgfdeclareshape{bjt#1}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{transistors}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ % \cdir is 1 for npn, -1 for pnp
+ \savedmacro{\cdir}{\edef\cdir{\ctikzvalof{tripoles/bjt/#1/curr direction}}}
+ \savedmacro{\numE}{\edef\numE{\ctikzvalof{tripoles/bjt/emitters}}}
+ \savedmacro{\numC}{\edef\numC{\ctikzvalof{tripoles/bjt/collectors}}}
+ % step up or down for the additional C/Es
+ \saveddimen{\multistep}{\pgfmathsetlength{\pgf@x}{%
+ \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
+ \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}}
+ \saveddimen{\external}{\pgfmathsetlength{\pgf@x}{%
+ \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}}
+ \savedanchor\basedimension{% these are the dimensions if nC=1 y nE=1
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\northeast{% upper right
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@step}{%
+ \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
+ \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \ifnum\cdir> 0
+ \edef\numup{\numC}\edef\numdown{\numE}
+ \else
+ \edef\numup{\numE}\edef\numdown{\numC}
+ \fi
+ \pgfmathsetlength{\pgf@y}{0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
+ + (\numup-1)*\pgf@circ@res@step+\pgfverticaltransformationadjustment*.5*\pgflinewidth
+ + \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\southeast{% lower right
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@step}{%
+ \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
+ \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \ifnum\cdir> 0
+ \edef\numup{\numC}\edef\numdown{\numE}
+ \else
+ \edef\numup{\numE}\edef\numdown{\numC}
+ \fi
+ \pgfmathsetlength{\pgf@y}{-0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
+ - (\numdown-1)*\pgf@circ@res@step-\pgfverticaltransformationadjustment*.5*\pgflinewidth
+ - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\southwest{% lower left
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@step}{%
+ \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
+ \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \ifnum\cdir> 0
+ \edef\numup{\numC}\edef\numdown{\numE}
+ \else
+ \edef\numup{\numE}\edef\numdown{\numC}
+ \fi
+ \pgfmathsetlength{\pgf@y}{-0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
+ - (\numdown-1)*\pgf@circ@res@step-\pgfverticaltransformationadjustment*.5*\pgflinewidth
+ - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{tripoles/bjt/width}*\pgf@circ@scaled@Rlen
+ - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{north}{\northeast\pgf@x=0cm\relax}
+ \anchor{east}{\northeast\pgf@y=0cm\relax}
+ \anchor{south}{\southwest\pgf@x=0cm\relax}
+ \anchor{west}{\southwest\pgf@y=0cm}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@ya=\pgf@y\southwest\pgf@y=\pgf@ya}
+ \anchor{south west}{\southwest}
+ \anchor{south east}{\southeast}
+
+ \anchor{text}{\northeast\pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax}
+ \anchor{B}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x\advance\pgf@x by -\external}
+ \anchor{base}{\basedimension\pgf@y=0cm\pgf@x=-\pgf@x\advance\pgf@x by -\external}
+ \anchor{nobase}{\basedimension\pgf@y=0cm\pgf@x=-\pgf@x}
+ % center of the base "bar"
+ \anchor{cbase}{\basedimension\pgf@x=-\pgf@x
+ \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
+ }
+ % geometrical centers
+ \anchor{vcenter}{\pgf@x=0cm\relax
+ \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
+ }
+ \anchor{gcenter}{%
+ \northeast\pgf@xa=0.5\pgf@x
+ \southwest\advance\pgf@xa by 0.5\pgf@x
+ \pgf@x=\pgf@xa
+ \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
+ }
+ % external connections
+ \anchor{E}{
+ \ifnum\cdir>0% npn, emitter down
+ \southeast
+ \else
+ \northeast
+ \fi
+ }% first emitter
+ \anchor{emitter}{\ifnum\cdir>0\southeast\else\northeast\fi}% first emitter
+ \anchor{C}{\ifnum\cdir<0\southeast\else\northeast\fi}
+ \anchor{collector}{\ifnum\cdir<0\southeast\else\northeast\fi}
+
+ \backgroundpath{
+ \pgftransformationadjustments
+ \pgfsetcolor{\ctikzvalof{color}}
+ %
+ % set the type and up and down number of connections
+ %
+ \ifnum\cdir> 0
+ \pgf@circuit@trans@ntypetrue
+ \edef\numup{\numC}
+ \edef\numdown{\numE}
+ \else
+ \pgf@circuit@trans@ntypefalse
+ \edef\numup{\numE}
+ \edef\numdown{\numC}
+ \fi
+ \basedimension
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \pgf@circ@res@left = -\pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\multistep
+ %
+ % set arrow positions options
+ %
+ \edef\@@anchor{center}\edef\@@pos{\ctikzvalof{tripoles/#1/arrow pos}}
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@pos{1.0}
+ \ifpgf@circuit@trans@ntype % arrow is toward outside, push it a bit
+ \edef\@@anchor{btip}
+ \else
+ \edef\@@anchor{tip}
+ \fi
+ \fi
+ %
+ % Drawing upper connections
+ %
+ \pgfscope
+ \pgf@circ@count@a=\numup\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \advance\pgf@circ@count@a-1\relax
+ \pgfmathsetlength{\pgf@circ@res@other}{\the\pgf@circ@count@a*\multistep}%
+ \ifnum\pgf@circ@count@a=\numexpr\numup-1\relax % draw the external pin connection
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\external+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
+ \pgfpathlineto{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
+ \fi
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@up+\pgf@circ@res@other}}%
+ \pgfsetroundcap % better when connecting to sloped lines
+ \pgfusepath{draw}
+ \ifpgf@circuit@trans@ntype\else % it's a PNP; draw arrow
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}%
+ }{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@up+\pgf@circ@res@other}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+ \repeatpgfmathloop
+ \endpgfscope
+ %
+ % Drawing base
+ %
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \ifpgf@circuit@bpt@schottky
+ % upper
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left+
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
+ % lower
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-
+ \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
+ {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
+ \fi
+ \pgfsetroundcap % I like it more...
+ \pgfusepath{draw}
+ \endpgfscope
+ %
+ % draw base external connection
+ %
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-\external}{0pt}}
+ \pgfusepath{draw}
+ %
+ % Drawing lower connections
+ %
+ \pgfscope
+ \pgf@circ@count@a=\numdown\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \advance\pgf@circ@count@a-1\relax
+ \pgfmathsetlength{\pgf@circ@res@other}{\the\pgf@circ@count@a*\multistep}%
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint
+ {\pgf@circ@res@right}
+ {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other}}
+ \ifnum\pgf@circ@count@a=\numexpr\numdown-1\relax % draw the external pin connection
+ \pgfpathlineto{\pgfpoint
+ {\pgf@circ@res@right}
+ {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other-\external}}
+ \fi
+ \pgfsetroundcap % better when connecting to sloped lines
+ \pgfusepath{draw}
+ \ifpgf@circuit@trans@ntype % it's a NPN; draw arrow
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint
+ {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@down-\pgf@circ@res@other}%
+ }{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \fi
+ \repeatpgfmathloop
+ \endpgfscope
+ }
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@bjt#1\endcsname{%
+ % Start with the maximum collector number and go backwards.
+ \pgf@circ@count@a=\numC\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@bjt#1@C\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@bjt@C@anchor{\the\pgf@circ@count@a}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ % and emitters
+ \pgf@circ@count@a=\numE\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@bjt#1@E\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@bjt@E@anchor{\the\pgf@circ@count@a}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+ }
+}
+
+\declarebjt{npn}
+\declarebjt{pnp}
+
+% end of multi-bjts
+
+\long\def\declareigbt#1{
+ \pgfcircdeclaretransistor{#1}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/gate height}\pgf@y
+ }
+ }
+ {
+ % add the circle if requested (before everything else, so we can fill it)
+ \pgfcirc@transistorcircle
+ %draw upper connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ %draw thicker gate lines
+ \pgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/outer base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/outer base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ % set the normal thickness
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \edef\@@extrat{\ctikzvalof{tripoles/#1/outer base thickness}}
+ \pgfsetlinewidth{\@@extrat\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %draw lower connection
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+ %draw arrow depending on type of transistor
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \ifpgf@circuit@trans@ntype
+ \edef\@@anchor{btip}\edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{tip}\edef\@@pos{1.0}
+ \fi
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.5}
+ \fi
+ \ifpgf@circuit@trans@ntype
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}%
+ }
+ \else
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint{\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}%
+ }
+ \fi
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ %draw gate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}}
+ \fi
+ \pgfusepath{draw}
+ }
+}
+
+\declareigbt{pigbt}
+\declareigbt{nigbt}
+\declareigbt{Lnigbt}
+\declareigbt{Lpigbt}
+
+\pgfcircdeclaretransistor{nmos}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/nmos/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/nmos/gate height}\pgf@y
+ }
+ }{%
+ % add the circle if requested (before everything else, so we can fill it)
+ \pgfcirc@transistorcircle
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \ifpgf@circuit@trans@arrowatend
+ \pgftransformshift{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{trarrow}{btip}{}{}{\pgfusepath{stroke}}
+ \else
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\ctikzvalof{tripoles/nmos/arrow pos}}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \fi
+ \endpgfscope
+ \fi
+
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+
+ \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+}
+
+\pgfcircdeclaretransistor{pmos}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/pmos/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/pmos/gate height}\pgf@y
+ }
+ }{%
+ % add the circle if requested (before everything else, so we can fill it)
+ \pgfcirc@transistorcircle
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \ifpgf@circuit@trans@arrowatend
+ \pgftransformshift{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }
+ \pgftransformrotate{180}
+ \pgfnode{trarrow}{tip}{}{}{\pgfusepath{stroke}}
+ \else
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\ctikzvalof{tripoles/pmos/arrow pos}}{%
+ \pgfpoint%
+ {\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \fi
+ \endpgfscope
+ \fi
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+
+
+ \pgfusepath{draw}
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+
+ \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+
+ \ifpgf@circuit@pmos@nocircle\else
+ % we are not scaling the circle with the MOS --- I think it's better to have it
+ % coherent with the poles/nodes of the rest of the circuit.
+ \pgfpathcircle{\pgfpoint
+ {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left - \ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \ifpgf@circuit@pmos@emptycircle
+ \pgfsetfillcolor{white}
+ \fi
+ \pgfusepath{draw,fill}
+ \fi
+}
+
+%%% depletion MOSFET (simplified symbols)
+
+\long\def\pgfcirc@filldraw@depletion#1{%
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % if there is no explicit fill check the specific key
+ \edef\@@tmp{\ctikzvalof{tripoles/#1/depletion color}}\edef\@@none{none}%
+ \ifx\@@tmp\@@none % if it's none
+ \pgfusepath{draw}%
+ \else
+ \edef\@@default{default}%
+ \ifx\@@tmp\@@default % fill with the pen color
+ \pgfusepath{draw, fill}%
+ \else
+ \pgfsetfillcolor{\@@tmp}%
+ \pgfusepath{draw, fill}%
+ \fi
+ \fi
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}%
+ \pgfusepath{draw, fill}%
+ \fi
+}
+
+\pgfcircdeclaretransistor{nmosd}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/nmosd/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/nmosd/gate height}\pgf@y
+ }
+ \anchor{nobulk}{ %override
+ \left
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/nmosd/depletion width}\pgf@x
+ \pgf@x=\ctikzvalof{tripoles/nmosd/base width}\pgf@x
+ \advance\pgf@x by -\pgf@circ@res@temp
+ }
+ }{%
+ % draw depletion channel
+ % add the circle if requested (before everything else, so we can fill it)
+ \pgfcirc@transistorcircle
+ \pgfscope
+ \pgfpathrectanglecorners
+ {\pgfpoint
+ {\ctikzvalof{tripoles/nmosd/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@up}}
+ {\pgfpoint
+ {(\ctikzvalof{tripoles/nmosd/base width} - \ctikzvalof{tripoles/nmosd/depletion width})*\pgf@circ@res@left}
+ {-\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@up}}
+ \pgfcirc@filldraw@depletion{nmosd}
+ \endpgfscope
+ % draw drain and source terminals
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/nmosd/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmosd/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmosd/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmosd/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/nmosd/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmosd/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmosd/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/nmosd/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \ifpgf@circuit@trans@arrowatend
+ \pgftransformshift{\pgfpoint
+ {\pgf@circ@res@right}%
+ {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{trarrow}{btip}{}{}{\pgfusepath{stroke}}
+ \else
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\ctikzvalof{tripoles/nmosd/arrow pos}}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/nmosd/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\pgf@circ@res@right-\ctikzvalof{tripoles/nmosd/depletion width}*\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@down}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \fi
+ \endpgfscope
+ \fi
+
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/nmosd/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+
+ \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/nmosd/base width}\pgf@circ@res@left-\ctikzvalof{tripoles/nmosd/depletion width}*\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+}
+
+\pgfcircdeclaretransistor{pmosd}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/pmosd/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/pmosd/gate height}\pgf@y
+ }
+ \anchor{nobulk}{ %override
+ \left
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/pmosd/depletion width}\pgf@x
+ \pgf@x=\ctikzvalof{tripoles/pmosd/base width}\pgf@x
+ \advance\pgf@x by -\pgf@circ@res@temp
+ }
+ }{%
+ % add the circle if requested (before everything else, so we can fill it)
+ \pgfcirc@transistorcircle
+ % draw depletion channel
+ \pgfscope
+ \pgfpathrectanglecorners
+ {\pgfpoint
+ {\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}}
+ {\pgfpoint
+ {(\ctikzvalof{tripoles/pmosd/base width} - \ctikzvalof{tripoles/pmosd/depletion width})*\pgf@circ@res@left}
+ {-\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}}
+ \pgfcirc@filldraw@depletion{pmosd}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \ifpgf@circuit@mos@arrows
+ \pgfscope
+ \ifpgf@circuit@trans@arrowatend
+ \pgftransformshift{\pgfpoint
+ {\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left-\ctikzvalof{tripoles/nmosd/depletion width}*\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}%
+ }
+ \pgftransformrotate{180}
+ \pgfnode{trarrow}{tip}{}{}{\pgfusepath{stroke}}
+ \else
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \pgftransformlineattime{\ctikzvalof{tripoles/pmosd/arrow pos}}{%
+ \pgfpoint%
+ {\pgf@circ@res@right-\ctikzvalof{tripoles/nmosd/depletion width}*\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\ctikzvalof{tripoles/pmosd/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}%
+ }
+ \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
+ \fi
+ \endpgfscope
+ \fi
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmosd/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmosd/base height}\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmosd/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pmosd/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+
+
+ \pgfusepath{draw}
+ \ifpgf@circuit@bpt@drawgate
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pmosd/gate width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+
+ \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left-\ctikzvalof{tripoles/nmosd/depletion width}*\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \fi
+
+ \ifpgf@circuit@pmos@nocircle\else
+ % we are not scaling the circle with the MOS --- I think it's better to have it
+ % coherent with the poles/nodes of the rest of the circuit.
+ \pgfpathcircle{\pgfpoint
+ {\ctikzvalof{tripoles/pmosd/gate width}\pgf@circ@res@left - \ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
+ \ifpgf@circuit@pmos@emptycircle
+ \pgfsetfillcolor{white}
+ \fi
+ \pgfusepath{draw,fill}
+ \fi
+}
+%% HEMT FET Transistor
+\pgfcircdeclaretransistor{hemt}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/hemt/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/hemt/gate height}\pgf@y
+ }
+ }{%
+ % add the circle if requested (before everything else, so we can fill it)
+ \pgfcirc@transistorcircle
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/hemt/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/hemt/base height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+\long\def\drawfetcore#1{
+ \pgftransformationadjustments
+ % add the circle if requested (before everything else, so we can fill it)
+ \pgfcirc@transistorcircle
+
+ %top connection
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
+ \ifpgf@circuit@trans@depletiontype
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \else
+
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up*0.45}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up*0.25}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down*0.25}}
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
+ \fi
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+ %Bulk connection line
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ %bottom connection
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ %draw thick gate line
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ % arrows
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \ifpgf@circuit@trans@ntype
+ \edef\@@anchor{tip}
+ \edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{btip}
+ \edef\@@pos{0.0}
+ \fi
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.6}
+ \fi
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \ifpgf@circuit@trans@ntype
+ \else
+ \pgftransformrotate{180}
+ \fi
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+% GATE CONNECTION
+\ifpgf@circuit@bpt@drawgate
+ \ifpgf@circuit@trans@ntype
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
+ {-\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
+ \fi
+ \pgfusepath{draw}
+\fi
+
+}
+
+\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
+{\pgfcircdeclaretransistor{#1}{
+ \anchor{bulk}{\left\pgf@x=0pt}
+ \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/#1/gate height}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/#1/gate height}\pgf@y
+ }
+ #2
+ }
+ {#3}
+}
+
+\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nfet}
+}
+
+\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pfet}
+}
+
+\pgfdeclaretransistorwrapperaddbulk{nfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{nfetd}
+}
+
+\pgfdeclaretransistorwrapperaddbulk{pfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{pfetd}
+}
+% N-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfete}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+\fi
+}
+
+% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
+\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{nigfetebulk}
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+% N-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{nigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfete}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/pigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope
+ \fi
+}
+
+% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
+\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
+ \pgf@circuit@trans@depletiontypefalse
+ \drawfetcore{pigfetebulk}
+}
+
+% P-CHANNEL IGFET DEPLETION TYPE
+\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
+ \pgf@circuit@trans@depletiontypetrue
+ \drawfetcore{pigfetd}
+
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@up}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+}
+
+\pgfcircdeclaretransistor{njfet}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/njfet/gate height 2}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/njfet/gate height 2}\pgf@y
+ }
+ }{%
+ % add the circle if requested (before everything else, so we can fill it)
+ \pgfcirc@transistorcircle
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ % arrow
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{tip}\edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.6}
+ \fi
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
+ \pgfusepath{draw}
+}
+
+\pgfcircdeclaretransistor{pjfet}{
+ \anchor{inner up}{
+ \northeast
+ \pgf@y=\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@y
+ }
+ \anchor{inner down}{
+ \northeast
+ \pgf@y=-\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@y
+ }
+ }{%
+ % add the circle if requested (before everything else, so we can fill it)
+ \pgfcirc@transistorcircle
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{btip}\edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.4}
+ \fi
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }{%
+ \pgfpoint{\pgf@circ@res@left}%
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
+ {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+\pgfdeclaretransistorwrapperaddbulk{isfet}{
+ }{%
+ % add the circle if requested (before everything else, so we can fill it)
+ \pgfcirc@transistorcircle
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ % DRAIN CONNECTION
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@up}}
+ % DRAIN
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ % GATE, DEPLETION TYPE
+ \pgfscope %% added
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/isfet/base height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/isfet/base height}\pgf@circ@res@down}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth} %% added
+ \pgfusepath{draw} %% added
+ \endpgfscope %% added
+
+ % BULK
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
+ {\pgf@circ@res@up+\pgf@circ@res@down}}
+
+ % SOURCE
+ \pgfpathmoveto{\pgfpoint
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
+ {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@down}}
+ % SOURCE CONNECTION
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
+ \pgfusepath{draw}
+
+ % SOLDER DOT at source-bulk connection
+ \ifpgf@circuit@fet@solderdot
+ \pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
+ \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
+ \pgfnode{circ}{center}{}{}{}
+ \endpgfscope{}
+ \fi
+ % ARROW
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgfresetnontranslationattimefalse
+ \ifpgf@circuit@trans@arrowatend
+ \edef\@@anchor{tip}\edef\@@pos{1.0}
+ \else
+ \edef\@@anchor{center}\edef\@@pos{0.6}
+ \fi
+ \pgftransformlineattime{\@@pos}{%
+ \pgfpoint
+ {\pgf@circ@res@right}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }{%
+ \pgfpoint%
+ {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}%
+ {\pgf@circ@res@up+\pgf@circ@res@down}%
+ }
+ \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfusepath{draw}
+
+ % Wavy lines
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/waves y sep}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% end of transistors
+
+%%%%%%%%%%%%%
+%% Switches
+%%%%%%%%%%%%%
+
+\pgfcircdeclarebipole{
+ \anchor{out 1}{
+ \northeast
+ \pgf@y=0cm
+ }
+ \anchor{out 2}{
+ \northeast
+ \pgf@y=.8\pgf@y
+ }
+}
+{\ctikzvalof{tripoles/toggleswitch/height 2}}
+{toggleswitch}
+{\ctikzvalof{tripoles/toggleswitch/height}}
+{\ctikzvalof{tripoles/toggleswitch/width}}
+{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgfusepath{draw}
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+
+ \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
+ \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \pgfsetdash{}{0cm}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% operational and instrumentation amplifiers
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{op amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\left{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/op amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ % Triangle
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Output terminal
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@right}{0pt}}
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+% Op amp shape as in european standard EN 60617
+\pgfdeclareshape{en amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\left{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{up}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{down}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/en amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+
+ \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\hbox{\ctikzvalof{tripoles/en amp/font2}\ctikzvalof{tripoles/en amp/text}}}
+ % \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font2}$\mathstrut{\triangleright}\,\mathrm{A}$}
+ }
+}
+
+% Fully differential output op amp
+% Contributed by Kristofer M. Monisit
+\pgfdeclareshape{fd op amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \savedanchor\outline{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y\pgf@x=0pt\relax
+ }
+ \anchor{north}{
+ \northwest\pgf@x=0pt\relax
+ }
+ \savedanchor\left{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/fd op amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out up}{
+ \northwest
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{out down}{
+ \northwest
+ \pgf@y=-\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{out +}{
+ \outline
+ \pgf@y=\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{out -}{
+ \outline
+ \pgf@y=-\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bout +}{
+ \outline
+ \pgf@xa=\pgf@x\pgf@ya=\pgf@y
+ \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+ {\pgfpoint{\pgf@xa}{0pt}}
+ {\pgfpoint{0pt}{\pgf@ya}}
+ }
+ \anchor{bout -}{
+ \outline
+ \pgf@xa=\pgf@x\pgf@ya=\pgf@y
+ \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+ {\pgfpoint{\pgf@xa}{0pt}}
+ {\pgfpoint{0pt}{\pgf@ya}}
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bout up}{
+ \northwest
+ \pgf@xa=\pgf@x\pgf@ya=\pgf@y
+ \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+ {\pgfpoint{\pgf@xa}{0pt}}
+ {\pgfpoint{0pt}{\pgf@ya}}
+ }
+ \anchor{bout down}{
+ \northwest
+ \pgf@xa=\pgf@x\pgf@ya=\pgf@y
+ \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+ {\pgfpoint{\pgf@xa}{0pt}}
+ {\pgfpoint{0pt}{\pgf@ya}}
+ \pgf@y=-\pgf@y
+ }
+ % end border anchors
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{out}{% should not be used
+ \left
+ \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x \pgf@y=-\pgf@y }
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ % Triangle
+ % Includes output terminals in the traingular shape
+ % to ensure that diagonal joins are properly displayed
+ % we first draw the main triangle and the leads with normal thickness,
+ % and the redraw the main triangle with the component shape
+ \pgfscope
+ % shift origin a bit to ease calculations
+ \pgftransformxshift{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@step
+
+ % Initial point (right vertex)
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+
+ % Negative output terminal
+ \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@up}}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\ctikzvalof{tripoles/fd op amp/output height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@up}}}
+
+ % Top vertex
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+
+ % Bottom vertex
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+
+ % Positive output terminal
+ \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@down}}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\ctikzvalof{tripoles/fd op amp/output height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@down}}}
+
+ % Right vertex
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+
+ \pgfpathclose
+ \pgfusepath{stroke}
+
+ % ok, now we'll redraw the triangle with the class specific
+ % thickness and optionally fill
+
+ \pgfscope
+ \pgf@circ@setlinewidth{quadpoles}{\pgflinewidth}
+
+ % Initial point (right vertex)
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ % Top vertex
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ % Bottom vertex
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope % thick and fill
+ \endpgfscope % shift
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Negative output terminal label
+ \pgftext[right, bottom, x=3pt, y=1pt, at=\pgfpoint{0pt}{0.425\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@oplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Positive output terminal label
+ \pgftext[right, top, x=3pt, y=-1pt, at=\pgfpoint{0pt}{0.425\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@oplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+
+% Instrumentation amplifier with differential output
+\pgfdeclareshape{fd inst amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ % when tikz calls the anchor it wants the relative position in the lengths
+ % \pgf@x \pgf@y
+ % \pgfpoint* functions set that variables
+ % anchors are visible outside and run on use
+ \anchor{center}{\pgfpointorigin}
+ % savedanchors are internals and run on node creation (not use)
+ % bounding-box top left
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{nw}{
+ \northwest
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y\pgf@x=0pt\relax
+ }
+ \anchor{north}{
+ \northwest\pgf@x=0pt\relax
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \ctikzvalof{tripoles/fd inst amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/fd inst amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ % reference voltage input anchors.
+ \savedanchor\refv{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/fd inst amp/refv pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
+ }
+ % we need both because they are normally drawn under the amp, and if you
+ % mirror it vertically you need them
+ \anchor{refv up}{
+ \refv
+ }
+ \anchor{refv down}{
+ \refv
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\outport{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
+ }
+ \anchor{out}{
+ \outport
+ \pgf@y=0pt
+ }
+ \anchor{out +}{
+ \outport
+ }
+ \anchor{out -}{
+ \outport
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\outportfixed{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=-.5\pgf@x
+ }
+ \anchor{out up}{
+ \outportfixed
+ }
+ \anchor{out down}{
+ \outportfixed
+ \pgf@y=-\pgf@y
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/fd inst amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@x=-\pgf@x \pgf@y=0pt
+ }
+ \anchor{bout +}{
+ \outport
+ \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
+ }
+ \anchor{bout -}{
+ \outport
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
+ }
+ \anchor{bout up}{
+ \outportfixed
+ \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
+ }
+ \anchor{bout down}{
+ \outportfixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
+ }
+ % end border anchors
+ %
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ % let's start drawing the component
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ %
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ % main component, normally in thicker lines
+ \pgfscope
+ \newdimen\pgf@circ@res@right@double
+ \pgf@circ@res@right@double=2\pgf@circ@res@right
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@step
+ %first point (near output)
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{0}}
+ %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
+ % and then to the input "front up", "down", to the output short side "down"
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@down}}
+ % ...and close
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ % input terminal up
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % input terminal down
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % output leads down and up
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}} %
+ \pgftext[right, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$-\;$\else$+\;$\fi}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}} %
+ \pgftext[right, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$+\;$\else$-\;$\fi}
+ %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+% Transconductance amplifier (Transkonduktanzverstรคrker)
+\pgfdeclareshape{gm amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/gm amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/gm amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/gm amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/gm amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgfscope
+ \newdimen\pgf@circ@res@right@double
+ \pgf@circ@res@right@double=2\pgf@circ@res@right
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@step
+ %Umrandung:
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{0}} %geรคndert startpunkt neu am ausgangsstrich
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@up}}%vom Ausgang nach oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@down}}%ecke links unten nach rechts unten
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right}{0pt}} %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+
+ }
+}
+
+% Instrumentation amplifier
+\pgfdeclareshape{inst amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ % when tikz calls the anchor it wants the relative position in the lengths
+ % \pgf@x \pgf@y
+ % \pgfpoint* functions set that variables
+ % anchors are visible outside and run on use
+ \anchor{center}{\pgfpointorigin}
+ % savedanchors are internals and run on node creation (not use)
+ % bounding-box top left
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{nw}{
+ \northwest
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/inst amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/inst amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ % reference voltage input anchors.
+ \savedanchor\refv{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/inst amp/refv pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
+ }
+ % we need both because they are normally drawn under the amp, and if you
+ % mirror it vertically you need them
+ \anchor{refv up}{
+ \refv
+ }
+ \anchor{refv down}{
+ \refv
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/inst amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ % let's start drawing the component
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ %
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ % main component, normally in thicker lines
+ \pgfscope
+ \newdimen\pgf@circ@res@right@double
+ \pgf@circ@res@right@double=2\pgf@circ@res@right
+
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@step
+ %first point (near output)
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{0}}
+ %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
+ % and then to the input "front up", "down", to the output short side "down"
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@down}}
+ % ...and close
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}}
+ %
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Output terminal
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{0pt}} %
+ %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+% Instrumentation amplifier with terminals for gain resistance between inputs
+\pgfdeclareshape{inst amp ra}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ % bounding-box top left
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{nw}{
+ \northwest
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@y=-\pgf@y\pgf@x=0pt\relax
+ }
+ \anchor{north}{
+ \northwest\pgf@x=0pt\relax
+ }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}
+ {\left
+ \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
+ }
+ % inputs (+-)
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ % R ampli anchors. They are by default at 20% more than R-length distance
+ % you can change that with the `ra pos` key (use 0.5 for one-R).
+ \savedanchor\raOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\pgf@circ@scaled@Rlen
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{ra up}{
+ \raOneFixed
+ }
+ \anchor{ra down}{
+ \raOneFixed
+ \pgf@y=-\pgf@y
+ }
+ \savedanchor\raOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\pgf@circ@scaled@Rlen
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \anchor{ra-}{
+ \raOne
+ }
+ \anchor{ra+}{
+ \raOne
+ \pgf@y=-\pgf@y
+ }
+ % power supplies
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/inst amp ra/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ % reference voltage input anchors.
+ \savedanchor\refv{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
+ \pgf@y=0.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=0.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/inst amp ra/refv pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
+ }
+ % we need both because they are normally drawn under the amp, and if you
+ % mirror it vertically you need them
+ \anchor{refv up}{
+ \refv
+ }
+ \anchor{refv down}{
+ \refv
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/inst amp ra/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bra up}{
+ \raOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bra down}{
+ \raOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bra-}{
+ \raOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bra+}{
+ \raOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \anchor{west}{
+ \left
+ }
+ \anchor{east}{
+ \left
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ % drawing of the component
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \newdimen\pgf@circ@res@right@double
+ \pgf@circ@res@right@double=2\pgf@circ@res@right
+
+ % main component, normally in thicker lines
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@step
+ %primer punto: la linea de salida (lado componente)
+ \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{0}}
+ %from the exit to the top (short side)... (note that the .6 must be copied in \up anchor
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
+ % and then to the input "front up", "down", to the output short side "down"
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@down}}
+ % ...and close
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ % ra terminal -
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+ % ra terminal +
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {-\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {-\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
+
+ % Negative input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}}
+ %
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
+
+ % Positive input terminal
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}}
+ %
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}}
+ \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
+
+ % Output terminal
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{0pt}} %
+ %
+ \pgfsetrectcap
+ \pgfusepath{draw}
+ }
+}
+
+% Buffer
+% Contributed by Danilo Piazzalunga
+\pgfdeclareshape{buffer}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/buffer/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/buffer/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{bin}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0.7\pgf@x
+ }
+ \anchor{bout}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-0.7\pgf@x
+ }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \northwest
+ \pgfmathsetlength{\pgf@x}{0.7*\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{.7\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+ }
+}
+
+% plain amplifier, no symbols
+\pgfdeclareshape{plain amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/plain amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
+ }
+ \savedanchor\inOneFixed{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@y=\ctikzvalof{tripoles/plain amp/input height}\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{-}{
+ \inOne
+ }
+ \anchor{+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ }
+ \anchor{in up}{
+ \inOneFixed
+ }
+ \anchor{in down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/plain amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin up}{
+ \inOneFixed
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bin down}{
+ \inOneFixed
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b-}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{b+}{
+ \inOne
+ \pgf@y=-\pgf@y
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/plain amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@up}}
+
+
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+ }
+}
+
+% plain amplifier, no symbols, one input
+\pgfdeclareshape{plain mono amp}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{north}{ \northwest \pgf@x=0pt }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \savedanchor\left{%
+ \pgf@y=0pt
+ }
+ \savedanchor\inOne{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@y=0pt\relax
+ }
+ \anchor{in}{
+ \inOne
+ }
+ % support for border anchors
+ \savedanchor\leftedge{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x = \ctikzvalof{tripoles/plain amp/port width}\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{leftedge}{\leftedge}
+ \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
+ \anchor{bin}{
+ \inOne
+ \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
+ }
+ \anchor{bout}{
+ \leftedge
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ % end border anchors
+ \savedanchor\up{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfpointlineattime{
+ \ctikzvalof{tripoles/plain amp/up pos}}{
+ \pgfpoint{
+ \ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {\pgf@circ@res@up}}
+ {\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
+ }
+ \anchor{up}{
+ \up
+ }
+ \anchor{down}{
+ \up
+ \pgf@y=-\pgf@y
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
+ \else
+ \leftedge
+ \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
+ \fi
+ \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgftransformxshift{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ \pgf@circ@res@step=\pgf@circ@res@right
+ \advance\pgf@circ@res@step by -\pgf@circ@res@left
+ \pgf@circ@res@step=\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@step
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint
+ {\pgf@circ@res@left}
+ {0pt}}
+ \pgfpathlineto{\pgfpoint
+ {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
+ {0pt}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
+
+ \pgfusepath{draw}
+ }
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% electromechanical device (motor/generator)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{elmech}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{electromechanicals}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/elmech/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/elmech/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \anchorborder{%
+ \@tempdima=\pgf@x\@tempdimb=\pgf@y
+ \northwest\pgf@circ@res@other=-\pgf@x
+ \pgfpointborderellipse{\pgfqpoint{\@tempdima}{\@tempdimb}}{\pgfqpoint{\pgf@circ@res@other}{\pgf@circ@res@other}}
+ }
+ \anchor{block north west}{\northwest\pgf@x=0.5\pgf@x}
+ \anchor{block south west}{\northwest\pgf@x=0.5\pgf@x\pgf@y=-\pgf@y}
+ \anchor{block north east}{\northwest\pgf@x=-0.5\pgf@x}
+ \anchor{block south east}{\northwest\pgf@x=-0.5\pgf@x\pgf@y=-\pgf@y}
+ \anchor{block up right}{
+ \northwest
+ % remember that pgf@x is negative
+ % center of the block is at 0.5*H+W*cos(30)/2
+ \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
+ \pgf@x=-0.5\pgf@x
+ }
+ \anchor{block up left}{
+ \northwest
+ % remember that pgf@x is negative
+ % center of the block is at 0.5*H+W*cos(30)/2
+ \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
+ \pgf@x=0.5\pgf@x
+ }
+ \anchor{block down right}{
+ \northwest
+ % remember that pgf@x is negative
+ % center of the block is at 0.5*H+W*cos(30)/2
+ \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
+ \pgf@y=-\pgf@y
+ \pgf@x=-0.5\pgf@x
+ }
+ \anchor{block down left}{
+ \northwest
+ % remember that pgf@x is negative
+ % center of the block is at 0.5*H+W*cos(30)/2
+ \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
+ \pgf@y=-\pgf@y
+ \pgf@x=0.5\pgf@x
+ }
+ \behindbackgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@scaled@Rlen
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfscope % clip the bar: whole size minus the circle
+ \pgfpathrectanglecorners{\pgfpoint{-.5\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{.5\pgf@circ@res@up}}
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgfseteorule
+ \pgfusepath{clip}
+ \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfsetfillcolor{\ctikzvalof{color}}
+ \pgfusepath{fill, draw}
+ \endpgfscope
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{white}
+ % ...but override it if the class is defined!
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \pgfusepath{draw, fill}
+ \fi
+ \endpgfscope
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%
+%% Magnetron
+%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{magnetron}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}} % class of these components
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{anode}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{cathode1}{
+ \northwest
+ \pgf@circ@res@step=\pgf@y
+ \pgfmathparse{cos(105)}
+ \pgf@x=\pgfmathresult\pgf@circ@res@step
+ \pgfmathparse{sin(105)}
+ \pgf@y=\pgfmathresult\pgf@circ@res@step
+ %\pgfpointorigin
+ %\pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
+ }
+ \anchor{cathode2}{
+ \northwest
+ \pgf@circ@res@step=\pgf@y
+ \pgfmathparse{cos(75)}
+ \pgf@x=\pgfmathresult\pgf@circ@res@step
+ \pgfmathparse{sin(75)}
+ \pgf@y=\pgfmathresult\pgf@circ@res@step
+ %\pgfpointorigin
+ %\pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
+ }
+ \anchor{text}{
+ \pgfpointorigin
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -.5\ht\pgfnodeparttextbox
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{%
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{top}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathstart}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{pathend}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{bottom}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgfmathsetlength{\pgf@circ@res@other}{sin(15)*\pgf@circ@res@up}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ %create outer circle
+ \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@right}
+ \pgf@circ@draworfill
+ %create chambers
+ \foreach \angle in {45,135,225,315}{
+ \pgfpathmoveto{ \pgfpointpolar{\angle}{0.6\pgf@circ@res@right}}
+ \pgfpathlineto{ \pgfpointpolar{\angle}{\pgf@circ@res@right}}
+ }
+ \pgfsetroundcap
+ \pgfusepath{draw}
+ \pgfscope
+ %draw connection from outside
+ %anode
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{0\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ %cathodes
+ \pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ %create cathode
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0}{.15\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ %create anode
+ \pgfpathmoveto{\pgfpoint{0.3\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+
+ \pgfsetbuttcap
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Electronic tubes, submitted by J. op den Brouw
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Draw tube outline
+\def\pgf@circ@tubes@drawtube{%
+ \ifdim\ctikzvalof{tubes/width}pt>\ctikzvalof{tubes/height}pt\relax
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfutil@tempdima=\pgf@circ@res@right
+ \advance\pgfutil@tempdima by -\pgf@circ@res@up
+ \pgfpathlineto{\pgfpoint{\pgfutil@tempdima}{\pgf@circ@res@up}}
+ \pgfpatharc{90}{-90}{\pgf@circ@res@up}
+ \pgfpathlineto{\pgfpoint{-\pgfutil@tempdima}{-\pgf@circ@res@up}}
+ \pgfpatharc{270}{90}{\pgf@circ@res@up}
+ \else
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{0pt}}
+ \pgfutil@tempdima=\pgf@circ@res@up
+ \advance\pgfutil@tempdima by -\pgf@circ@res@right
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
+ \pgfpatharc{180}{0}{\pgf@circ@res@right}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfutil@tempdima}}
+ \pgfpatharc{180}{0}{-\pgf@circ@res@right}
+ \fi
+ \pgfpathclose
+}
+
+%% The diode (tube), triode, tetrode and pentode only differ in the
+%% number of grids. So we construct a generic declare function in
+%% which we can put code for the grid anchors and grid drawing code
+%% \pgfcircdeclaretube{tube name}{grid anchors}{grid drawing code}
+\long\def\pgfcircdeclaretube#1#2#3{%
+ \pgfdeclareshape{#1}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
+ % x and y should be half the Rlen
+ \pgf@y=\pgf@circ@res@up
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\pgf@circ@res@right
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{north} {%
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{east}{%
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{south}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{west}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{north west}{%
+ \northwest
+ }
+ \anchor{north east}{%
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{anode} {%
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{cathode}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
+ }
+ \anchor{cathode 1}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
+ }
+ \anchor{cathode 2}{%
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=-\ctikzvalof{tubes/cathode width}\pgf@x
+ }
+ \anchor{filament 1}{%
+ \northwest
+ \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgf@x=\pgfmathresult\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{filament 2}{%
+ \northwest
+ \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgf@x=-\pgfmathresult\pgf@x
+ \pgf@y=-\pgf@y
+ }
+
+ % Extra anchors
+ #2
+
+ \backgroundpath{
+ \pgfscope
+ % Line width for tripoles
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ % Setup to draw tube
+ \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up=\ctikzvalof{tubes/tube radius}\pgf@circ@res@up
+ \pgf@circ@res@right=\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+
+ % Tube outline
+ \pgf@circ@tubes@drawtube
+
+ % Setup to draw grid, filament, anode and cathode
+ \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@up=0.5\pgf@circ@res@up
+ \pgf@circ@res@right=0.5\pgf@circ@res@right
+
+ % Tube fill color (if any)
+ \pgf@circ@draworfill
+
+ % Grid drawing
+ #3
+
+ % Filament (is not drawn by default)
+ \ifpgf@circuit@tubes@filament
+ \pgf@circ@res@temp=-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up
+ \advance\pgf@circ@res@temp by -\ctikzvalof{tubes/filament distance}\pgf@circ@res@up
+ \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
+ \pgf@xa=\pgfmathresult\pgf@circ@res@right
+ \pgfmathparse{\ctikzvalof{tubes/tube radius}+\ctikzvalof{tubes/tube radius}*cos(\ctikzvalof{tubes/filament angle}}
+ \pgf@ya=\pgfmathresult\pgf@circ@res@up
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@ya}}
+ \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@ya}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@circ@res@up}}
+ \pgf@circuit@tubes@filamentfalse
+ \fi
+
+ % Anode (or plate)
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}} % north
+ \pgfpathlineto{\pgfpoint{0pt}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
+
+ % Cathode
+ \ifpgf@circuit@tubes@nocathode
+ \pgf@circuit@tubes@nocathodefalse
+ \else
+ \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
+ \ifpgf@circuit@tubes@fullcathode
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
+ \pgf@circuit@tubes@fullcathodefalse
+ \else
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-\ctikzvalof{tubes/cathode right extend}\pgf@circ@res@up}}
+ \fi
+ \fi
+
+ % Draw the background
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+ }
+}
+
+\pgfcircdeclaretube{diodetube}{}{} % shape diode already exists
+
+\pgfcircdeclaretube{triode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+ \anchor{control} {%
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+}
+{
+ % Grid protrusion
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+}
+
+\pgfcircdeclaretube{tetrode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{screen} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
+ \pgf@y=0.5\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+}
+{
+ % Grid x/y points
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
+ \pgfutil@tempdimb=-\pgfutil@tempdima
+ \pgfutil@tempdima=0.5\pgfutil@tempdima
+ \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \pgfutil@tempdimb=0.5\pgfutil@tempdimb
+ \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ % Grid protrusion
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+}
+
+\pgfcircdeclaretube{pentode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{screen} {%
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+ \anchor{suppressor} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+}
+{
+ % Grid x/y points
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
+ \pgfutil@tempdimb=-\pgfutil@tempdima
+ \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ % Grid protrusion
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+}
+
+\pgfcircdeclaretube{pentode suppressor to cathode}
+{
+ \anchor{grid} {% should not be used
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{control} {%
+ \northwest
+ \pgfutil@tempdima=\pgf@y
+ \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
+ \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
+ }
+ \anchor{screen} {%
+ \northwest
+ \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
+ }
+}
+{
+ % Grid x/y points
+ \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
+ \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
+ \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
+ \pgfutil@tempdimb=-\pgfutil@tempdima
+ \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
+ % Grid protrusion
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
+ % Grid dashes: calculations
+ \pgf@xb=2\pgf@circ@res@right
+ \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
+ \multiply\pgf@circ@count@a by 2\relax
+ \advance\pgf@circ@count@a by 1\relax
+ \advance\pgf@circ@res@step by -\pgf@xa
+ \divide\pgf@circ@res@step by \pgf@circ@count@a
+ % Grid dashes: draw
+ \pgf@circ@res@temp=\pgf@xa
+ \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
+ \loop
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \ifnum\pgf@circ@count@a>1\relax
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
+ \fi
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
+ \advance\pgf@circ@res@temp by\pgf@circ@res@step
+ \advance\pgf@circ@count@a by-1
+ \ifnum\pgf@circ@count@a>0\relax
+ \repeat
+ % Grid: connection from suppressor to cathode
+ \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima-2*\ctikzvalof{tubes/grid separation}\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
+
+}
+
+%%%---------- close: tex/pgfcirctripoles
+%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
+%%%---------- open: tex/pgfcircquadpoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Quadripoles
+
+\long\def\pgfcircdeclarequadpole#1#2#3{
+ \pgfdeclareshape{#1}
+ {
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{inductors}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedmacro{\stretto}{\def\stretto{\ctikzvalof{quadpoles/#1/inner}}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{quadpoles/#1/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=.5\pgf@circ@scaled@Rlen
+ \pgf@x=-\ctikzvalof{quadpoles/#1/width}\pgf@x
+ }
+ %% we define the upper right (positive coord) dot (which is B1)
+ \savedanchor{\innerdot}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@xa=.5\pgf@circ@scaled@Rlen
+ \pgf@xa=-\ctikzvalof{quadpoles/#1/width}\pgf@xa
+ % by default use the cute inductor size
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@scaled@Rlen/2}
+ % check if it's american
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}
+ \edef\pgf@temp{american}
+ \ifx\pgf@circ@temp\pgf@temp
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/americaninductor/height}*\pgf@circ@scaled@Rlen/2}
+ \fi
+ % check if it's european
+ \edef\pgf@temp{european}
+ \ifx\pgf@circ@temp\pgf@temp
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/fullgeneric/height}*\pgf@circ@scaled@Rlen/2}
+ \fi
+ \pgfmathsetlength\pgf@y{0.5*\pgf@circ@scaled@Rlen}
+ }
+ \savedanchor{\outerdot}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@xa=.5\pgf@circ@scaled@Rlen
+ \pgf@xa=-\ctikzvalof{quadpoles/#1/width}\pgf@xa
+ % by default use the cute inductor size
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@scaled@Rlen/2}
+ % check if it's american
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}
+ \edef\pgf@temp{american}
+ \ifx\pgf@circ@temp\pgf@temp
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/americaninductor/height}*\pgf@circ@scaled@Rlen/2}
+ \fi
+ % check if it's european
+ \edef\pgf@temp{european}
+ \ifx\pgf@circ@temp\pgf@temp
+ \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/fullgeneric/height}*\pgf@circ@scaled@Rlen/2}
+ \fi
+ \pgfmathsetlength\pgf@y{0.5*\pgf@circ@scaled@Rlen}
+ }
+ \anchor{A2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{B1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{A1}{
+ \northwest
+ }
+ \anchor{B2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ %% dot's anchors
+ \anchor{inner dot A1}{\innerdot\pgf@x=-\pgf@x}
+ \anchor{outer dot A1}{\outerdot\pgf@x=-\pgf@x}
+ \anchor{inner dot A2}{\innerdot\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{outer dot A2}{\outerdot\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{inner dot B1}{\innerdot}
+ \anchor{outer dot B1}{\outerdot}
+ \anchor{inner dot B2}{\innerdot\pgf@y=-\pgf@y}
+ \anchor{outer dot B2}{\outerdot\pgf@y=-\pgf@y}
+ % geographical
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{base}{
+ \northwest
+ \pgf@x=0pt
+ }
+ #3
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ #2
+ }
+ }
+}
+
+
+\def\pgf@circ@drawtransformerbasicanchor{
+ \ctikzvalof{quadpoles/trans/height}
+ \anchor{AA2}{
+ \northwest
+ \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{AA1}{
+ \northwest
+ \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
+ }
+ \anchor{BB2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
+ \pgf@x=.7\pgf@x
+ \pgf@y=-\pgf@y
+ \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
+ }
+}
+
+%% Null styles that can be used to change individually the L1 and L2
+%% inductors of the transformer.
+
+\ctikzset{transformer L1/.style={}}
+\ctikzset{transformer L2/.style={}}
+
+\def\pgf@circ@drawtransformerbasicbody{
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@up}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@left}%
+ {\pgf@circ@res@down}%
+ }
+
+ \pgfkeys{\circuitikzbasekey/.cd, transformer L1}
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+
+ \endpgfscope
+ \pgfscope
+ \pgfslopedattimetrue
+ \pgfallowupsidedownattimetrue
+ \pgftransformlineattime{.5}{%
+ \pgfpoint%
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@down}%
+ }{%
+ \pgfpoint
+ {\stretto\pgf@circ@res@right}%
+ {\pgf@circ@res@up}%
+ }
+
+ \pgfkeys{\circuitikzbasekey/.cd, transformer L2}
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{fullgenericshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
+ \else%
+ \def\pgf@temp{cute}
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgfnode{cuteinductorshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
+ \else%
+ \pgfnode{americaninductorshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
+ \fi%
+ \fi%
+
+ \endpgfscope
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{\thisshape-L1}{b}}
+
+ \pgfpathmoveto{\pgfpointanchor{\thisshape-L1}{a}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{\thisshape-L2}{a}}
+
+ \pgfpathmoveto{\pgfpointanchor{\thisshape-L2}{b}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+}
+
+
+\pgfcircdeclarequadpole{transformer}{
+ \pgf@circ@drawtransformerbasicbody
+}{\pgf@circ@drawtransformerbasicanchor}
+
+\pgfcircdeclarequadpole{transformer core}{
+
+ \pgf@circ@drawtransformerbasicbody
+
+ % use the chocke line thickness
+ \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
+
+ % Find the distance from center for the lines representing the core
+ % the 2.5 is for backward compatibility --- the distance was calculated as a fraction
+ % of the whole component, now as a fraction of the distance between coils, to be
+ % compatible with the quadpoles "inner" style.
+ \pgfmathsetlength{\pgf@circ@res@other}{2.5*\stretto*\ctikzvalof{quadpoles/transformer core/core width}*\pgf@circ@res@right}
+
+ \pgfmoveto{\pgfpoint%
+ {\pgf@circ@res@other}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint%
+ {\pgf@circ@res@other}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ %% this should be just -\pgf@circ@res@other, but in case someone define an asymmetric trafo someday...
+ \pgfmathsetlength{\pgf@circ@res@other}{2.5*\stretto*\ctikzvalof{quadpoles/transformer core/core width}*\pgf@circ@res@left}
+ \pgfmoveto{\pgfpoint%
+ {\pgf@circ@res@other}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
+ }
+ \pgflineto{
+ \pgfpoint%
+ {\pgf@circ@res@other}%
+ {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
+ }
+
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgfusepath{draw}
+}{\pgf@circ@drawtransformerbasicanchor}
+
+
+\pgfcircdeclarequadpole{gyrator}{
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{quadpoles}{\pgflinewidth}
+ \pgfmathsetlength{\pgf@circ@res@other}{min(.7*\stretto*\pgf@circ@res@up, .8*\pgf@circ@res@right)} % radius
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{-\pgf@circ@res@other}}
+ \pgfpatharc{-90}{90}{\pgf@circ@res@other}
+ \pgfpathclose
+ \pgf@circ@draworfill
+
+ \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpatharc{90}{270}{\pgf@circ@res@other}
+ \pgfpathclose
+ \pgf@circ@draworfill
+}{}
+
+%%%%%%%%%%%%%%%%%%%%
+%% Block elements
+%%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{mixer}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@boxed
+ \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{e}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{w}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{s}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{n}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{down}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{up}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{\ctikzvalof{tripoles/mixer/width}*\scaledRlen/2}{\ctikzvalof{tripoles/mixer/width}*\scaledRlen/2}}
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{adder}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@boxed
+ \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in 1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{in 2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{in2}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{center}{
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{e}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{w}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{s}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{n}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{down}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{up}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{\ctikzvalof{tripoles/adder/width}*\scaledRlen/2}{\ctikzvalof{tripoles/adder/width}*\scaledRlen/2}}
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{oscillator}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@boxed
+ \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \else
+ \pgf@y=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{up}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{down}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{n}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{s}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{e}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{w}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{up}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{down}{
+ \northwest
+ \pgf@x=.5\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{right}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=0pt
+ }
+ \anchor{left}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y}
+ \anchor{north east}{ \northwest \pgf@x=0pt\relax}
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
+ \anchor{text}{
+ \pgf@x=-2\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{\ctikzvalof{tripoles/oscillator/width}*\scaledRlen/2}{\ctikzvalof{tripoles/oscillator/width}*\scaledRlen/2}}
+ \pgfmathsetlength{\pgf@x}{\pgf@x-\ctikzvalof{tripoles/oscillator/width}*\scaledRlen/2}
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen{}
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
+
+ % draw outer box
+ \ifpgf@circuit@boxed{}
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % draw inner sine waves
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
+
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{circulator}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circuit@boxed
+ \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \else
+ \pgf@y=\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \fi
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+ \anchor{left}{%
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{right}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@y=-\pgf@y
+ \pgf@x=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{e}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{w}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{s}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{n}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{down}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{up}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
+ }{\pgfpoint{\ctikzvalof{tripoles/circulator/width}*\scaledRlen/2}{\ctikzvalof{tripoles/circulator/width}*\scaledRlen/2}}
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
+
+ \pgfscope
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \ifpgf@circuit@boxed
+ \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
+ \fi
+
+ % draw outer circle
+ \ifpgf@circuit@boxed{}
+ \pgf@circ@res@step=.7\pgf@circ@res@step{}
+ \pgfsetdash{}{0pt} % draw solid circle if boxed
+ \else
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \fi
+ \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
+ \pgf@circ@draworfill
+
+ % inner arrow
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetlinewidth{\pgfstartlinewidth}
+
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
+ \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
+ \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+
+ \endpgfscope
+ }
+}
+
+%% gridnode
+\pgfdeclareshape{gridnode}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{center}{
+ \pgfpointorigin
+ }
+
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{up}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{down}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{right}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{left}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \relax
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{text}{
+ \pgf@x=-2\pgf@x
+ \advance \pgf@x by -.5\wd\pgfnodeparttextbox
+ \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgf@circ@res@step=\ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgf@circ@res@step = \ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
+ \divide \pgf@circ@res@step by 2
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@step
+
+ \ifpgf@circuit@dashed
+ \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
+ \fi
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+
+ \ifpgf@circuit@inputarrow
+ {
+ \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
+ }
+ \fi
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{0.05mm}
+
+ % draw grid
+ \foreach \line in {-1,-.5,...,1}
+ {
+ \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\line\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\line\pgf@circ@res@down}}
+ }
+
+ %prevent from draw the inner cross twice
+ \foreach \line in {-.5,0,...,.5}
+ {
+ \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\line\pgf@circ@res@up}}
+
+ \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\line\pgf@circ@res@down}}
+ }
+ \pgfusepath{draw}
+ }
+}
+
+
+% Wilkinson divider
+\pgfdeclareshape{wilkinson}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/wilkinson/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\ctikzvalof{tripoles/wilkinson/width}\pgf@x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{out2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ % draw inner resisitor - european or american style is recognised
+ {
+ \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
+ \pgftransformrotate{90}
+
+ % calculate size of resistor
+ \ifpgf@circuit@europeanresistor
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{genericshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{resistorshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
+ \fi
+ }
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpointanchor{wilk@int@R}{right}}
+
+ \pgfpathmoveto{\pgfpointanchor{wilk@int@R}{left}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ }
+}
+
+%% resistive splitter
+\pgfdeclareshape{splitter}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/wilkinson/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\ctikzvalof{tripoles/wilkinson/width}\pgf@x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{out1}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{out2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ % draw inner stuff
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+
+ \pgfusepath{draw}
+
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ % draw inner resisitors - european or american style is recognised
+ \foreach \respt/\resang/\linepta/\lineptb in %
+ { \pgfpoint{0.5\pgf@circ@res@right}{0pt}/90/%
+ \pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}/\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down},%
+ \pgfpoint{0}{0.25\pgf@circ@res@up}/25/%
+ \pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}/\pgfpoint{0.5\pgf@circ@res@left}{0},%
+ \pgfpoint{0}{0.25\pgf@circ@res@down}/-25/%
+ \pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}/\pgfpoint{0.5\pgf@circ@res@left}{0}}
+ {
+ {
+ \pgftransformshift{\respt}
+ \pgftransformrotate{\resang}
+
+ % calculate size of resistor
+ \ifpgf@circuit@europeanresistor
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{genericshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
+ \else
+ \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
+ \pgftransformscale{\pgfmathresult}
+ \pgfnode{resistorshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
+ \fi
+ }
+
+ \pgfpathmoveto{\linepta}
+ \pgfpathlineto{\pgfpointanchor{wilk@int@R}{right}}
+
+ \pgfpathmoveto{\pgfpointanchor{wilk@int@R}{left}}
+ \pgfpathlineto{\lineptb}
+ \pgfusepath{draw}
+ }
+ }
+}
+
+%% couplers generics
+\long\def\pgfcircdeclarefourport#1#2{
+
+ \pgfdeclareshape{#1}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{quadpoles/#1/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=.5\pgf@circ@scaled@Rlen
+ \pgf@x=-\ctikzvalof{quadpoles/#1/width}\pgf@x
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{port1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{port3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{port4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{left down}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{right down}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{right up}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{left up}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{1}{
+ \northwest
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{2}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-0.5\pgf@y
+ }
+ \anchor{3}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0.5\pgf@y
+ }
+ \anchor{4}{
+ \northwest
+ \pgf@y=0.5\pgf@y
+ }
+
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgf@circ@draworfill
+
+ % draw inner stuff
+ #2
+
+ % draw inner text
+ \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
+ }
+ }
+}
+
+% four-port
+\pgfcircdeclarefourport{fourport}{}
+
+% straight coupler
+\pgfcircdeclarefourport{coupler}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
+ \pgfsetarrows{latex-latex}
+ \pgfusepath{draw}
+}
+
+% "bended" coupler
+\pgfcircdeclarefourport{coupler2}{
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfscope
+ \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
+ \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
+ \pgfsetarrowsend{latex}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+
+% mach zehnder modulator
+\pgfdeclareshape{mzm}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{tripoles/mzm/height}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x= \pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ \pgf@x=-\ctikzvalof{tripoles/mzm/width}\pgf@x
+ }
+ \anchor{center}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=0pt
+ }
+ \anchor{north}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{south}{
+ \northwest
+ \pgf@x=0pt
+ \pgf@y=-\pgf@y
+ }
+ \anchor{west}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{east}{
+ \northwest
+ \pgf@y=0pt
+ \pgf@x=-\pgf@x
+ }
+ \anchor{south west}{
+ \northwest
+ \pgf@y=-\pgf@y
+ }
+ \anchor{north east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ }
+ \anchor{north west}{
+ \northwest
+ }
+ \anchor{south east}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=-\pgf@y
+ }
+ \anchor{in}{
+ \northwest
+ \pgf@y=0pt
+ }
+ \anchor{mod}{
+ \northwest
+ \pgf@x=0pt
+ }
+ \anchor{out}{
+ \northwest
+ \pgf@x=-\pgf@x
+ \pgf@y=0pt
+ }
+ \anchor{text}{
+ \northwest
+ \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
+ \pgf@x=-.5\wd\pgfnodeparttextbox
+ }
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@scaled@Rlen=\scaledRlen
+
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+
+ \pgfstartlinewidth=\pgflinewidth
+
+ % draw outer box
+ \pgf@circ@twoportbox
+
+ % draw inner stuff
+ % rotate inner symbol
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
+ \pgftransformrotate{270}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
+ \pgftransformrotate{180}
+ \fi\fi
+ \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
+ \pgftransformrotate{90}
+ \fi\fi
+
+ % draw inner symbol
+ \pgfsetdash{}{0pt} % always draw solid line for inner symbol
+ \pgfsetarrows{-} %never draw arrows
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0.25\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@right}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0.25\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
+ \pgfusepath{draw}
+
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{0.35\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.25\pgf@circ@res@right}{0.1\pgf@circ@res@up}}
+ \pgfusepath{draw}
+
+ }
+}
+%%%---------- close: tex/pgfcircquadpoles
+%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
+%%%---------- open: tex/pgfcircmultipoles.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Multipoles by Romano Giannetti
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%
+%% Chips
+%%%%%%%%%
+
+% let's use the same shifts everywhere, no magic numbers
+\def\pgf@circ@dip@pin@shift{0.5}
+\def\pgf@circ@qfp@pin@shift{0.25}
+
+% derived from https://tex.stackexchange.com/a/146753/38080
+% original author Mark Wibrow
+% Thanks also to John Kormylo https://tex.stackexchange.com/a/372996/38080
+% a lot of thanks to @marmot for the un-rotation hint
+% https://tex.stackexchange.com/a/473571/38080
+
+% DIP (dual in line package) chips
+
+\pgfdeclareshape{dipchip}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{chips}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro\numpins{%
+ \pgf@circ@count@a=\ctikzvalof{multipoles/dipchip/num pins}%
+ \def\numpins{\the\pgf@circ@count@a}
+ }
+ \savedanchor\centerpoint{%
+ \pgf@x=-.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \savedanchor\origin{\pgfpoint{0pt}{0pt}}
+ \anchor{center}{\origin}
+ \anchor{text}{\centerpoint}% to adjust text
+ \saveddimen\height{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{((\numpins)
+ *\ctikzvalof{multipoles/dipchip/pin spacing})*\pgf@circ@scaled@Rlen/2}%
+ }%
+ \saveddimen{\chipspacing}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/pin spacing}}}
+ \saveddimen{\width}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/width}}}
+ \saveddimen{\extshift}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
+ % standard anchors
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{0.5*((\numpins)
+ *\ctikzvalof{multipoles/dipchip/pin spacing})*\pgf@circ@scaled@Rlen/2}%
+ \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/width}}
+ }
+ \anchor{dot}{\northwest
+ \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
+ \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ % start drawing
+ \backgroundpath{%
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step = \ctikzvalof{multipoles/dipchip/pin spacing}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
+ \pgfscope% (for the line width)
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
+ \pgf@circ@draworfill
+ %% upside mark
+ \ifpgf@circuit@chip@topmark
+ \pgfpathmoveto{\pgfpoint{0.2*\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpatharc{0}{180}{0.2*\pgf@circ@res@left}
+ \fi
+ \pgfusepath{stroke}%
+ \pgfsetcolor{\ctikzvalof{color}}
+ % Adding the pin number
+ \ifpgf@circuit@chip@shownumbers
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
+ \ifpgf@circuit@chip@straightnumbers
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
+ \else
+ \pgfmathsetmacro{\rot}{0}
+ \pgfmathsetmacro{\quadrant}{0}
+ \fi
+ \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
+ \def\mytext{\ctikzvalof{multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \ifcase\quadrant % rotation 0
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \fi
+ \endpgfscope
+ \ifdim\pgf@circ@res@other>0pt
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \edef\padfrac{\ctikzvalof{multipoles/external pad fraction}}
+ \ifnum\padfrac>0
+ \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
+ % left side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % right side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \else
+ % left side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % right side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{stroke}
+ \endpgfscope
+ \fi
+ }%
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@dipchip{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\numpins\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@dipchip@pin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@dipchip@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+ }
+
+% QFP (quad flat package) chips
+
+\pgfdeclareshape{qfpchip}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{chips}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro\numpins{%
+ \pgf@circ@count@a=\ctikzvalof{multipoles/qfpchip/num pins}%
+ \def\numpins{\the\pgf@circ@count@a}
+ }
+ \savedanchor\centerpoint{%
+ \pgf@x=-.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \savedanchor\origin{\pgfpoint{0pt}{0pt}}
+ \anchor{center}{\origin}
+ \anchor{text}{\centerpoint}% to adjust text
+ \saveddimen\height{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{((\numpins+2)
+ *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
+ }%
+ \saveddimen\width{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{((\numpins+2)
+ *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
+ }%
+ \saveddimen{\chipspacing}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/qfpchip/pin spacing}}}
+ \saveddimen{\extshift}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
+ % standard anchors
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{0.5*((\numpins+2)
+ *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
+ \pgf@x=-\pgf@y
+ }
+ \anchor{dot}{\northwest
+ \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
+ \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ % start drawing
+ \backgroundpath{%
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step = \ctikzvalof{multipoles/qfpchip/pin spacing}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
+ \pgfscope% (for the line width)
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ %% upside mark
+ \ifpgf@circuit@chip@topmark
+ \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2-\pgf@circ@res@step/2}}
+ \pgfpathlineto{\pgfpoint{-\width/2+\pgf@circ@res@step/2}{\height/2}}
+ \else
+ \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2}}
+ \fi
+ %% rest of the shape
+ \pgfpathlineto{\pgfpoint{\width/2}{\height/2}}
+ \pgfpathlineto{\pgfpoint{\width/2}{-\height/2}}
+ \pgfpathlineto{\pgfpoint{-\width/2}{-\height/2}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ % Adding the pin number
+ \pgfsetcolor{\ctikzvalof{color}}
+ \ifpgf@circuit@chip@shownumbers
+ \pgf@circ@count@a=\numpins%
+ \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
+ % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
+ \ifpgf@circuit@chip@straightnumbers
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
+ \else
+ \pgfmathsetmacro{\rot}{0}
+ \pgfmathsetmacro{\quadrant}{0}
+ \fi
+ \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
+ \def\mytext{\ctikzvalof{multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \ifcase\quadrant % rotation 0
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % bottom
+ \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % top
+ \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
+ rotate=\rot]{\mytext}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \fi
+ \endpgfscope
+ \ifdim\pgf@circ@res@other>0pt
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins%
+ \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \edef\padfrac{\ctikzvalof{multipoles/external pad fraction}}
+ \ifnum\padfrac>0
+ \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
+ % left side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % bottom side pads
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
+ % right side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % top side pads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \else
+ % left side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % bottom side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ % right side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ % top side pins
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{stroke}
+ \endpgfscope
+ \fi
+ }%
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@qfpchip{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\numpins%
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ \expandafter\xdef\csname pgf@anchor@qfpchip@pin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@qfpchip@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop%
+ }%
+ }
+
+%% anchors for DIP
+\def\pgf@circ@dippinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \c@pgf@countc=\numpins\relax
+ \divide\c@pgf@countc by 2
+ \ifnum #1 > \the\c@pgf@countc
+ % right side
+ \pgfpoint{\width/2+#2*\extshift}{-\height/2+(\pgf@circ@dip@pin@shift-\c@pgf@countc+#1-1)*\chipspacing}
+ \else
+ \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@dip@pin@shift-#1)*\chipspacing}
+\fi
+}
+
+%% anchors for QFP
+\def\pgf@circ@qfppinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \c@pgf@countc=\numpins\relax
+ \divide\c@pgf@countc by 4
+ \ifnum #1 > \the\c@pgf@countc
+ \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 2
+ \ifnum #1 > \the\c@pgf@countb
+ \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 3
+ \ifnum #1 > \the\c@pgf@countb
+ % 3*npins/4 < pin, top side
+ \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift+\c@pgf@countb-#1)*\chipspacing}{\height/2+#2*\extshift}%
+ \else
+ % 2*npins/4 < pin <= 3*npins/4, right side
+ \pgfpoint{\width/2+#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}%
+ \fi
+ \else
+ % npins/4 < pin <= 2*npins/4, bottom side
+ \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}{-\height/2-#2*\extshift}%
+ \fi
+ \else
+ % <= npins/4, left side
+ \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-#1)*\chipspacing}%
+ \fi
+}
+
+%%%%%%%%%%%%%%%%%
+%% Rotary Switch
+%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{rotaryswitch}
+{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedanchor\northeast{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ % the magic number is 0.25/cos(35)
+ % try to recalculate it for the actual switch
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=.3052\pgf@circ@res@temp
+ \edef\a{\ctikzvalof{multipoles/rotary/angle}}
+ \edef\r{\ctikzvalof{nodes width}}
+ \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@x}{\r*\pgf@circ@scaled@Rlen + \pgf@circ@res@temp}
+ }
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ % the magic number is 0.25/cos(35)
+ % try to recalculate it for the actual switch
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=.3052\pgf@circ@res@temp
+ \edef\a{\ctikzvalof{multipoles/rotary/angle}}
+ \edef\r{\ctikzvalof{nodes width}}
+ \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@x}{-\r*\pgf@circ@scaled@Rlen - (\a<90 ? 1 : 1-2*cos(\a))*\pgf@circ@res@temp}
+ }
+ \savedanchor\central{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ % the magic number is 0.25/cos(35)
+ % try to recalculate it for the actual switch
+ \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@temp=.3052\pgf@circ@res@temp
+ \edef\a{\ctikzvalof{multipoles/rotary/angle}}
+ \edef\r{\ctikzvalof{nodes width}}
+ \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@x}{(\a<90 ? 0 : cos(\a))*\pgf@circ@res@temp}
+ }
+ % external square limits
+ \savedanchor\extnorthwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
+ % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
+ \pgf@x=.3052\pgf@x % the magic number is 0.25/cos(35)
+ \pgf@x=2.5\pgf@x % external square size
+ \pgf@y=-\pgf@x %square thing when angle=180?
+ }
+ \saveddimen{\width}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{0.3052*\pgf@circ@scaled@Rlen*\ctikzvalof{tripoles/spdt/width}}}
+ % radius of the connector
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
+ % shapename
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % shape type
+ \savedmacro{\cshape}{\def\cshape{\ctikzvalof{multipoles/rotary/shape}}}
+ \savedmacro{\channels}{\def\channels{\ctikzvalof{multipoles/rotary/channels}}}
+ \savedmacro{\angle}{\def\angle{\ctikzvalof{multipoles/rotary/angle}}}
+ \savedmacro{\wiper}{\def\wiper{\ctikzvalof{multipoles/rotary/wiper}}}
+ \savedmacro{\stepa}{\pgfmathsetmacro{\stepa}{2*\ctikzvalof{multipoles/rotary/angle}/(\ctikzvalof{multipoles/rotary/channels}-1)}}
+ % mid of the lever, to stack switches
+ %\anchor{mid}{\midlever}
+ \anchor{mid}{\northwest
+ \pgf@circ@res@temp=-\pgf@x
+ \pgfmathsetlength{\pgf@x}{\pgf@circ@res@temp*(-1+cos(\wiper))}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp*sin(\wiper)}
+ }
+ % center anchors
+ \anchor{cin}{ \northwest \pgf@y=0pt\advance\pgf@x by \radius}
+ % horizontal angles
+ \anchor{in}{ \northwest \pgf@y=0pt}
+ \anchor{ain}{ \northwest \pgf@y=0pt}
+
+ \anchor{center}{ \central \pgf@y=0pt }
+ \anchor{east}{ \northeast \pgf@y=0pt }
+ \anchor{west}{ \northwest \pgf@y=0pt }
+ \anchor{south}{ \central \pgf@y=-\pgf@y }
+ \anchor{north}{ \central }
+ \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
+ \anchor{north east}{ \northeast }
+ \anchor{north west}{ \northwest }
+ \anchor{south east}{ \northeast \pgf@y=-\pgf@y }
+
+ \anchor{ext center}{ \pgf@y=0pt \pgf@x=0pt \advance\pgf@x by -\width}
+ \anchor{ext east}{ \extnorthwest \pgf@y=0pt \pgf@x=-\pgf@x \advance\pgf@x by -\width}
+ \anchor{ext west}{ \extnorthwest \pgf@y=0pt \advance\pgf@x by -\width}
+ \anchor{ext south}{ \extnorthwest \pgf@x=0pt \pgf@y=-\pgf@y \advance\pgf@x by -\width}
+ \anchor{ext north}{ \extnorthwest \pgf@x=0pt \advance\pgf@x by -\width}
+ \anchor{ext south west}{ \extnorthwest \pgf@y=-\pgf@y \advance\pgf@x by -\width}
+ \anchor{ext north east}{ \extnorthwest \pgf@x=-\pgf@x \advance\pgf@x by -\width}
+ \anchor{ext north west}{ \extnorthwest \advance\pgf@x by -\width}
+ \anchor{ext south east}{ \extnorthwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y \advance\pgf@x by -\width}
+
+ \backgroundpath{
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@res@right = \width
+ \pgf@circ@res@left = -\width
+
+ \pgfscope %wiper
+ % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
+ \pgf@circ@res@temp=\radius\relax
+ \pgf@circ@res@temp=\ctikzvalof{multipoles/rotary/thickness}\pgf@circ@res@temp
+ \pgfsetlinewidth{2\pgf@circ@res@temp}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\wiper}{2\pgf@circ@res@right}}}
+ \pgfsetroundcap\pgfusepath{draw}
+ \endpgfscope
+
+ \ifpgf@circ@rotaryarrow
+ \pgfscope % arrow
+ \ifpgf@circ@rotaryarrow@ccw\pgfsetarrowsstart{latexslim}\fi
+ \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % center of cin node
+ \pgftransformrotate{\wiper}
+ \pgfpathmoveto{\pgfpointpolar{50}{1.0\pgf@circ@res@right}}
+ \pgfpatharc{50}{-50}{1.0\pgf@circ@res@right}
+ \ifpgf@circ@rotaryarrow@cw\pgfsetarrowsend{latexslim}\fi
+ \pgfusepath{draw}
+ \endpgfscope
+ \fi
+
+ % \typeout{CHANNELS\space\channels\space ANGLE\space\angle STEPA\space\stepa}
+ \pgf@circ@count@a=\channels\relax
+ \pgfmathsetmacro{\currenta}{-\angle}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % \typeout{LOOPIN\space\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
+ \pgfscope
+ \pgftransformshift{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\currenta}{2\pgf@circ@res@right}}}
+ \pgfnode{\cshape}{center}{}{\thisshape-out \the\pgf@circ@count@a}{\pgfusepath{stroke}}
+ \endpgfscope
+ \pgfmathsetmacro{\currenta}{\currenta+\stepa}
+ % \typeout{LOOPOUT\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+
+ \pgfscope % input
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
+ \endpgfscope
+ }
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@rotaryswitch{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\channels\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@out\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{1}{0}%
+ }
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@cout\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{0}%
+ }
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@aout\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@rotaryswitch@sqout\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@rotarysqanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+}
+
+\def\pgf@circ@rotaryanchor#1#2#3{% #1: numero del pin; #2: 1 - x pos, 0 - center; #3 0: inner, 1 outer
+ \pgf@circ@res@temp=\width
+ \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
+ \pgfmathsetlength{\pgf@x}{2*(\pgf@circ@res@temp+#3*\radius/2)*cos(\myangle))+#2*\radius}
+ \pgfmathsetlength{\pgf@y}{2*(\pgf@circ@res@temp+#3*\radius/2)*sin(\myangle)}
+ \advance\pgf@x by -\pgf@circ@res@temp
+}
+
+\def\pgf@circ@rotarysqanchor#1{% external square anchors
+ \pgf@circ@res@temp=\width
+ \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
+ \pgfpointborderrectangle{\pgfpointpolar{\myangle}{1pt}}{\pgfpoint{2.5\pgf@circ@res@temp}{2.5\pgf@circ@res@temp}}
+ \advance\pgf@x by -\pgf@circ@res@temp
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Seven segments displays
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\pgfdeclareshape{bare7seg}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{displays}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\dotstatus}{\edef\dotstatus{\pgf@circ@sevenseg@dotstate}}
+ \saveddimen{\dotspace}{% the dot is on the right, and occupy the same as the thickness
+ \ifpgf@circ@sevenseg@dot
+ \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/thickness}}
+ \else
+ \pgf@x=0pt
+ \fi
+ }
+ % The object extension is more or less (-width/2,-width) to (width/2,width)
+ % and adjusted for line thickness (both sides) and eventually the dot
+ \saveddimen{\width}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}}
+ \saveddimen{\gap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/segment sep}}}
+ \saveddimen{\boxgap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/box sep}}}
+ \savedanchor{\southwest}{% both negative
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
+ -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
+ \pgfmathsetlength{\pgf@y}{-\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
+ -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
+ }
+ \savedanchor{\northeast}{% both positive
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \ifpgf@circ@sevenseg@dot
+ \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{seven seg/thickness}}
+ \else
+ \pgf@circ@res@other=0pt
+ \fi
+ \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
+ +0.5*\ctikzvalof{seven seg/thickness}+\pgf@circ@res@other+\ctikzvalof{seven seg/box sep}}
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
+ +0.5*\ctikzvalof{seven seg/thickness}+\ctikzvalof{seven seg/box sep}}
+ }
+ \savedanchor{\topright}{% anchor without the box sep and the thickness
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}
+ \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{north west}{\southwest\pgf@y=-\pgf@y}
+ \anchor{north east}{\northeast}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\southwest}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{east}{\northeast\pgf@y=0pt}
+ \anchor{south}{\southwest\pgf@x=0pt}
+ \anchor{west}{\southwest\pgf@y=0pt}
+ \anchor{a}{\topright\pgf@x=0pt}
+ \anchor{b}{\topright\pgf@y=0.5\pgf@y}
+ \anchor{c}{\topright\pgf@y=-0.5\pgf@y}
+ \anchor{d}{\topright\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{e}{\topright\pgf@x=-\pgf@x\pgf@y=-0.5\pgf@y}
+ \anchor{f}{\topright\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
+ \anchor{g}{\pgfpointorigin}
+ \anchor{dot}{\topright\pgf@y=-\pgf@y\advance\pgf@x by \dotspace}
+ \behindbackgroundpath{%
+ \southwest % I do not want the dot here, it will stick out
+ \pgf@circ@res@up = -\pgf@y
+ \pgf@circ@res@down = \pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \pgf@circ@res@left = -\pgf@x
+ \pgfscope
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfpathrectanglecorners%
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ {\pgfpoint{\pgf@circ@res@left+\dotspace}{\pgf@circ@res@up}}
+ \ifpgf@circ@sevenseg@box
+ \pgf@circ@draworfill
+ \else
+ \pgf@circ@maybefill
+ \fi
+ \endpgfscope
+ \edef\bits{\ctikzvalof{seven seg/bits}}
+ \pgfscope
+ \pfg@circ@sseg@drawbits{\bits}
+ \endpgfscope
+ \pgfscope
+ \ifpgf@circ@sevenseg@dot
+ \pgf@circ@sseg@drawdots
+ \fi
+ \endpgfscope
+ }
+}
+
+\def\pgf@circ@sseg@splitbits#1#2#3#4#5#6#7\relax{%split the seven bits
+ \edef\@@a{#1}\edef\@@b{#2}\edef\@@c{#3}\edef\@@d{#4}\edef\@@e{#5}\edef\@@f{#6}\edef\@@g{#7}%
+}
+\def\pgf@circ@sseg@drawone#1#2#3#4#5{% #1 on off the x1, y1, x2 , y2
+ \ifnum #1 > 0\relax
+ \pgfsetcolor{\ctikzvalof{seven seg/color on}}
+ \else
+ \pgfsetcolor{\ctikzvalof{seven seg/color off}}
+ \fi
+ \pgfpathmoveto{\pgfpoint{#2}{#3}}
+ \pgfpathlineto{\pgfpoint{#4}{#5}}
+ \pgfusepath{draw}
+}
+\def\pfg@circ@sseg@drawbits#1{% #1 must be 7 bits
+ \expandafter\pgf@circ@sseg@splitbits#1\relax% a bit of magic...
+ \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
+ \pgfsetlinewidth{\ctikzvalof{seven seg/thickness}}
+ % \pgfsetroundcap
+ \pgfsetarrowsstart{Triangle Cap[]}
+ \pgfsetarrowsend{Triangle Cap[]}
+ % segments
+ \pgf@circ@sseg@drawone{\@@a}{-\width/2+\gap}{\width}{\width/2-\gap}{\width}
+ \pgf@circ@sseg@drawone{\@@b}{\width/2}{\width-\gap}{\width/2}{0pt+\gap}
+ \pgf@circ@sseg@drawone{\@@c}{\width/2}{0pt-\gap}{\width/2}{-\width+\gap}
+ \pgf@circ@sseg@drawone{\@@d}{\width/2-\gap}{-\width}{-\width/2+\gap}{-\width}
+ \pgf@circ@sseg@drawone{\@@e}{-\width/2}{-\width+\gap}{-\width/2}{0pt-\gap}
+ \pgf@circ@sseg@drawone{\@@f}{-\width/2}{0pt+\gap}{-\width/2}{\width-\gap}
+ \pgf@circ@sseg@drawone{\@@g}{-\width/2+\gap}{0pt}{\width/2-\gap}{0pt}
+}
+\def\pgf@circ@sseg@drawdots{% dots
+ \edef\what{empty}
+ \ifx\what\pgf@circ@sevenseg@dotstate
+ % do nothing
+ \else
+ \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
+ \edef\what{off}
+ \ifx\what\pgf@circ@sevenseg@dotstate
+ % dot off
+ \pgfsetfillcolor{\ctikzvalof{seven seg/color off}}
+ \pgfsetcolor{\ctikzvalof{seven seg/color off}}
+ \else
+ % dot on
+ \pgfsetfillcolor{\ctikzvalof{seven seg/color on}}
+ \pgfsetcolor{\ctikzvalof{seven seg/color on}}
+ \fi
+ \pgfpathcircle{\pgfpoint{\width/2+2*\pgf@circ@res@other}{-\width}}{\pgf@circ@res@other}
+ \pgfusepath{draw,fill}
+ \fi
+}
+
+
+%%%%%%
+%%%%%% Flip-flops
+%%%%%%
+
+% Flip flops are a specialized kind of dipchip.
+% they have a class by themselves
+
+%% flip flop definitions --- by default empty
+%% pin texts
+\ctikzset{multipoles/flipflop/t1/.initial={}}
+\ctikzset{multipoles/flipflop/t2/.initial={}}
+\ctikzset{multipoles/flipflop/t3/.initial={}}
+\ctikzset{multipoles/flipflop/t4/.initial={}}
+\ctikzset{multipoles/flipflop/t5/.initial={}}
+\ctikzset{multipoles/flipflop/t6/.initial={}}
+\ctikzset{multipoles/flipflop/tu/.initial={}}
+\ctikzset{multipoles/flipflop/td/.initial={}}
+% pin clock wedge flags
+\ctikzset{multipoles/flipflop/c1/.initial={0}}
+\ctikzset{multipoles/flipflop/c2/.initial={0}}
+\ctikzset{multipoles/flipflop/c3/.initial={0}}
+\ctikzset{multipoles/flipflop/c4/.initial={0}}
+\ctikzset{multipoles/flipflop/c5/.initial={0}}
+\ctikzset{multipoles/flipflop/c6/.initial={0}}
+\ctikzset{multipoles/flipflop/cu/.initial={0}}
+\ctikzset{multipoles/flipflop/cd/.initial={0}}
+% pin negation circle flags
+\ctikzset{multipoles/flipflop/n1/.initial={0}}
+\ctikzset{multipoles/flipflop/n2/.initial={0}}
+\ctikzset{multipoles/flipflop/n3/.initial={0}}
+\ctikzset{multipoles/flipflop/n4/.initial={0}}
+\ctikzset{multipoles/flipflop/n5/.initial={0}}
+\ctikzset{multipoles/flipflop/n6/.initial={0}}
+\ctikzset{multipoles/flipflop/nu/.initial={0}}
+\ctikzset{multipoles/flipflop/nd/.initial={0}}
+
+
+% Thanks to @marmot
+\tikzset{flipflop def/.code=\pgfqkeys{\circuitikzbasekey/multipoles/flipflop}{#1}}
+
+% default set of flip flops
+\tikzset{
+ % async
+ latch/.style={flipflop, flipflop def={t1=D, t6=Q, t3=CLK, t4=\ctikztextnot{Q}}},
+ flipflop SR/.style={flipflop, flipflop def={t1=S, t3=R, t6=Q, t4=\ctikztextnot{Q}}},
+ % sync
+ flipflop D/.style={flipflop, flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
+ flipflop T/.style={flipflop, flipflop def={t1=T, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
+ flipflop JK/.style={flipflop, flipflop def={t1=J, t3=K, c2=1, t6=Q, t4=\ctikztextnot{Q}}},
+ % additional features
+ add async SR/.style={flipflop def={tu={\ctikztextnot{SET}}, td={\ctikztextnot{RST}}}},
+ dot on notQ/.style={flipflop def={t4={Q}, n4=1}},
+}
+
+%
+% commodity macro to draw the clock wedges. They leave the size of the
+% wedge in \pgf@circ@res@temp so that a possible label can be displaced.
+%
+\def\pgf@circ@do@wedge@left{
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step+\wedge}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\wedge}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step-\wedge}}
+ \pgfusepath{stroke}
+ \pgf@circ@res@temp=\wedge
+ \fi
+}
+\def\pgf@circ@do@wedge@right{
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step+\wedge}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\wedge}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step-\wedge}}
+ \pgfusepath{stroke}
+ \pgf@circ@res@temp=-\wedge
+ \fi
+}
+\def\pgf@circ@do@wedge@up{
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\ctikzvalof{multipoles/flipflop/cu}>0
+ \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up-\wedge}}
+ \pgfpathlineto{\pgfpoint{\wedge}{\pgf@circ@res@up}}
+ \pgfusepath{stroke}
+ \pgf@circ@res@temp=-\wedge
+ \fi
+}
+\def\pgf@circ@do@wedge@down{
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\ctikzvalof{multipoles/flipflop/cd}>0
+ \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down+\wedge}}
+ \pgfpathlineto{\pgfpoint{\wedge}{\pgf@circ@res@down}}
+ \pgfusepath{stroke}
+ \pgf@circ@res@temp=\wedge
+ \fi
+}
+% generic flip-flop shape
+\pgfdeclareshape{flipflop}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{flipflops}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ \savedmacro\numpins{\def\numpins{6}}
+ \savedanchor\centerpoint{%
+ \pgf@x=-.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \savedanchor\origin{\pgfpoint{0pt}{0pt}}
+ \anchor{center}{\origin}
+ \anchor{text}{\centerpoint}% to adjust text
+ \saveddimen\height{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{((\numpins)
+ *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf@circ@scaled@Rlen/2}%
+ }%
+ \saveddimen{\chipspacing}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/pin spacing}}}
+ \saveddimen{\width}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/width}}}
+ \saveddimen{\extshift}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
+ % standard anchors
+ \savedanchor\northwest{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{0.5*((\numpins)
+ *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf@circ@scaled@Rlen/2}%
+ \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/width}}
+ }
+ \anchor{dot}{\northwest
+ \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
+ \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ % upper and lower pin
+ \anchor{up}{\northwest\pgf@x=0pt\advance\pgf@y by\extshift }
+ \anchor{down}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y\advance\pgf@y by-\extshift}
+ \anchor{bup}{\northwest\pgf@x=0pt }
+ \anchor{bdown}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ % start drawing
+ \backgroundpath{%
+ \northwest
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@right = -\pgf@x
+ \pgf@circ@res@left = \pgf@x
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step = \ctikzvalof{multipoles/flipflop/pin spacing}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfscope% (for the line width)
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
+ \pgf@circ@draworfill
+ \pgfusepath{stroke}%
+ \endpgfscope
+ % Adding the pin number
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
+ \ifpgf@circuit@chip@straightnumbers
+ \pgfgettransformentries\a\b\temp\temp\temp\temp
+ \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+ \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
+ \else
+ \pgfmathsetmacro{\rot}{0}
+ \pgfmathsetmacro{\quadrant}{0}
+ \fi
+ \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
+ % text
+ \def\mytext{\ctikzvalof{multipoles/flipflop/font}\space
+ \ctikzvalof{multipoles/flipflop/t\the\pgf@circ@count@c}%
+ \pgf@circ@strut\space}
+ % \typeout{TEXT\space\mytext}
+ \pgfmathloop%
+ \def\wedge{\ctikzvalof{multipoles/flipflop/clock wedge size}\pgf@circ@res@step}
+ \pgf@circ@res@temp=0pt\relax
+ \ifnum\pgf@circ@count@a>0
+ \ifcase\quadrant % rotation 0
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgf@circ@do@wedge@left
+ % \typeout{TEXT Left Q1\space\mytext}
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgf@circ@do@wedge@right
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgf@circ@do@wedge@left
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgf@circ@do@wedge@right
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgf@circ@do@wedge@left
+ \pgftext[right,
+ at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgf@circ@do@wedge@right
+ \pgftext[left,
+ at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ % left
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \pgf@circ@do@wedge@left
+ \pgftext[bottom,
+ at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ % right
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \pgf@circ@do@wedge@right
+ \pgftext[top,
+ at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
+ rotate=\rot]{\mytext}
+ \fi
+ \advance\pgf@circ@count@a-1\relax%
+ \repeatpgfmathloop
+ % Now the up and down text
+ % up
+ \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf@circ@strut\ctikzvalof{multipoles/flipflop/tu}\space}
+ \pgf@circ@do@wedge@up
+ \ifcase\quadrant % rotation 0
+ \pgftext[top,
+ at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ \pgftext[right,
+ at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ \pgftext[bottom,
+ at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ \pgftext[left,
+ at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \fi
+ % down
+ \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf@circ@strut\ctikzvalof{multipoles/flipflop/td}\space}
+ \pgf@circ@do@wedge@down
+ \ifcase\quadrant % rotation 0
+ \pgftext[bottom,
+ at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or % rotation -90
+ \pgftext[left,
+ at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or %rotation 180
+ \pgftext[top,
+ at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \or % rotation +90
+ \pgftext[right,
+ at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
+ rotate=\rot]{\mytext}
+ \fi
+ % external pins
+ \ifdim\pgf@circ@res@other>0pt
+ \pgfscope
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % left side pins
+ \pgf@circ@count@c=\pgf@circ@count@a
+ %% we draw the pin only if it's defined either a text, a clock wedge or a not pin
+ %% Or'ing tests in core TeX is tough
+ \edef\@@or{0}
+ % Just expand the key the minimum needed
+ \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf@circ@count@c}}\edef\@@x{x}
+ \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \ifnum\@@or>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfusepath{stroke}
+ \fi
+ % right side pins
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \edef\@@or{0}
+ \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf@circ@count@c}}\edef\@@x{x}
+ \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ % \typeout{TEST\space\@@tmp\space\@@x}
+ \ifnum\@@or>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfusepath{stroke}
+ \fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+ % up side
+ \edef\@@or{0}
+ \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/tu}}\edef\@@x{x}
+ \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cu}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ % \typeout{TEST\space\@@tmp\space\@@x}
+ \ifnum\@@or>0
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@other}}
+ \pgfusepath{stroke}
+ \fi
+ % down side
+ \edef\@@or{0}
+ \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/td}}\edef\@@x{x}
+ \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cd}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
+ \ifnum\@@tmp>0\edef\@@or{1}\fi
+ % \typeout{TEST\space\@@tmp\space\@@x}
+ \ifnum\@@or>0
+ \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down-\pgf@circ@res@other}}
+ \pgfusepath{stroke}
+ \fi
+ \endpgfscope
+ \fi % external pin width >0
+ %
+ % draw "inverting" circles on outputs, they must be last
+ %
+ \pgfscope
+ \ifpgf@circuit@ieeelogicport
+ \def\@@notcirc{notcirc}
+ \else
+ \ifpgf@circ@european@port@circle@ieee
+ \def\@@notcirc{notcirc}
+ \else
+ \def\@@notcirc{ocirc}
+ \fi
+ \fi
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ \pgf@circ@count@a=\numpins\relax
+ \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % left side pins
+ \pgf@circ@count@c=\pgf@circ@count@a
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfnode{\@@notcirc}{east}{}{\thisshape-N\the\pgf@circ@count@c}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ % right side pins
+ \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
+ \ifnum\@@tmp>0\pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfnode{\@@notcirc}{west}{}{\thisshape-N\the\pgf@circ@count@c}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop
+ % up side
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
+ \ifnum\@@tmp>0\pgfscope
+ \pgftransformshift{\pgfpoint{0pt}{\pgf@circ@res@up}}
+ \pgfnode{\@@notcirc}{south}{}{\thisshape-Nu}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ % down side
+ \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nd}}
+ \ifnum\@@tmp>0\pgfscope
+ \pgftransformshift{\pgfpoint{0pt}{\pgf@circ@res@down}}
+ \pgfnode{\@@notcirc}{north}{}{\thisshape-Nd}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ \endpgfscope
+ }%
+ % \pgf@sh@s@<name of the shape here> contains all the code for the shape
+ % and is executed just before a node is drawn.
+ \pgfutil@g@addto@macro\pgf@sh@s@flipflop{%
+ % Start with the maximum pin number and go backwards.
+ \pgf@circ@count@a=\numpins\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `pin 1` for the
+ % electrical contact, and the "border one" like `bpin 1` for labels.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@flipflop@pin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@flipflop@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+}
+
+%
+% MUX-DEMUXES
+%
+% Thanks to @marmot
+\tikzset{muxdemux def/.code=\pgfqkeys{\circuitikzbasekey/multipoles/muxdemux}{#1}}
+\tikzset{demux/.style={muxdemux, muxdemux def={Lh=4, Rh=8, NL=1, NB=3, NR=8}}}
+\tikzset{one bit adder/.style={muxdemux,
+ muxdemux def={Lh=4, NL=2, Rh=2, NR=1, NB=1, w=1.5,
+ inset w=0.5, inset Lh=2, inset Rh=1.5}}}
+\tikzset{ALU/.style={muxdemux,
+ muxdemux def={Lh=5, NL=2, Rh=2, NR=1, NB=2, NT=1, w=2,
+ inset w=1, inset Lh=2, inset Rh=0, square pins=1}}}
+%generic mux-demux shape
+\pgfdeclareshape{muxdemux}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{muxdemuxes}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ % pins on the four sides
+ % \savedmacro\NL{%
+ % \pgf@circ@count@a=\ctikzvalof{multipoles/muxdemux/NL}%
+ % \def\NL{\the\pgf@circ@count@a}
+ % }
+ \savedmacro\NL{\edef\NL{\ctikzvalof{multipoles/muxdemux/NL}}}
+ \savedmacro\NR{\edef\NR{\ctikzvalof{multipoles/muxdemux/NR}}}
+ \savedmacro\NT{\edef\NT{\ctikzvalof{multipoles/muxdemux/NT}}}
+ \savedmacro\NB{\edef\NB{\ctikzvalof{multipoles/muxdemux/NB}}}
+ \savedmacro\squarepins{\edef\squarepins{\ctikzvalof{multipoles/muxdemux/square pins}}}
+ % topleft and topright sizes
+ \savedanchor{\topleft}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/Lh}*\pgf@circ@scaled@Rlen/2}
+ \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
+ }
+ \savedanchor{\topright}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/Rh}*\pgf@circ@scaled@Rlen/2}
+ \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
+ }
+ \savedanchor{\insetnortheast}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/inset Lh}*\pgf@circ@scaled@Rlen/2}
+ \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*
+ (\ctikzvalof{multipoles/muxdemux/w}-2*\ctikzvalof{multipoles/muxdemux/inset w})*\pgf@circ@scaled@Rlen/2}
+ }
+ \saveddimen{\insethright}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/inset Rh}*\pgf@circ@scaled@Rlen/2}}
+ \saveddimen{\extshift}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
+ \savedanchor{\northwest}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*max(\ctikzvalof{multipoles/muxdemux/Rh},\ctikzvalof{multipoles/muxdemux/Lh})*\pgf@circ@scaled@Rlen/2}
+ \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
+ }
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northwest\pgf@x=-\pgf@x}
+ \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{sw}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{n}{\northwest\pgf@x=0pt }
+ \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{w}{\northwest\pgf@y=0pt }
+ \anchor{north}{\northwest\pgf@x=0pt }
+ \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
+ \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{west}{\northwest\pgf@y=0pt }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{top right}{\topright}
+ \anchor{bottom right}{\topright\pgf@y=-\pgf@y}
+ \anchor{right}{\topright\pgf@y=0pt\relax}
+ \anchor{top left}{\topleft}
+ \anchor{bottom left}{\topleft\pgf@y=-\pgf@y}
+ \anchor{left}{\topleft\pgf@y=0pt\relax}
+ \anchor{top}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
+ \divide\pgf@y by 2 \pgf@x=0pt\relax}
+ \anchor{bottom}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
+ \divide\pgf@y by 2 \pgf@y=-\pgf@y \pgf@x=0pt\relax}
+ \anchor{inset top right}{\pgf@ya=\insethright\insetnortheast\advance\pgf@y by -0.5\pgf@ya}
+ \anchor{inset bottom right}{\pgf@ya=\insethright\insetnortheast\advance\pgf@y by -0.5\pgf@ya\pgf@y=-\pgf@y}
+ \anchor{inset right}{\insetnortheast\pgf@y=0pt\relax}
+ \anchor{inset top left}{\insetnortheast\pgf@ya=\pgf@y\topleft\pgf@y=\pgf@ya}
+ \anchor{inset bottom left}{\insetnortheast\pgf@ya=\pgf@y\topleft\pgf@y=-\pgf@ya}
+ \anchor{inset left}{\topleft\pgf@y=0pt\relax}
+ \anchor{inset bottom}{\topleft\pgf@xa=\pgf@x\pgf@ya=\insethright
+ \insetnortheast\pgf@xb=\pgf@x\pgf@yb=\pgf@x
+ \pgfpoint{(\pgf@xa+\pgf@xb)/2}{-\pgf@ya+\pgf@yb/2}}
+ \anchor{inset top}{\topleft\pgf@xa=\pgf@x\pgf@ya=\insethright
+ \insetnortheast\pgf@xb=\pgf@x\pgf@yb=\pgf@x
+ \pgfpoint{(\pgf@xa+\pgf@xb)/2}{\pgf@ya-\pgf@yb/2}}
+ \anchor{inset center}{\topleft\pgf@xa=\pgf@x\insetnortheast
+ \advance\pgf@x by \pgf@xa \divide\pgf@x by 2 \pgf@y=0pt\relax}
+ \anchor{narrow center}{\insetnortheast\pgf@xa=\pgf@x\topright
+ \advance\pgf@x by \pgf@xa \divide\pgf@x by 2\pgf@y=0pt\relax}
+ \anchor{center up}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
+ \divide\pgf@y by 2
+ \pgf@yb = \insethright \advance\pgf@y by \pgf@yb
+ \divide\pgf@y by 2 \pgf@x=0pt\relax}
+ \anchor{center down}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
+ \divide\pgf@y by 2
+ \pgf@yb = \insethright \advance\pgf@y by \pgf@yb
+ \divide\pgf@y by 2 \pgf@y=-\pgf@y \pgf@x=0pt\relax}
+ \anchor{text}{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*
+ \ctikzvalof{multipoles/muxdemux/inset w}*\pgf@circ@scaled@Rlen/2}
+ \advance\pgf@x by -.5\wd\pgfnodeparttextbox%
+ \pgf@y=-.5\ht\pgfnodeparttextbox%
+ \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
+ }%
+ \backgroundpath{%
+ \topleft
+ \pgf@circ@res@up = \pgf@y
+ \pgf@circ@res@down = -\pgf@y
+ \pgf@circ@res@left = \pgf@x
+ \topright
+ \pgf@circ@res@other = \pgf@y
+ \pgf@circ@res@right = \pgf@x
+ \insetnortheast
+ \pgf@circ@res@step = \pgf@x
+ \pgf@circ@res@temp = \pgf@y
+ %
+ % external block
+ %
+ \pgfscope% (for the line width)
+ \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@other}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ % inset, starting down
+ \ifdim\pgf@circ@res@temp>0pt % inset
+ % \typeout{INSETw\space\the\pgf@circ@res@right\space x\space\the\pgf@circ@res@step\space y\space\the\pgf@circ@res@temp}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\insethright}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\insethright}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}
+ \fi
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ % now we have to draw the pins, if needed
+ \ifdim\extshift>0pt\ifpgfcirc@draw@input@leads\pgfscope % let's avoid too much indent
+ % Ok, we have to draw the leads (a.k.a. pins)
+ \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+ % We mimic the anchors here --- probably there is a better way
+ % left pins
+ \ifnum\NL>0\relax % not indented, closed on \repeatpgfmathloop
+ \pgf@circ@count@a=\NL\relax
+ \pgf@circ@count@b=\NL \divide\pgf@circ@count@b by 2 % see https://tex.stackexchange.com/questions/146523/why-does-numexpr-integer-division-round-rather-than-truncate
+ \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
+ \insetnortheast\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
+ \ifdim\pgf@circ@res@down>0pt % check if we have an inset
+ % we have to check oddity
+ \ifodd\NL
+ \ifnum\NL=1
+ % only centerpin, step should not be used, but anyway...
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/(\NL)}
+ \else
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/(\NL-1)}
+ \fi
+ \else
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/\NL}
+ \fi
+ \else % no inset
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@up/\NL}
+ \fi
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ %%%%%
+ \ifdim\pgf@circ@res@down>0pt % check if we have an inset
+ \ifnum\pgf@circ@count@a>\pgf@circ@count@b\relax
+ % for lower pins we have to shift them down
+ % \typeout{DEBUGTEST1\space #1\space entering\space \NL}
+ \ifodd\NL
+ % odd number of pins
+ \ifnum\pgf@circ@count@a=\numexpr\the\pgf@circ@count@b+1\relax
+ % centerpin!
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \ifnum\squarepins>0
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{0pt}}
+ \else
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\extshift}{0pt}}
+ \fi
+ \else
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a+1)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a+1)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
+ \fi
+ \else
+ % even numer of pins: just go down
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
+ \fi
+ \else
+ % nothing need for #1<=NL/2
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \fi
+ \else
+ % no inset
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \fi
+ %%%%%
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop\fi%
+ % right pins
+ \ifnum\NR>0\pgf@circ@count@a=\NR\relax
+ \pgfmathloop%
+ \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@up=\pgf@y
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@up/\NR}
+ \ifnum\pgf@circ@count@a>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop\fi%
+ % bottom pins
+ \ifnum\NB>0\pgf@circ@count@a=\NB\relax %%%
+ \pgfmathloop%
+ \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
+ \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@right/\NB}
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@res@down-\pgf@circ@res@up)/(\pgf@circ@res@right-\pgf@circ@res@left)*\pgf@circ@res@step}
+ \ifnum\pgf@circ@count@a>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {-\pgf@circ@res@down+(\NB-\pgf@circ@count@a+0.5)*\pgf@circ@res@other}}
+ \ifnum\squarepins>0
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {-max(\pgf@circ@res@down, \pgf@circ@res@up)-\extshift}}
+ \else
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {-\pgf@circ@res@down+(\NB-\pgf@circ@count@a+0.5)*\pgf@circ@res@other-\extshift}}
+ \fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop\fi%
+ % top pins
+ \ifnum\NT>0\pgf@circ@count@a=\NT\relax
+ \pgfmathloop%
+ \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
+ \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@right/\NT}
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@res@down-\pgf@circ@res@up)/(\pgf@circ@res@right-\pgf@circ@res@left)*\pgf@circ@res@step}
+ \ifnum\pgf@circ@count@a>0
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {\pgf@circ@res@down-(\NT-\pgf@circ@count@a+0.5)*\pgf@circ@res@other}}
+ \ifnum\squarepins>0
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {max(\pgf@circ@res@down, \pgf@circ@res@up)+\extshift}}
+ \else
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
+ {\pgf@circ@res@down-(\NT-\pgf@circ@count@a+0.5)*\pgf@circ@res@other+\extshift}}
+ \fi
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop\fi%
+ % end drawing pins; stroke them
+ \pgfusepath{stroke}
+ \endpgfscope\fi\fi
+ }
+ % let's start adding anchors
+ \pgfutil@g@addto@macro\pgf@sh@s@muxdemux{%
+ % left side anchors
+ \pgf@circ@count@a=\NL\relax
+ % \typeout{STARTGENERATINGLEFT\space\the\pgf@circ@count@a\space FOR\space\thisshape\space\NL}
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % \typeout{GENERATINGLEFT\space\the\pgf@circ@count@a\space FOR\space\thisshape\space\NL}
+ % we will create two anchors per pin: the "normal one" like `lpin 1` for the
+ % external leads, and the "border one" like `blpin 1` for internal ones.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@muxdemux@lpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@L@anchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@muxdemux@blpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@L@anchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ % right anchors
+ \pgf@circ@count@a=\NR\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `rpin 1` for the
+ % external leads, and the "border one" like `brpin 1` for internal ones.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@muxdemux@rpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@R@anchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@muxdemux@brpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@R@anchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ % bottom anchors
+ \pgf@circ@count@a=\NB\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `bpin 1` for the
+ % external leads, and the "border one" like `bbpin 1` for internal ones.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@muxdemux@bpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@B@anchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@muxdemux@bbpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@B@anchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ % top anchors
+ \pgf@circ@count@a=\NT\relax
+ \pgfmathloop%
+ \ifnum\pgf@circ@count@a>0
+ % we will create two anchors per pin: the "normal one" like `tpin 1` for the
+ % external leads, and the "border one" like `btpin 1` for internal ones.
+ % they will coincide if `external pins width` is set to 0.
+ \expandafter\xdef\csname pgf@anchor@muxdemux@tpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@T@anchor{\the\pgf@circ@count@a}{1}%
+ }
+ \expandafter\xdef\csname pgf@anchor@muxdemux@btpin\space\the\pgf@circ@count@a\endcsname{%
+ \noexpand\pgf@circ@muxdemux@T@anchor{\the\pgf@circ@count@a}{0}%
+ }
+ \advance\pgf@circ@count@a by -1\relax%
+ \repeatpgfmathloop%
+ }%
+}
+
+%% left anchors for muxdemux
+
+\def\pgf@circ@muxdemux@L@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \topleft
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \insetnortheast
+ \pgf@xb=\pgf@x
+ \pgf@yb=\pgf@y
+ \ifnum#1>\NL
+ \PackageError{circuitikz}{%
+ You requested left pin #1 for mux/demux shape \thisshape\space \MessageBreak
+ which has been defined with \NL\space left pins%
+ }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
+ \fi
+ \pgf@circ@count@a=\NL \divide\pgf@circ@count@a by 2 % see https://tex.stackexchange.com/questions/146523/why-does-numexpr-integer-division-round-rather-than-truncate
+ % \typeout{LEFT \the\pgf@xa \space \the\pgf@ya \space \NL}
+ \ifnum\NL>1
+ \ifdim\pgf@yb>0pt % check if we have an inset
+ % we have to check oddity
+ \ifodd\NL
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@ya-\pgf@yb)/(\NL-1)}
+ \else
+ \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@ya-\pgf@yb)/\NL}
+ \fi
+ \else % no inset
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@ya/\NL}
+ \fi
+ \ifdim\pgf@yb>0pt % check if we have an inset
+ \ifnum#1>\pgf@circ@count@a\relax
+ % for lower pins we have to shift them down
+ % \typeout{DEBUGTEST1\space #1\space entering\space \NL}
+ \ifodd\NL
+ % odd number of pins
+ \ifnum#1=\numexpr\the\pgf@circ@count@a+1\relax
+ % centerpin!
+ \ifnum#2=0\relax
+ \pgfpoint{\pgf@xb}{0pt}
+ \else
+ \ifnum\squarepins>0
+ \pgfpoint{\pgf@xa-#2*\extshift}{0pt}
+ \else
+ \pgfpoint{\pgf@xb-#2*\extshift}{0pt}
+ \fi
+ \fi
+ \else
+ \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1+1)*\pgf@circ@res@step-2*\pgf@yb}
+ \fi
+ \else
+ % even numer of pins: just go down
+ \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step-2*\pgf@yb}
+ \fi
+ \else
+ % nothing need for #1<=NL/2
+ \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
+ \fi
+ \else
+ % no inset
+ \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
+ \fi
+ \else
+ \pgfpoint{\pgf@xa-#2*\extshift}{0pt}
+ \fi
+}
+
+% right anchors
+\def\pgf@circ@muxdemux@R@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \topright
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \ifnum#1>\NR
+ \PackageError{circuitikz}{%
+ You requested right pin #1 for mux/demux shape \thisshape\space \MessageBreak
+ which has been defined with \NR\space right pins%
+ }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
+ \fi
+ \ifnum\NR>1
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@ya/\NR}
+ \pgfpoint{\pgf@xa+#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
+ \else
+ \pgfpoint{\pgf@xa+#2*\extshift}{0pt}
+ \fi
+}
+
+% bottom anchors
+\def\pgf@circ@muxdemux@B@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \topleft
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \topright
+ \pgf@xb=\pgf@x
+ \pgf@yb=\pgf@y
+ \ifnum#1>\NB
+ \PackageError{circuitikz}{%
+ You requested bottom pin #1 for mux/demux shape \thisshape\space \MessageBreak
+ which has been defined with \NB\space bottom pins%
+ }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
+ \fi
+ \ifnum\NB>0
+ % \typeout{DEBUGTESTtopleft\space\the\pgf@ya \space topright\space\the\pgf@yb \space\NB}
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@xb/\NB}
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@yb-\pgf@ya)/(\pgf@xb-\pgf@xa)*\pgf@circ@res@step}
+ \pgfmathsetlength\pgf@x{\pgf@xa+(#1-0.5)*\pgf@circ@res@step}
+ \ifnum#2=0\relax
+ \pgfmathsetlength\pgf@y{-\pgf@yb+(\NB-#1+0.5)*\pgf@circ@res@other}
+ \else
+ \ifnum\squarepins>0\relax
+ \pgfmathsetlength\pgf@y{-max(\pgf@ya,\pgf@yb)-\extshift}
+ \else
+ \pgfmathsetlength\pgf@y{-\pgf@yb+(\NB-#1+0.5)*\pgf@circ@res@other-\extshift}
+ \fi
+ \fi
+ \else
+ % should not happen, give the same as pin 1 anyway
+ \ifnum#2=0\relax
+ \pgfpoint{0pt}{-\pgf@yb+(\pgf@yb-\pgf@ya)/2}
+ \else
+ \pgfpoint{0pt}{-max(\pgf@ya,\pgf@yb)-\extshift}
+ \fi
+ \fi
+}
+
+% top anchors
+\def\pgf@circ@muxdemux@T@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
+ \topleft
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \topright
+ \pgf@xb=\pgf@x
+ \pgf@yb=\pgf@y
+ \ifnum#1>\NT
+ \PackageError{circuitikz}{%
+ You requested top pin #1 for mux/demux shape \thisshape\space \MessageBreak
+ which has been defined with \NT\space top pins%
+ }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
+ \fi
+ \ifnum\NT>0
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@xb/\NT}
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@yb-\pgf@ya)/(\pgf@xb-\pgf@xa)*\pgf@circ@res@step}
+ \pgfmathsetlength\pgf@x{\pgf@xa+(#1-0.5)*\pgf@circ@res@step}
+ \ifnum#2=0\relax
+ \pgfmathsetlength\pgf@y{\pgf@yb-(\NT-#1+0.5)*\pgf@circ@res@other}
+ \else
+ \ifnum\squarepins>0
+ \pgfmathsetlength\pgf@y{max(\pgf@ya,\pgf@yb)+\extshift}
+ \else
+ \pgfmathsetlength\pgf@y{\pgf@yb-(\NT-#1+0.5)*\pgf@circ@res@other+\extshift}
+ \fi
+ \fi
+ \else
+ % should not happen, give the same as pin 1 anyway
+ \ifnum#2=0\relax
+ \pgfpoint{0pt}{\pgf@yb-(\pgf@yb-\pgf@ya)/2}
+ \else
+ \pgfpoint{0pt}{max(\pgf@ya,\pgf@yb)+\extshift}
+ \fi
+ \fi
+}
+
+%% IEEE standard logic ports module
+%%
+%% Original multi-input code from John Kormylo at tex.stackexchange.com
+%% Help by TheTeXnician <38565529+TheTeXnician@users.noreply.github.com>
+%% Suggested idea and example code by Jason Sachs <jmsachs@gmail.com>
+%% Please see https://github.com/circuitikz/circuitikz/issues/383 for a lot of details
+%% Most of the code, all errors and bugs by Romano Giannetti <romano.giannetti@gmail.com>
+%% Everything is in the same place here --- more or less; first step to move towards
+%% a module interface for circutikz
+%%
+
+% base parameters for ieeestd ports.
+
+\ctikzset{ieeestd ports/.is family}
+% baselen is relative to pgfcirc@Rlen as ever; scaled if the class says so.
+% the value of 0.4 is the standard pin distance for a port with height=num pins
+% and matches the chip distance
+\ctikzset{ieeestd ports/baselen/.initial=0.4}
+% these are in term of baselen; width depends on height (fixed proportions)
+\ctikzset{ieeestd ports/height/.initial=2}
+\ctikzset{ieeestd ports/pin length/.initial=0.7}
+% the standard "not" circle should be 1/6.5 of height (diameter);
+% so radius/baselen=1/3.25/2 --- using 0.1 and no scaling is as a pole
+\ctikzset{ieeestd ports/not radius/.initial=0.154}
+\ctikzset{ieeestd ports/not radius fill/.initial=1}% change ony if you know why
+% the suggested xnor distance is is 1.24, so 1.25/3.25/2
+% xor/xnor leads go full in in IEEE; let this be optional
+\ctikzset{ieeestd ports/xor bar distance/.initial=0.192}%
+\ctikzset{ieeestd ports/xor leads in/.initial=1}%
+%
+% base size of a small external schmitt symbol
+%
+\ctikzset{ieeestd ports/schmitt symbol size/.initial=0.3}%
+%
+% input management
+% we are using the same /tikz/number inputs than the legacy ports
+%
+\tikzset{/tikz/inner inputs/.initial=0} % using 0 means that all inputs are inner
+%
+% integrate with the other logic ports
+%
+%
+\newif\ifpgf@circuit@ieeelogicport\pgf@circuit@ieeelogicportfalse
+\ctikzset{logic ports/ieee/.code= {%
+ \pgf@circuit@ieeelogicporttrue
+ \pgf@circuit@europeanlogicportfalse
+ \tikzset{and port/.style={shape=ieeestd and port}}%
+ \tikzset{or port/.style={shape=ieeestd or port}}%
+ \tikzset{xor port/.style={shape=ieeestd xor port}}%
+ \tikzset{buffer port/.style={shape=ieeestd buffer port}}%
+ \tikzset{not port/.style={shape=ieeestd not port}}%
+ \tikzset{nand port/.style={shape=ieeestd nand port}}%
+ \tikzset{nor port/.style={shape=ieeestd nor port}}%
+ \tikzset{xnor port/.style={shape=ieeestd xnor port}}%
+ \tikzset{schmitt port/.style={shape=ieeestd schmitt port}}%
+ \tikzset{invschmitt port/.style={shape=ieeestd invschmitt port}}%
+}}
+% add code to be compatible with the other ports
+\ctikzset{logic ports/european/.add code={\pgf@circuit@ieeelogicportfalse}}
+\ctikzset{logic ports/american/.add code={\pgf@circuit@ieeelogicportfalse}}
+\tikzset{ieee ports/.style = {\circuitikzbasekey/logic ports = ieee}}
+%
+% the base angle for the or port. See the drawings. This will not change with height
+%
+\pgfmathsetmacro{\pgf@circ@orangle}{atan(3.25/6.5)}
+% \typeout{ANGLE-IS\space\pgf@circ@orangle}
+\def\pgf@circ@ieeeport@input#1% #1 = \pgfmathcounter
+{%
+ \ifnum#1>\inputs
+ \PackageError{circuitikz}{%
+ You requested input pin #1 for logic port shape \thisshape\space \MessageBreak
+ which has been defined with \inputs\space pins%
+ }{Please check the manual about logic ports; if you press return I'll try to continue}
+ \fi
+ \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind+0.5*\pind}% pin "0", above the rack/port
+ \pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ \pgf@circ@res@step=\pind
+ \pgf@y=\pgf@circ@res@up\advance\pgf@y by -#1\pgf@circ@res@step\relax
+ \pgf@x=\pgf@circ@res@left\advance\pgf@x by -\pinlen
+}%
+
+% #1 = \pgfmathcounter #2=type
+% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor
+\def\pgf@circ@ieeeport@baseinput#1#2%
+{%
+ \ifnum#1>\inputs
+ \PackageError{circuitikz}{%
+ You requested border input pin #1 for logic port shape \thisshape\space \MessageBreak
+ which has been defined with \inputs\space pins%
+ }{Please check the manual about logic ports; if you press return I'll try to continue}
+ \fi
+ % Find the vertical position (this is the same for any port)
+ \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind+0.5*\pind}% pin "0", above the rack/port
+ \pgf@circ@res@step=\pind\advance\pgf@circ@res@up by -#1\pgf@circ@res@step\relax
+ % rack (extended) pins; they are the same for all the ports
+ % call K = (inputs-inner)/2, rounded up; pins on the rack are:
+ % above: 1..K (included)
+ % below: inputs-K..inputs
+ % Find the pins on the rack; they are 1...
+ \pgf@circ@count@a=\numexpr (\inputs - \inners)/2\relax % =K; numexpr rounds up!
+ \pgf@circ@count@b=\numexpr \inputs - \pgf@circ@count@a +1 \relax % =inputs - K +1
+ % border anchors for rack should be ok
+ \pgfextractx{\pgf@circ@res@left}{\topleft}
+ \pgfextractx{\pgf@circ@res@right}{\bodyleft}
+ \pgf@y=\pgf@circ@res@up\pgf@x=\pgf@circ@res@left
+ % we have finished if we are in the rack
+ \ifnum #1 > \pgf@circ@count@a \ifnum #1 < \pgf@circ@count@b
+ % we are on the inner ports; we have to do the hard work here
+ % and and nand
+ \ifnum #2=1
+ \relax % It's an and/nand, all border ports are on the rack line
+ \fi
+ % or and nor
+ \ifnum #2=2
+ \pgfmathsetlength{\pgf@x}{\pgf@circ@res@right-2*\stdH*(1-cos(atan(\pgf@circ@res@up/(2*\stdH))))}
+ \fi
+ % xor and xnor
+ \ifnum #2=3\relax
+ \pgfmathsetlength{\pgf@x}{\pgf@circ@res@right-\xorbar-2*\stdH*(1-cos(atan(\pgf@circ@res@up/(2*\stdH))))}
+ \fi
+ \fi\fi
+}%
+% inner base ports for xor types port
+% #1 = \pgfmathcounter #2=type
+% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor
+\def\pgf@circ@ieeeport@innerbaseinput#1%
+{%
+ \ifnum#1>\inputs
+ \PackageError{circuitikz}{%
+ You requested border input pin #1 for logic port shape \thisshape\space \MessageBreak
+ which has been defined with \inputs\space pins%
+ }{Please check the manual about logic ports; if you press return I'll try to continue}
+ \fi
+ % Find the vertical position (this is the same for any port)
+ \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind+0.5*\pind}% pin "0", above the rack/port
+ \pgf@circ@res@step=\pind\advance\pgf@circ@res@up by -#1\pgf@circ@res@step\relax
+ % rack (extended) pins; they are the same for all the ports
+ % call K = (inputs-inner)/2, rounded up; pins on the rack are:
+ % above: 1..K (included)
+ % below: inputs-K..inputs
+ % Find the pins on the rack; they are 1...
+ \pgf@circ@count@a=\numexpr (\inputs - \inners)/2\relax % =K; numexpr rounds up!
+ \pgf@circ@count@b=\numexpr \inputs - \pgf@circ@count@a +1 \relax % =inputs - K +1
+ % border anchors for rack should be ok
+ \pgfextractx{\pgf@circ@res@left}{\topleft}
+ \pgfextractx{\pgf@circ@res@right}{\bodyleft}
+ \pgf@y=\pgf@circ@res@up\pgf@x=\pgf@circ@res@left
+ % we have finished if we are in the rack
+ \ifnum #1 > \pgf@circ@count@a \ifnum #1 < \pgf@circ@count@b
+ % we are on the inner ports; we have to do the hard work here
+ \pgfmathsetlength{\pgf@x}{\pgf@circ@res@right-2*\stdH*(1-cos(atan(\pgf@circ@res@up/(2*\stdH))))}
+ \fi\fi
+}%
+
+%%% macro to find basic lenghts --- they leave it in \pgf@circ@res@temp
+\def\pgf@circ@ieeestd@baselen{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/baselen}*\pgf@circ@scaled@Rlen}
+}
+\def\pgf@circ@ieeestd@stdH{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@temp}{0.5*\ctikzvalof{ieeestd ports/baselen}*
+ \ctikzvalof{ieeestd ports/height}*\pgf@circ@scaled@Rlen}
+}
+\def\pgf@circ@ieeestd@pinlen{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/baselen}*
+ \ctikzvalof{ieeestd ports/pin length}*\pgf@circ@scaled@Rlen}
+}
+\def\pgf@circ@ieeestd@xorbar{%
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/baselen}*
+ \ctikzvalof{ieeestd ports/xor bar distance}*\pgf@circ@scaled@Rlen}
+}
+%% Not circle
+\def\pgf@circ@notradius{
+ \pgf@circ@ieeestd@stdH % got the standard length. Notice that his is 3.25H for IEEE
+ \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/not radius}*\pgf@circ@res@temp}
+ % \typeout{NOTRADIUS\space\the\pgf@circ@res@temp}
+}
+%% Find (in ...@other) the height of the rack
+\def\pgf@circ@findrackH{%
+ \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax%
+ \pgf@circ@count@b=\pgfkeysvalueof{/tikz/inner inputs}\relax%
+ \ifnum\pgf@circ@count@a=0 \pgf@circ@count@a=2\fi % default pins
+ \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi %
+ \ifnum\pgf@circ@count@b=0 \pgf@circ@count@b=\pgf@circ@count@a\fi%
+ \pgf@circ@ieeestd@stdH
+ \multiply\pgf@circ@res@temp by 2\relax% full height
+ \divide\pgf@circ@res@temp by \pgf@circ@count@b % the pin spacing
+ \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@count@a/2)*\pgf@circ@res@temp} %top of the rack/port
+ % \typeout{RACK-\thisshape\space\the\pgf@circ@res@other}
+}
+%%
+\def\pgf@circ@find@ieeeport@up{% leave it in up
+ % Normal port limits
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@circ@res@up}{\pgf@circ@res@temp}
+ % rack top size
+ \pgf@circ@findrackH
+ \ifdim\pgf@circ@res@other > \pgf@circ@res@up
+ \pgf@circ@res@up=\pgf@circ@res@other
+ \else
+ \fi
+}
+\def\pgf@circ@find@ieeeport@left#1{% leave it in left; #1 is type
+ % Normal port limits
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@circ@res@left}{8*\pgf@circ@res@temp/6.5}
+ \pgf@circ@res@right=\pgf@circ@res@left % save the border value
+ \pgf@circ@res@step=\pgf@circ@res@temp % save the stdH value
+ \pgf@circ@ieeestd@pinlen\advance\pgf@circ@res@left by \pgf@circ@res@temp
+ % \typeout{LEFT1-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
+ % this is the normal left border
+ % For the or or xor port, the limit can be the pointy thing (in case the
+ % pinlen is zero or too small)
+ % add to the body margin the or/nor peak:
+ \ifnum #1 > 1\relax% "or", "nor", "xor", "xnor" gates.
+ \pgfmathsetlength{\pgf@circ@res@other}{2*\pgf@circ@res@step*(1-cos(\pgf@circ@orangle))}
+ \advance\pgf@circ@res@right by \pgf@circ@res@other
+ % \typeout{LEFT2-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
+ \fi
+ % add to the body margin the xor/xnor distance
+ \ifnum #1 = 3\relax% "xor" or "xnor" gates.
+ \pgf@circ@ieeestd@xorbar
+ \advance\pgf@circ@res@right by \pgf@circ@res@temp
+ % \typeout{LEFT3-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
+ \fi
+ % and if this exceeds the normal margin, this is it
+ % \typeout{LEFT4-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
+ \ifdim \pgf@circ@res@right > \pgf@circ@res@left
+ \pgf@circ@res@left=\pgf@circ@res@right
+ \fi
+ % \typeout{LEFT5-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
+ \pgf@circ@res@left=-\pgf@circ@res@left
+}
+\def\pgf@circ@find@ieeeport@right#1{% leave it in right; #1 is plain or negated
+ % Normal port limits
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@circ@res@right}{8*\pgf@circ@res@temp/6.5}
+ \pgf@circ@notradius
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@res@right+2*#1*\pgf@circ@res@temp}
+ \pgf@circ@ieeestd@pinlen\advance\pgf@circ@res@right by \pgf@circ@res@temp
+ \ifdim\pgf@circ@res@other > \pgf@circ@res@right
+ \pgf@circ@res@right=\pgf@circ@res@other
+ \fi
+}
+\def\pgf@circ@find@ieeeport@not@right#1{% leave it in right; #1 is plain or negated
+ % Normal port limits
+ \pgf@circ@ieeestd@stdH
+ % notice 0.8660254 is cos(30)
+ \pgfmathsetlength{\pgf@circ@res@right}{0.8660254*\pgf@circ@res@temp}
+ \pgf@circ@notradius
+ \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@res@right+2*#1*\pgf@circ@res@temp}
+ \pgf@circ@ieeestd@pinlen\advance\pgf@circ@res@right by \pgf@circ@res@temp
+ \ifdim\pgf@circ@res@other > \pgf@circ@res@right
+ \pgf@circ@res@right=\pgf@circ@res@other
+ \fi
+}
+
+
+%%% ieeestd multi-input ports
+%%% #1: name
+%%% #2: type: 1 for and,nand; 2 for or,nor; 3 for xor,xnor
+%%% #3: polarity: 0 for direct, 1 for inverted (not at the output)
+%%% #4: drawing for the port
+\long\def\pgfcircdeclareieeeport#1#2#3#4{%
+ \pgfdeclareshape{ieeestd #1 port}%
+ {%
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ \saveddimen{\baselen}{%
+ \pgf@circ@ieeestd@baselen\pgf@x=\pgf@circ@res@temp
+ }
+ \saveddimen{\stdH}{% This is HALF the height of the inner port
+ \pgf@circ@ieeestd@stdH\pgf@x=\pgf@circ@res@temp
+ }
+ \saveddimen{\notdiameter}{
+ \pgf@circ@notradius\pgf@x=2\pgf@circ@res@temp
+ }
+ \saveddimen{\pind}{% pin distance;
+ \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax%
+ \pgf@circ@count@b=\pgfkeysvalueof{/tikz/inner inputs}\relax%
+ \ifnum\pgf@circ@count@a=0 \pgf@circ@count@a=2\fi % default pins
+ \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi %
+ \ifnum\pgf@circ@count@b=0 \pgf@circ@count@b=\pgf@circ@count@a\fi%
+ \pgf@circ@ieeestd@stdH\pgf@x=2\pgf@circ@res@temp % full height
+ \divide\pgf@x by \pgf@circ@count@b
+ }
+ \saveddimen{\pinlen}{%
+ \pgf@circ@ieeestd@pinlen\pgf@x=\pgf@circ@res@temp
+ }
+ \saveddimen{\xorbar}{%
+ \pgf@circ@ieeestd@xorbar\pgf@x=\pgf@circ@res@temp
+ }
+ % anchors for the body (no pins included here)
+ \savedanchor{\bodyleft}{% This DOES NOT take into account the pointy or/xor thing
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-8*\pgf@circ@res@temp/6.5}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
+ }
+ \savedanchor{\topleft}{%
+ \pgf@circ@ieeestd@xorbar\pgf@circ@res@right=\pgf@circ@res@temp % save \xorbar
+ \pgf@circ@ieeestd@stdH
+ \pgf@circ@res@other=0pt\relax
+ \ifnum #2 = 2\relax% "or" or "nor" gates.
+ \pgfmathsetlength{\pgf@circ@res@other}{2*\pgf@circ@res@temp*(1-cos(\pgf@circ@orangle))}
+ \fi
+ \ifnum #2 = 3\relax% "xor" or "xnor" gates.
+ \pgfmathsetlength{\pgf@circ@res@other}{2*\pgf@circ@res@temp*(1-cos(\pgf@circ@orangle))
+ +\pgf@circ@res@right}
+ \fi
+ \pgfmathsetlength{\pgf@x}{-8*\pgf@circ@res@temp/6.5-\pgf@circ@res@other}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
+ }
+ \savedanchor{\bodyright}{% This DOES NOT take into account the "NOT" circle
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{8*\pgf@circ@res@temp/6.5}
+ \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
+ }
+ \savedanchor{\bottomright}{% This DOES take into account the "NOT" circle
+ \pgf@circ@notradius\pgf@circ@res@other=\pgf@circ@res@temp
+ \pgf@circ@ieeestd@stdH
+ % #3 is =1 if the port is a negated output one
+ \pgfmathsetlength{\pgf@x}{8*\pgf@circ@res@temp/6.5+#3*2*\pgf@circ@res@other}
+ \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
+ }
+ % geographical anchors --- must be rectangulars!
+ \savedanchor{\northwest}{%
+ \pgf@circ@find@ieeeport@up
+ \pgf@circ@find@ieeeport@left{#2}
+ % \typeout{ANCH5-\thisshape\space L\space\the\pgf@circ@res@left\space U\space\the\pgf@circ@res@up}
+ \pgf@x=\pgf@circ@res@left
+ \pgf@y=\pgf@circ@res@up
+ }
+ \savedanchor{\southwest}{%
+ \pgf@circ@find@ieeeport@up
+ \pgf@circ@find@ieeeport@left{#2}
+ \pgf@x=\pgf@circ@res@left
+ \pgf@y=-\pgf@circ@res@up
+ }
+ \savedanchor{\southeast}{%
+ \pgf@circ@find@ieeeport@up
+ \pgf@circ@find@ieeeport@right{#3}
+ \pgf@x=\pgf@circ@res@right
+ \pgf@y=-\pgf@circ@res@up
+ }
+ \savedanchor{\northeast}{%
+ \pgf@circ@find@ieeeport@up
+ \pgf@circ@find@ieeeport@right{#3}
+ \pgf@x=\pgf@circ@res@right
+ \pgf@y=\pgf@circ@res@up
+ }
+ \savedmacro\inputs{% get number of inputs
+ \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax
+ \ifnum\pgf@circ@count@a=0\pgf@circ@count@a=2\fi % default
+ \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi % minimum pins
+ % \ifnum\pgf@circ@count@a>16 \pgf@circ@count@a=16\fi
+ \def\inputs{\the\pgf@circ@count@a}%
+ }%
+ \savedmacro\inners{% get number of "inner" inputs (for racks)
+ \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax
+ \pgf@circ@count@b=\pgfkeysvalueof{/tikz/inner inputs}\relax
+ \ifnum\pgf@circ@count@a=0 \pgf@circ@count@a=2\fi % default pins
+ \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi % minimum pins
+ \ifnum\pgf@circ@count@b=0 \pgf@circ@count@b=\pgf@circ@count@a\fi
+ % \typeout{INNER is \the\pgf@circ@count@b}%
+ % \ifnum\pgf@circ@count@a>16 \pgf@circ@count@a=16\fi
+ \def\inners{\the\pgf@circ@count@b}%
+ }%
+ \anchor{center}{\pgfpointorigin}
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
+ \else
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@circ@res@left}{-8*\pgf@circ@res@temp/6.5} % left border
+ \pgfpoint{\pgf@circ@res@left + \ctikzvalof{left text distance}}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
+ \fi
+ }
+ % create input anchors
+ \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@ieeestd #1 port\endcsname{%
+ \pgf@circ@count@a=\inputs
+ \pgfmathloop%
+ \ifnum\pgfmathcounter>\pgf@circ@count@a%
+ \else%
+ %\pgfutil@ifundefined{pgf@anchor@american #1 port@in \pgfmathcounter}{%
+ \expandafter\xdef\csname pgf@anchor@ieeestd #1 port@in \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@ieeeport@input{\pgfmathcounter}% defined above
+ }%
+ \expandafter\xdef\csname pgf@anchor@ieeestd #1 port@bin \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@ieeeport@baseinput{\pgfmathcounter}{#2}% defined above
+ }%
+ \ifnum #2 = 3\relax % xor/xnor inner border pins
+ \expandafter\xdef\csname pgf@anchor@ieeestd #1 port@ibin \pgfmathcounter\endcsname{%
+ \noexpand\pgf@circ@ieeeport@innerbaseinput{\pgfmathcounter}% defined above
+ }%
+ \fi
+ %}{}%
+ \repeatpgfmathloop%
+ }
+ % output anchor
+ \anchor{out}{%
+ \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without not ball
+ \advance\pgf@circ@res@other by\pinlen
+ \pgfextractx{\pgf@circ@res@temp}{\bottomright} %body + ball border
+ \ifdim \pgf@circ@res@temp > \pgf@circ@res@other
+ \pgf@circ@res@other = \pgf@circ@res@temp % do not enter in the ball...
+ \fi
+ \pgf@x=\pgf@circ@res@other\pgf@y=0pt
+ }
+ \anchor{bout}{\bottomright\pgf@y=0pt}
+
+ \anchor{body right}{\bodyright\pgf@y=0pt}
+ \anchor{right}{\bottomright\pgf@y=0pt}
+ \anchor{body left}{\bodyleft\pgf@y=0pt}% central edge of the body
+ \anchor{left}{% central edge of the component
+ \bodyleft\pgf@y=0pt
+ \ifnum #2=3\relax
+ \advance\pgf@x by -\xorbar
+ \fi
+ }
+ \anchor{up}{%
+ \bodyleft
+ \ifnum #2 > 1 % pointy shapes
+ \pgf@circ@ieeestd@stdH
+ % horizontal coordinate where the right semicircle starts
+ \pgfmathsetlength{\pgf@circ@res@other}{-8*\pgf@circ@res@temp/6.5+2*\pgf@circ@res@temp*cos(\pgf@circ@orangle)}
+ % vertical drop of the circle at the above coordinate
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@temp*(1-cos(atan(\pgf@circ@res@other/(2*\pgf@circ@res@temp))))}
+ \advance \pgf@y by -\pgf@circ@res@step
+ \fi
+ \pgf@x=0pt
+ }
+ \anchor{down}{%
+ \bodyleft
+ \ifnum #2 > 1 % pointy shapes
+ \pgf@circ@ieeestd@stdH
+ % horizontal coordinate where the right semicircle starts
+ \pgfmathsetlength{\pgf@circ@res@other}{-8*\pgf@circ@res@temp/6.5+2*\pgf@circ@res@temp*cos(\pgf@circ@orangle)}
+ % vertical drop of the circle at the above coordinate
+ \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@temp*(1-cos(atan(\pgf@circ@res@other/(2*\pgf@circ@res@temp))))}
+ \advance \pgf@y by -\pgf@circ@res@step
+ \fi
+ \pgf@y=-\pgf@y\pgf@x=0pt
+ }
+
+ % geographical anchors
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northeast}
+ \anchor{se}{\southeast}
+ \anchor{sw}{\southwest}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northeast}
+ \anchor{south east}{\southeast}
+ \anchor{south west}{\southwest}
+ % over 0,0 even if asymmetric
+ % will break if the geocoords are not rectangular
+ \anchor{n}{\northwest\pgf@x=0pt\relax}
+ \anchor{e}{\northeast\pgf@y=0pt\relax}
+ \anchor{s}{\southwest\pgf@x=0pt\relax}
+ \anchor{w}{\northwest\pgf@y=0pt\relax}
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south}{\southwest\pgf@x=0pt\relax}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+
+ \backgroundpath{
+ \pgfscope
+ \pgfsetcolor{\ctikzvalof{color}}
+ #4
+ \endpgfscope
+ % output lead:
+ \pgfextractx{\pgf@circ@res@right}{\bottomright} %body+ball border
+ \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without "not" ball
+ \advance\pgf@circ@res@other by \pinlen\relax
+ \ifdim \pgf@circ@res@other > \pgf@circ@res@right
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \fi
+ \ifnum #3=1\relax\pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfnode{notcirc}{east}{}{\thisshape-not}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ }
+ }
+}
+
+%%% #1 direct name #2 negated name #3 type #4 drawing (without output)
+\long\def\pgfcircdeclareieeeportpair#1#2#3#4{%
+ \pgfcircdeclareieeeport{#1}{#3}{0}{#4}% direct
+ \pgfcircdeclareieeeport{#2}{#3}{1}{#4}% negated
+}
+%
+% ieeestd "and" and "nand"
+%
+\pgfcircdeclareieeeportpair{and}{nand}{1}{%
+ \pgf@circ@count@a = \inputs\relax
+ \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind} %top of the rack/port
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@res@up+0.5*\pind}
+ \pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ \pgfextracty{\pgf@circ@res@down}{\bodyleft}
+ \ifpgfcirc@draw@input@leads
+ %input leads --- all the same for AND ports
+ \loop\ifnum\pgf@circ@count@a>0
+ \advance\pgf@circ@res@temp by -\pind
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{\pgf@circ@res@temp}}%
+ \advance\pgf@circ@count@a by -1
+ \repeat
+ \fi
+ \pgfusepath{draw}
+ %% Body. let's start from the top left
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{-8*\stdH/6.5}{\stdH}}
+ \pgfpathlineto{\pgfpoint{1.5*\stdH/6.5}{\stdH}}
+ \pgfpatharc{90}{-90}{\stdH}
+ \pgfpathlineto{\pgfpoint{-8*\stdH/6.5}{-\stdH}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ % rack now; skip if not needed.
+ % \typeout{WHAT\space \inputs\space \inners}
+ \ifnum\inputs>\inners
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+}
+%
+% or/nor and xor/xnor are practically the same. Let factor out everything
+% the argument #1 is put just before the drawing of the inner pins
+% the argument #2 is put after the drawing of the body
+%
+\long\def\pgf@circ@ieeeport@orxor#1#2{%
+ \pgf@circ@count@a = \inputs\relax
+ \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind} %top of the rack/port
+ \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@res@up+0.5*\pind}
+ \pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ \pgfextracty{\pgf@circ@res@down}{\bodyleft}
+ % rack (extended) pins; they are the same for all the ports
+ % call K = (inputs-inner)/2, rounded up; pins on the rack are:
+ % above: 1..K (included)
+ % below: inputs-K..inputs
+ % Find the pins on the rack; they are 1...
+ \pgf@circ@count@b=\numexpr (\inputs - \inners)/2\relax % =K; numexpr rounds up!
+ \pgf@circ@count@c=\numexpr \inputs - \pgf@circ@count@b +1 \relax % =inputs - K +1
+ \ifpgfcirc@draw@input@leads
+ %input leads --- for or ports
+ \loop\ifnum\pgf@circ@count@a>0
+ \pgfextractx{\pgf@circ@res@right}{\topleft}
+ \advance\pgf@circ@res@temp by -\pind
+ % this is the height; let's find the "right" position
+ \ifnum \pgf@circ@count@a > \pgf@circ@count@b \ifnum \pgf@circ@count@a < \pgf@circ@count@c
+ % inner pins
+ % \typeout{INNER\space\pgf@circ@count@a}
+ \pgfmathsetlength{\pgf@circ@res@right}{\pgf@circ@res@left-2*\stdH*(1-cos(atan(\pgf@circ@res@temp/(2*\stdH))))}
+ % hook for xor/xnor
+ #1
+ \fi\fi
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp}}%
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{\pgf@circ@res@temp}}%
+ \pgfusepath{draw}
+ \advance\pgf@circ@count@a by -1
+ \repeat
+ \fi
+ %% Body. let's start from the top left
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ % it should start here, but with this trick the close comes out better.
+ % \pgfpathmoveto{\pgfpoint{-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{\stdH}}
+ \pgfpathmoveto{\pgfpoint{-8*\stdH/6.5}{\stdH}}
+ \pgfpathlineto{\pgfpoint{8*\stdH/6.5-2*\stdH*cos(\pgf@circ@orangle)}{\stdH}} %
+ \pgfpatharcto{2*\stdH}{2*\stdH}{0}{0}{0}{\pgfpoint{8*\stdH/6.5}{0pt}}
+ \pgfpatharcto{2*\stdH}{2*\stdH}{0}{0}{0}{\pgfpoint{8*\stdH/6.5-2*\stdH*cos(\pgf@circ@orangle)}{-\stdH}}
+ \pgfpathlineto{\pgfpoint{-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{-\stdH}}
+ %% this should be 2 and 2; but the round part is not a perfect circle that way
+ %% so the 2.15 is ajusted "by taste" to touch the anchors exactly.
+ \pgfpatharcto{2*\stdH}{2.2*\stdH}{0}{0}{1}{\pgfpoint{-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{\stdH}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ % hook for xor/xnor
+ #2
+ % rack now; skip if not needed.
+ % \typeout{WHAT\space \inputs\space \inners}
+ \ifnum\inputs>\inners
+ \pgfextractx{\pgf@circ@res@left}{\topleft}
+ \pgfextracty{\pgf@circ@res@down}{\topleft}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \fi
+ \endpgfscope
+}
+%
+% ieeestd "or" and "nor"
+%
+\pgfcircdeclareieeeportpair{or}{nor}{2}{%
+ \pgf@circ@ieeeport@orxor{}{}
+}
+\pgfcircdeclareieeeportpair{xor}{xnor}{3}{%
+ \pgf@circ@ieeeport@orxor{
+ \edef\@@tmp{\ctikzvalof{ieeestd ports/xor leads in}}
+ \ifnum\@@tmp=0\relax
+ % move pin start to the left to leave the xor gap free (not standard)
+ \advance\pgf@circ@res@right by -\xorbar
+ \fi
+ }{%
+ % add the xor/xnor bar
+ \pgfpathmoveto{\pgfpoint{-\xorbar-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{-\stdH}}
+ % see the comment on the main body about the 2.2
+ \pgfpatharcto{2*\stdH}{2.2*\stdH}{0}{0}{1}{\pgfpoint{-\xorbar -8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{\stdH}}
+ \pgfusepath{draw}
+ }
+}
+%
+% Buffer and inverters
+%
+% #1: name
+% #2: polarity
+% #3: content
+\long\def\pgfcircdeclareieeebufferport#1#2#3{%
+ \pgfdeclareshape{ieeestd #1 port}%
+ {%
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ \saveddimen{\baselen}{%
+ \pgf@circ@ieeestd@baselen\pgf@x=\pgf@circ@res@temp
+ }
+ \saveddimen{\stdH}{% This is HALF the height of the inner port
+ \pgf@circ@ieeestd@stdH\pgf@x=\pgf@circ@res@temp
+ }
+ \saveddimen{\notdiameter}{
+ \pgf@circ@notradius\pgf@x=2\pgf@circ@res@temp
+ }
+ \saveddimen{\pinlen}{%
+ \pgf@circ@ieeestd@pinlen\pgf@x=\pgf@circ@res@temp
+ }
+ % anchors for the body (no pins included here)
+ % Notice that 0.8660254 is cos(30)
+ \savedanchor{\bodyleft}{% This DOES NOT take into account the pointy or/xor thing
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
+ }
+ \savedanchor{\topleft}{%
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
+ }
+ \savedanchor{\bodyright}{% This DOES NOT take into account the "NOT" circle
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{0.8660254*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
+ }
+ \savedanchor{\bottomright}{% This DOES take into account the "NOT" circle
+ \pgf@circ@notradius\pgf@circ@res@other=\pgf@circ@res@temp
+ \pgf@circ@ieeestd@stdH
+ % #2 is =1 if the port is a negated output one
+ \pgfmathsetlength{\pgf@x}{0.8660254*\pgf@circ@res@temp+#2*2*\pgf@circ@res@other}
+ \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
+ }
+ % geographical anchors --- must be rectangulars!
+ \savedanchor{\northwest}{%
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
+ }
+ \savedanchor{\southwest}{%
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
+ \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
+ }
+ \savedanchor{\southeast}{%
+ \pgf@circ@ieeestd@stdH
+ \pgf@circ@res@up=\pgf@circ@res@temp
+ \pgf@circ@find@ieeeport@not@right{#2}
+ \pgf@x=\pgf@circ@res@right
+ \pgf@y=-\pgf@circ@res@up
+ }
+ \savedanchor{\northeast}{%
+ \pgf@circ@ieeestd@stdH
+ \pgf@circ@res@up=\pgf@circ@res@temp
+ \pgf@circ@find@ieeeport@not@right{#2}
+ \pgf@x=\pgf@circ@res@right
+ \pgf@y=\pgf@circ@res@up
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
+ \else
+ \pgf@circ@ieeestd@stdH
+ \pgfpoint{-0.8660254*\pgf@circ@res@temp + \ctikzvalof{left text distance}}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
+ \fi
+ }
+ % input anchors
+ \anchor{in}{\bodyleft\pgf@y=0pt\advance\pgf@x by-\pinlen}
+ \anchor{in 1}{\bodyleft\pgf@y=0pt\advance\pgf@x by-\pinlen}
+ \anchor{bin}{\bodyleft\pgf@y=0pt\relax}
+ \anchor{bin 1}{\bodyleft\pgf@y=0pt\relax}
+ % output anchors
+ \anchor{out}{%
+ \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without not ball
+ \advance\pgf@circ@res@other by\pinlen
+ \pgfextractx{\pgf@circ@res@temp}{\bottomright} %body + ball border
+ \ifdim \pgf@circ@res@temp > \pgf@circ@res@other
+ \pgf@circ@res@other = \pgf@circ@res@temp % do not enter in the ball...
+ \fi
+ \pgf@x=\pgf@circ@res@other\pgf@y=0pt
+ }
+ \anchor{bout}{\bottomright\pgf@y=0pt}
+
+ \anchor{body right}{\bodyright\pgf@y=0pt}
+ \anchor{right}{\bottomright\pgf@y=0pt}
+ \anchor{body left}{\bodyleft\pgf@y=0pt}% central edge of the body
+ \anchor{left}{\bodyleft\pgf@y=0pt}
+ \anchor{up}{%
+ \bodyleft
+ \pgf@y=+0.5\pgf@y\pgf@x=0pt
+ }
+ \anchor{down}{%
+ \bodyleft
+ \pgf@y=-0.5\pgf@y\pgf@x=0pt
+ }
+ % this is for when it's used as a bipole
+ % we use the enclosing rectangle (see below)
+ \anchorborder{%
+ %% This (commented out) is the correct border anchor. But if we use the correct
+ %% border anchor there is no horizontal space for the label ;-) because
+ %% the triangle is too steep. So we will use a simple square border
+ %%
+ %% find the border anchor of a triangle (like a not port or an
+ %% amplifier) ---
+ %%
+ %% -----^ up
+ %% I --- |
+ %% I -|--
+ %%left I | --- right
+ %% ----I-----|-------I-----
+ %%
+ %%
+ %\pgf@xa=\pgf@x
+ %% it's simmetrical w/ vertical side, use only positive y
+ %\pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
+ %\pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
+ %\pgfextracty{\pgf@circ@res@up}{\bodyleft}
+ %\pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ %\pgfextractx{\pgf@circ@res@right}{\bodyright}
+ %% limit angle for the left (vertical) side
+ %\pgfmathsetmacro{\@@phimax}{atan2(\pgf@circ@res@up,\pgf@circ@res@left)}
+ %\pgfmathsetmacro{\@@phi}{atan2(\pgf@ya,\pgf@xa)}
+ %\pgfmathsetmacro{\@@leftside}{ifthenelse(\@@phi>\@@phimax,1,0)}
+ %% find the border
+ %\ifnum\@@leftside>0
+ % % vertical side
+ % \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
+ % {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ %\else
+ % % triangle upper line
+ % \pgfpointintersectionoflines
+ % {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
+ % {\pgfqpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@right}{0pt}}
+ %\fi
+ %% readjust y sign
+ %\pgf@y=\@@switchy\pgf@y
+ %
+ % this is the square border to position the path label with a bit of horizontal space
+ %
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\bodyleft}
+ \pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ }
+ % geographical anchors
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northeast}
+ \anchor{se}{\southeast}
+ \anchor{sw}{\southwest}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northeast}
+ \anchor{south east}{\southeast}
+ \anchor{south west}{\southwest}
+ % over 0,0 even if asymmetric
+ % will break if the geocoords are not rectangular
+ \anchor{n}{\northwest\pgf@x=0pt\relax}
+ \anchor{e}{\northeast\pgf@y=0pt\relax}
+ \anchor{s}{\southwest\pgf@x=0pt\relax}
+ \anchor{w}{\northwest\pgf@y=0pt\relax}
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south}{\southwest\pgf@x=0pt\relax}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+
+ \backgroundpath{
+ \pgfscope
+ \pgfsetcolor{\ctikzvalof{color}}
+ #3
+ \endpgfscope
+ % output lead:
+ \pgfextractx{\pgf@circ@res@right}{\bottomright} %body+ball border
+ \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without "not" ball
+ \advance\pgf@circ@res@other by \pinlen\relax
+ \ifdim \pgf@circ@res@other > \pgf@circ@res@right
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \fi
+ \ifnum #2=1\relax\pgfscope
+ \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfnode{notcirc}{east}{}{\thisshape-not}{\pgfusepath{stroke}}
+ \endpgfscope\fi
+ }
+ }
+}
+
+%%% #1 direct name #2 negated name #3 drawing (without output)
+\long\def\pgfcircdeclareieeebufferportpair#1#2#3{%
+ \pgfcircdeclareieeebufferport{#1}{0}{#3}% direct
+ \pgfcircdeclareieeebufferport{#2}{1}{#3}% negated
+}
+
+\pgfcircdeclareieeebufferportpair{buffer}{not}{%
+ \pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ \pgfextracty{\pgf@circ@res@up}{\bodyleft}
+ \pgfextractx{\pgf@circ@res@right}{\bodyright}
+ % \draw input pin
+ \ifpgfcirc@draw@input@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+}
+
+\pgfcircdeclareieeebufferportpair{schmitt}{invschmitt}{%
+ \pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ \pgfextracty{\pgf@circ@res@up}{\bodyleft}
+ \pgfextractx{\pgf@circ@res@right}{\bodyright}
+ % \draw input pin
+ \ifpgfcirc@draw@input@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ % draw schmitt symbol in normal line thickness
+ \pgfpathmoveto{\pgfpoint{0.75*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.50*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.50*\pgf@circ@res@left}{0.25*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.00*\pgf@circ@res@left}{0.25*\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{0.25*\pgf@circ@res@left}{0.25*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.25*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+
+
+\pgfdeclareshape{schmitt symbol}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@circ@ieeestd@stdH
+ \pgf@y=\ctikzvalof{ieeestd ports/schmitt symbol size}\pgf@circ@res@temp
+ \pgf@x=-1.5\pgf@y
+ }
+ \anchor{center}{\pgf@y=0pt \pgf@x=0pt}
+ \anchor{east}{\northwest\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{e}{\northwest\pgf@y=0pt \pgf@x=-\pgf@x}
+ \anchor{west}{\northwest\pgf@y=0pt}
+ \anchor{w}{\northwest \pgf@y=0pt}
+ \anchor{south}{\northwest \pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{north}{\northwest\pgf@x=0pt}
+ \anchor{n}{\northwest\pgf@x=0pt}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{north west}{\northwest}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \backgroundpath{
+ \pgfscope
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfextractx{\pgf@circ@res@left}{\northwest}
+ \pgfextracty{\pgf@circ@res@up}{\northwest}
+ \pgf@circ@res@left=0.7\pgf@circ@res@left
+ \pgf@circ@res@up=0.7\pgf@circ@res@up
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left/3}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left/3}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left/3}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left/3}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
+\pgfdeclareshape{notcirc}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor\northwest{%
+ \pgf@circ@notradius
+ \pgf@y=\pgf@circ@res@temp
+ \pgf@x=-\pgf@y
+ }
+ \anchor{center}{\pgf@y=0pt \pgf@x=0pt}
+ \anchor{right}{\northwest\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{east}{\northwest\pgf@y=0pt\pgf@x=-\pgf@x}
+ \anchor{e}{\northwest\pgf@y=0pt \pgf@x=-\pgf@x}
+ \anchor{left}{\northwest\pgf@y=0pt}
+ \anchor{west}{\northwest\pgf@y=0pt}
+ \anchor{w}{\northwest \pgf@y=0pt}
+ \anchor{south}{\northwest \pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
+ \anchor{north}{\northwest\pgf@x=0pt}
+ \anchor{n}{\northwest\pgf@x=0pt}
+ \anchor{south west}{\northwest\pgf@y=-\pgf@y}
+ \anchor{north east}{\northwest\pgf@x=-\pgf@x}
+ \anchor{north west}{\northwest}
+ \anchor{south east}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchorborder{
+ \pgf@circ@res@left=\pgf@x
+ \pgf@circ@res@up=\pgf@y
+ \northwest\pgf@circ@res@temp=\pgf@y
+ \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}%
+ {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
+ }
+ \behindforegroundpath{
+ \pgfscope
+ \northwest\pgf@circ@res@temp=\pgf@y
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@temp}
+ \ifx\tikz@fillcolor\pgfutil@empty
+ % set the default fill color to white
+ \pgfsetfillcolor{white}
+ % ...but override it if the class is defined!
+ \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
+ \else
+ \pgfsetfillcolor{\tikz@fillcolor}
+ \fi
+ \pgfsetfillopacity{\ctikzvalof{ieeestd ports/not radius fill}}% normally 1.0
+ \pgfusepath{draw,fill}
+ \endpgfscope
+ }
+}
+
+%%%% Transmission gates
+% tgates are only ieee style for now
+\tikzset{%
+ tgate/.style ={shape=ieee tgate},
+ double tgate/.style ={shape=ieee double tgate},
+}
+\ctikzset{tgate scale/.initial=0.7}
+% Buffer and inverters
+%
+% #1: name
+% #2: 1: one-not, 2:double-not
+% #3: content
+\long\def\pgfcircdeclareieeetgate#1#2#3{%
+ \pgfdeclareshape{ieee #1}%
+ {%
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
+ \saveddimen{\baselen}{%
+ \pgf@circ@ieeestd@baselen\pgf@x=\pgf@circ@res@temp
+ }
+ \saveddimen{\stdH}{% This is HALF the height of the inner port
+ \pgf@circ@ieeestd@stdH\pgf@x=\pgf@circ@res@temp
+ }
+ \saveddimen{\notdiameter}{
+ \pgf@circ@notradius\pgf@x=2\pgf@circ@res@temp
+ }
+ \saveddimen{\notradius}{
+ \pgf@circ@notradius\pgf@x=\pgf@circ@res@temp
+ }
+ \saveddimen{\pinlen}{%
+ \pgf@circ@ieeestd@pinlen\pgf@x=\pgf@circ@res@temp
+ }
+ % anchors for the body (no pins included here)
+ % Notice that 0.8660254 is cos(30)
+ \savedanchor{\bodyleft}{% This DOES NOT take into account the pointy or/xor thing
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ \pgfmathsetlength{\pgf@y}{#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ }
+ \savedanchor{\topleft}{%
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ \pgfmathsetlength{\pgf@y}{#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ }
+ \savedanchor{\bodyright}{%
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ \pgfmathsetlength{\pgf@y}{#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ }
+ \savedanchor{\bottomright}{% Here it is the same as \bodyright
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ \pgfmathsetlength{\pgf@y}{#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ }
+ % geographical anchors --- must be rectangulars!
+ \savedanchor{\northwest}{%
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ \pgfmathsetlength{\pgf@y}{#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ }
+ \savedanchor{\southwest}{%
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{-2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ \pgfmathsetlength{\pgf@y}{-#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ }
+ \savedanchor{\southeast}{%
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ \pgfmathsetlength{\pgf@y}{-#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ }
+ \savedanchor{\northeast}{%
+ \pgf@circ@ieeestd@stdH
+ \pgfmathsetlength{\pgf@x}{2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ \pgfmathsetlength{\pgf@y}{#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
+ }
+ \anchor{center}{\pgfpointorigin}
+ \anchor{text}{
+ \ifpgf@circ@center@text
+ \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
+ \else
+ \pgf@circ@ieeestd@stdH
+ \pgfpoint{-0.8660254*\pgf@circ@res@temp + \ctikzvalof{left text distance}}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
+ \fi
+ }
+ % input anchors
+ \anchor{in}{\bodyleft\pgf@y=0pt\advance\pgf@x by-\pinlen}
+ \anchor{in 1}{\bodyleft\pgf@y=0pt\advance\pgf@x by-\pinlen}
+ \anchor{bin}{\bodyleft\pgf@y=0pt\relax}
+ \anchor{bin 1}{\bodyleft\pgf@y=0pt\relax}
+ % gates
+ \anchor{gate}{\bodyleft\pgf@circ@res@up=\pgf@y
+ \pgf@x=0pt\pgfmathsetlength{\pgf@y}{-(#2-1)*0.5*\pgf@circ@res@up-\pinlen}}
+ \anchor{bgate}{\bodyleft\pgf@circ@res@up=\pgf@y
+ \pgf@x=0pt\pgfmathsetlength{\pgf@y}{-(#2-1)*0.5*\pgf@circ@res@up}}
+ % gate (up) (2.1547 = 1+1/cos(30)
+ \anchor{notgate}{\bodyleft\pgf@circ@res@up=\pgf@y
+ \pgf@x=0pt\relax
+ \pgfmathsetlength{\pgf@circ@res@temp}{2.1547*\notradius}
+ \ifdim\pinlen>\pgf@circ@res@temp
+ \pgfmathsetlength{\pgf@y}{(#2-1)*0.5*\pgf@circ@res@up+\pinlen}
+ \else
+ \pgf@y=\pgf@circ@res@temp
+ \fi
+ }
+ \anchor{bnotgate}{\bodyleft\pgf@circ@res@up=\pgf@y
+ \pgf@x=0pt\pgfmathsetlength{\pgf@y}{(#2-1)*0.5*\pgf@circ@res@up+2.1547*\notradius}}
+
+ % output anchors
+ \anchor{out}{%
+ \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without not ball
+ \advance\pgf@circ@res@other by\pinlen
+ \pgfextractx{\pgf@circ@res@temp}{\bottomright} %body + ball border
+ \ifdim \pgf@circ@res@temp > \pgf@circ@res@other
+ \pgf@circ@res@other = \pgf@circ@res@temp % do not enter in the ball...
+ \fi
+ \pgf@x=\pgf@circ@res@other\pgf@y=0pt
+ }
+ \anchor{bout}{\bottomright\pgf@y=0pt}
+
+ \anchor{body right}{\bodyright\pgf@y=0pt}
+ \anchor{right}{\bottomright\pgf@y=0pt}
+ \anchor{body left}{\bodyleft\pgf@y=0pt}% central edge of the body
+ \anchor{left}{\bodyleft\pgf@y=0pt}
+ \anchor{up}{%
+ \bodyleft
+ \pgf@x=0pt
+ \ifnum#2=1\relax
+ \pgf@y=0pt
+ \else
+ \pgf@y=.5\pgf@y
+ \fi
+ \advance\pgf@y by \notdiameter
+ }
+ \anchor{down}{%
+ \bodyleft
+ \pgf@x=0pt
+ \ifnum#2=1\relax
+ \pgf@y=0pt
+ \else
+ \pgf@y=-.5\pgf@y
+ \fi
+ }
+ % this is for when it's used as a bipole
+ % we use the enclosing rectangle (see below)
+ \anchorborder{%
+ %
+ % this is the square border to position the path label with a bit of horizontal space
+ %
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@circ@res@up}{\bodyleft}
+ \pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
+ {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
+ }
+ % geographical anchors
+ \anchor{nw}{\northwest}
+ \anchor{ne}{\northeast}
+ \anchor{se}{\southeast}
+ \anchor{sw}{\southwest}
+ \anchor{north west}{\northwest}
+ \anchor{north east}{\northeast}
+ \anchor{south east}{\southeast}
+ \anchor{south west}{\southwest}
+ % over 0,0 even if asymmetric
+ % will break if the geocoords are not rectangular
+ \anchor{n}{\northwest\pgf@x=0pt\relax}
+ \anchor{e}{\northeast\pgf@y=0pt\relax}
+ \anchor{s}{\southwest\pgf@x=0pt\relax}
+ \anchor{w}{\northwest\pgf@y=0pt\relax}
+ \anchor{north}{\northwest\pgf@x=0pt\relax}
+ \anchor{east}{\northeast\pgf@y=0pt\relax}
+ \anchor{south}{\southwest\pgf@x=0pt\relax}
+ \anchor{west}{\northwest\pgf@y=0pt\relax}
+
+ \backgroundpath{
+ \pgfscope
+ \pgfsetcolor{\ctikzvalof{color}}
+ \pgfextractx{\pgf@circ@res@left}{\bodyleft}
+ \pgfextracty{\pgf@circ@res@up}{\bodyleft}
+ \pgfextractx{\pgf@circ@res@right}{\bodyright}
+ % \draw input pins
+ \ifpgfcirc@draw@input@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{0pt}}
+ % gate (down)
+ \pgfpathmoveto{\pgfpoint{0pt}{-(#2-1)*0.5*\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-(#2-1)*0.5*\pgf@circ@res@up-\pinlen}}
+ % gate (up) (2.1547 = 1+1/cos(30)
+ \pgfmathsetlength{\pgf@circ@res@temp}{2.1547*\notradius}
+ \ifdim\pinlen>\pgf@circ@res@temp
+ \pgfpathmoveto{\pgfpoint{0pt}{(#2-1)*0.5*\pgf@circ@res@up+\pgf@circ@res@temp}}
+ \pgfpathlineto{\pgfpoint{0pt}{(#2-1)*0.5*\pgf@circ@res@up+\pinlen}}
+ \fi
+ \pgfusepath{draw}
+ \fi
+ #3
+ \endpgfscope
+ % output lead:
+ \pgfextractx{\pgf@circ@res@right}{\bottomright} %body+ball border
+ \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without "not" ball
+ \advance\pgf@circ@res@other by \pinlen\relax
+ \ifdim \pgf@circ@res@other > \pgf@circ@res@right
+ \ifpgfcirc@draw@output@leads
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
+ \pgfusepath{draw}
+ \fi
+ \fi
+ }
+ }
+}
+
+\pgfcircdeclareieeetgate{tgate}{1}{%
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfscope
+ % 1.1547 is 1/cos(30)
+ \pgftransformshift{\pgfpoint{0pt}{1.1547*\notradius}}
+ \pgfnode{notcirc}{center}{}{\thisshape-not}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+\pgfcircdeclareieeetgate{double tgate}{2}{%
+ \pgfscope
+ \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ % bottom triangles
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0pt}{-.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfpathclose
+ \pgf@circ@draworfill
+ \endpgfscope
+ \pgfscope
+ % 1.1547 is 1/cos(30)
+ \pgftransformshift{\pgfpoint{0pt}{.5*\pgf@circ@res@up+1.1547*\notradius}}
+ \pgfnode{notcirc}{center}{}{\thisshape-not}{\pgfusepath{stroke}}
+ \endpgfscope
+}
+
+%%%---------- close: tex/pgfcircmultipoles
+
+%%%%%%%%%%% Springe nach tex/pgfcirclabel
+%%%---------- open: tex/pgfcirclabel.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Bipole label positioning
+
+%% bipole labels and annotation extra style
+
+\ctikzset{bipole label style/.style={}}
+\tikzset{bipole label style/.code={
+ \ctikzset{bipole label style/.style={#1}}
+}}
+\tikzset{bipole label append style/.code={
+ \ctikzset{bipole label style/.append style={#1}}
+}}
+\ctikzset{bipole annotation style/.style={}}
+\tikzset{bipole annotation style/.code={
+ \ctikzset{bipole annotation style/.style={#1}}
+}}
+\tikzset{bipole annotation append style/.code={
+ \ctikzset{bipole annotation style/.append style={#1}}
+}}
+
+%% Options
+\ctikzset{label/.style = { l=#1 } }
+\ctikzset{l/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
+ \ctikzsetvalof{bipole/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+
+\ctikzset{label above/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{l^/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+
+\ctikzset{label below/.code = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+\ctikzset{l_/.style = {
+ l=#1,
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+\ctikzset{annotation/.style = { a=#1 } }
+\ctikzset{a/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/annotation/name=#1}
+ \ctikzsetvalof{bipole/annotation/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/annotation/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+
+\ctikzset{annotation above/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+
+\ctikzset{a^/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=90 }
+}
+
+\ctikzset{annotation below/.code = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+\ctikzset{a_/.style = {
+ a=#1,
+ \circuitikzbasekey/bipole/annotation/position=-90 }
+}
+
+% This is to adjust spacing for the labels so that they are not cramped on components
+\def\pgf@circ@ls{.75ex} % labelspace to have just one point to change
+
+\def\pgf@circ@drawlabels#1{
+ \pgfextra{
+ % This function will be called with argument #1 equal
+ % to "label" or "annotation" form pgfcircpath.tex.
+ % pgf@circ@direction is the direction of the path,
+ % its value is set in pgfcircpath.tex
+ \pgfmathsubtract{\pgf@circ@direction}{90}
+ \pgfmathround{\pgfmathresult} % avoid precision loss errors
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/position}}
+ \ifnum \pgf@circ@temp < 0
+ \pgfmathadd{\pgf@circ@labanc}{180}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ % \typeout{INI: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
+ %
+ % normalize the angle values
+ %
+ \pgfmathmod{\pgf@circ@labanc}{360}
+ \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ %
+ \ifpgf@circuit@bipole@inverted
+ \pgfmathadd{\pgf@circ@temp}{180} %If shape is inverted, use opposite anchor
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ %
+ \ifnum \ctikzvalof{mirror value} = -1
+ \pgfmathadd{\pgf@circ@temp}{180} %If shape is mirrored, use opposite anchor
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ % \typeout{FIN: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
+ }
+ %Firstly, place a coordinate directly at the edge of the shape
+ (\ctikzvalof{bipole/name}.\pgf@circ@temp) coordinate (pgfcirc@labelcoor)
+ %now decide, which labels should be drawn
+ \pgfextra{
+ \edef\pgf@temp{\ctikzvalof{label/align}}
+ \def\pgf@circ@temp{straight}
+ }
+ \ifx\pgf@temp\pgf@circ@temp %straight
+ \pgf@circ@drawreglabels{#1}
+ \else
+ \pgfextra{\def\pgf@circ@temp{rotate}}
+ \ifx\pgf@temp\pgf@circ@temp %rotate
+ \pgf@circ@drawrotlabels{#1}
+ \else% smart
+ \pgf@circ@drawsmartlabels{#1}
+ \fi
+ \fi
+}
+
+
+\def\pgf@circ@drawsmartlabels#1{
+ \pgfextra{
+ \pgfmathmod{\pgf@circ@direction}{90}
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ \ifnum \pgfcircmathresult > 20
+ \ifnum \pgfcircmathresult < 70
+ \pgf@circ@drawrotlabels{#1}
+ \else
+ \pgf@circ@drawreglabels{#1}
+ \fi
+ \else
+ \pgf@circ@drawreglabels{#1}
+ \fi
+ }
+
+
+\def\pgf@circ@drawrotlabels#1{
+ \pgfextra{
+ % scale the distances in function of zoom, so that they are not
+ % dependent on it but on font size. Thanks to @marmot
+ % https://tex.stackexchange.com/a/476018/38080
+ % the coeffcient is adjusted so that the distance is more or less
+ % the same for rotated labels and straight ones (although it will
+ % depend on the font, so it's not exact).
+ \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\myscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
+ % \typeout{ROT\tmpa\space\tmpb\space\tmpc\space\tmpd\space\myscale}
+ \pgfmathsetlength\pgf@circ@res@temp{1.5*\pgf@circ@ls/\myscale}
+ \ifnum \ctikzvalof{bipole/#1/position}>0
+ %we need some more space for placement below, due to mid-anchor
+ \else % we do not have <= in \ifnum...
+ \pgf@circ@res@temp=1.5\pgf@circ@res@temp
+ \fi
+ %Calculate rotation of the label from direction and strip decimals
+ \pgfmathsetmacro{\pgfcirclabrot}{round(\pgf@circ@direction)}
+ \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfcirclabrot\pgf@nil}
+ % rotate the label at second or third quadrant:
+ \ifnum \pgfcirclabrot > 90 \ifnum \pgfcirclabrot < 270
+ \pgfmathsubtract{\pgf@circ@direction}{180}
+ \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ %invert the space relationships due to rotated strings
+ \ifnum \ctikzvalof{bipole/#1/position}>0
+ \pgf@circ@res@temp=1.5\pgf@circ@res@temp
+ \fi
+ \fi\fi
+ \pgfmathparse{\ctikzvalof{bipole/#1/position}>0?\pgf@circ@direction+90:\pgf@circ@direction-90}%
+ \edef\pgf@circ@labposangle{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}%
+ \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix#1-direction\endcsname{\pgfcirclabrot}%
+ \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix-#1-anchor\endcsname{mid}%
+ }
+ % reset cm is not working correctly here
+ (pgfcirc@labelcoor)++(\pgf@circ@labposangle:\the\pgf@circ@res@temp) coordinate(pgfcirc@labelcoor)
+ node[anchor=mid, rotate=\pgfcirclabrot, \circuitikzbasekey/bipole #1 style]
+ (\ctikzvalof{bipole/name}#1){\pgf@circ@finallabels{#1}}
+}
+
+\def\pgf@circ@drawreglabels#1{
+ %Now calculate all shape positions
+ %Use mid-anchor at x-axis and base-anchor at y-axis, respectively.
+ %All points between will be addressed by angled-anchors:
+ \pgfextra{
+ % scale ex-distance to make it independent on scale
+ % thanks @marmot see https://tex.stackexchange.com/a/476018/38080
+ \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\myscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
+ % \typeout{ROT\tmpa\space\tmpb\space\tmpc\space\tmpd\space\myscale}
+ \pgfmathsetlength\pgf@circ@res@temp{\pgf@circ@ls/\myscale}
+ \pgfmathadd{\pgf@circ@labanc}{90}
+ \pgfmathround{\pgfmathresult}
+ \def\pgf@circ@labanctext{\pgf@circ@labanc}
+ \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \pgfmathparse{mod(\pgf@circ@temp,180)>135?mod(\pgf@circ@temp,180)-180:mod(\pgf@circ@temp,180)}
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ %Values around 90 are at both y-axis
+ \ifnum \pgfcircmathresult > 84 \ifnum \pgfcircmathresult< 96
+ \pgfextra{\edef\pgf@circ@labpos{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}}
+ \ifnum \pgf@circ@labpos > 180
+ \ifnum \ctikzvalof{bipole/#1/position} > 0
+ \pgfextra{\def\pgf@circ@labanctext{mid west}}
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{mid east}}
+ \fi
+ \else
+ \ifnum \ctikzvalof{bipole/#1/position} > 0
+ \pgfextra{\def\pgf@circ@labanctext{mid east}}
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{mid west}}
+ \fi
+ \fi
+ \fi\fi
+ %Values between -5 and 5 are at pos /neg x-axis
+ \ifnum \pgfcircmathresult <6 \ifnum \pgfcircmathresult > -6
+ \ifnum \ctikzvalof{bipole/#1/position} < 0
+ \ifnum \pgf@circ@labanc > 90
+ % using base coordinate instead of south to naturally align
+ % symbols with descendants; but this invalidate the effect of
+ % the inner sep, so recover it by shifting the anchor
+ % reset cm is not working sometime, use @marmot solution
+ % see https://tex.stackexchange.com/a/476018/38080
+ (pgfcirc@labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(pgfcirc@labelcoor)
+ \pgfextra{\def\pgf@circ@labanctext{base}}%base
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{north}}%north
+ \fi
+ \else
+ \ifnum \pgf@circ@labanc < 90
+ % shift, as above
+ (pgfcirc@labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(pgfcirc@labelcoor)
+ \pgfextra{\def\pgf@circ@labanctext{base}}%base
+ \else
+ \ifnum \pgf@circ@labanc > 180
+ % this shouldn't happen, but somehow it does (270 degree anchors)
+ % shift, as above
+ (pgfcirc@labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(pgfcirc@labelcoor)
+ \pgfextra{\def\pgf@circ@labanctext{base}}%base
+ \else
+ \pgfextra{\def\pgf@circ@labanctext{north}}%north
+ \fi
+ \fi
+ \fi
+ \fi\fi
+ \pgfextra{%
+ \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix#1-direction\endcsname{0}%
+ \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix-#1-anchor\endcsname{\pgf@circ@labanctext}%
+ }
+ (pgfcirc@labelcoor) node[anchor=\pgf@circ@labanctext,
+ inner sep=0.5\pgf@circ@res@temp, outer sep=0pt, \circuitikzbasekey/bipole #1 style,
+ ](\ctikzvalof{bipole/name}#1){\strut\pgf@circ@finallabels{#1}%
+ }
+}
+
+\def\pgf@circ@finallabels#1{%
+ \edef\pgf@temp{}%
+ \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/unit}}%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \ctikzvalof{bipole/#1/name}%
+ \else%
+ $\SI{\ctikzvalof{bipole/#1/name}}{\ctikzvalof{bipole/#1/unit}}$%
+ \fi%
+}
+
+
+%%%% Stacked labels
+%
+% stacked labels by Romano Giannetti romano@rgtti.com
+% heavily based on Claudo Fiandrinos's https://tex.stackexchange.com/a/65792/38080
+% \expandafter trick inspired by Matthew Leingang's https://tex.stackexchange.com/a/12272/38080
+%
+% labels are in a tabular, globally aligned:
+% vertically with key l2 valign (default c)
+% c: center t: top b: bottom
+% horizontally with key l2 align (default l)
+% l: left c: centered r: right
+% you can switch sides using l2_=... and l2^=...
+% syntax is l2_ = line1 and line2 (same for l2^)
+%
+\ctikzset{%
+ l2 valign/.store in=\ltwo@valign, l2 valign=c,
+ l2 halign/.store in=\ltwo@halign, l2 halign=l,
+}
+\ctikzset{l2base/.code n args={2}{
+ \pgfkeys{/tikz/circuitikz/bipole/label/name=%
+ \bgroup
+ \setlength{\tabcolsep}{2pt}%
+ \def\ltwo@tabu{\tabular[\ltwo@valign]}%
+ \expandafter\ltwo@tabu\expandafter{\ltwo@halign}%
+ #1\\ #2%
+ \endtabular
+ \egroup
+ }%
+ \ctikzsetvalof{bipole/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#2}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}}
+\ctikzset{l2/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l2 above/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l2^/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=90 }
+}
+\ctikzset{l2 below/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+\ctikzset{l2_/.style args={#1 and #2}{
+ l2base={#1}{#2},
+ \circuitikzbasekey/bipole/label/position=-90 }
+}
+
+%%%---------- close: tex/pgfcirclabel
+%%%%%%%%%%% Springe nach tex/pgfcircvoltage
+%%%---------- open: tex/pgfcircvoltage.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Voltage management
+
+%% styles
+\ctikzset{bipole voltage style/.style={}}
+\tikzset{bipole voltage style/.code={
+ \ctikzset{bipole voltage style/.style={#1}}
+}}
+\tikzset{bipole voltage append style/.code={
+ \ctikzset{bipole voltage style/.append style={#1}}
+}}
+
+\ctikzset{v^>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v^</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = above
+ }
+}
+
+\ctikzset{v_>/.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = forward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_</.style = {
+ v = #1,
+ \circuitikzbasekey/bipole/voltage/direction = backward,
+ \circuitikzbasekey/bipole/voltage/position = below
+ }
+}
+
+\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
+\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
+\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
+\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
+
+% Default position varies whether the component is a voltage source
+% or not
+\ctikzset{v/.code = {
+ \pgfcirc@has@vtrue
+ \ifpgf@circuit@bipole@isvoltage
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \fi
+ \fi
+ \ifpgf@circ@oldvoltagedirection
+ \ifpgf@circuit@bipole@iscurrent\ifpgf@circ@fixbatteries
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \fi\fi
+ \else
+ \ifpgf@circuit@bipole@iscurrent
+ \ifpgf@circuit@bipole@current@backward
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=forward}
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
+ \circuitikzbasekey/bipole/voltage/direction=backward}
+ \fi\fi\fi
+ \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
+ \ctikzsetvalof{bipole/voltage/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ }
+}
+
+% american voltage font selection and symbol definition
+% the default font command is {} --- nothing
+\def\pgf@circ@avfont{\ctikzvalof{voltage/american font}}
+%
+% plus and minus symbols (default is $+$ and $-$, see pgfcirc.defines.tex)
+%
+\def\pgf@circ@avplus{\ctikzvalof{voltage/american plus}}
+\def\pgf@circ@avminus{\ctikzvalof{voltage/american minus}}
+
+%%
+\def\setscaledRlenforclass{%
+ \csname pgf@sh@ma@\ctikzvalof{bipole/name}\endcsname
+ \ifdefined\ctikzclass
+ \edef\pgf@temp{/tikz/circuitikz/\ctikzclass/scale}
+ \pgfkeysifdefined{\pgf@temp}
+ {\pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ {\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}
+ \else
+ \pgf@circ@scaled@Rlen=\pgf@circ@Rlen
+ \fi
+}
+
+%% Output routine for generic bipoles
+% put this to true to see the voltage label coordinate anchors
+\newif\ifpgf@circ@debugv\pgf@circ@debugvfalse
+
+\def\pgf@circ@drawvoltagegeneric{
+ \pgfextra{
+ % \typeout{KIND:\ctikzvalof{bipole/kind}\space RLEN:\the\pgf@circ@Rlen\space SCALED:\the\pgf@circ@scaled@Rlen}
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@inverted
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
+ \else
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@inverted
+ \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
+ \else
+ \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
+ \fi
+ \fi
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@voltage@angle{90}
+ \else
+ \def\pgf@circ@voltage@angle{-90}
+ \fi
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/distance from node}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\distancefromnode{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/distance from node}} }
+ { \edef\distancefromnode{\ctikzvalof{voltage/distance from node}} }
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/bump b}
+ \pgfkeysifdefined{\pgf@temp}
+ { \edef\bumpb{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/bump b}} }
+ { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
+ \edef\shiftv{\ctikzvalof{voltage/shift}}
+ % additional per-bipole voltage shift (internal)
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/additional shift}
+ \pgfkeysifdefined{\pgf@temp}
+ {
+ \edef\addvshift{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/additional shift}}
+ }
+ {
+ \edef\addvshift{0}
+ }
+ \newdimen{\absvshift}
+ \pgfmathsetlength{\absvshift}{(1+\shiftv+\addvshift)*(\distfromline)}
+ % reset anchor if american and open
+ \ifpgf@circuit@europeanvoltage
+ \else
+ \ifx\@@kind\@@open
+ \def\pgf@circ@bipole@voltage@label@anchor{center}
+ \fi
+ \fi
+ \ifpgf@circuit@bipole@voltage@raised
+ \def\pgf@circ@bipole@voltage@label@anchor{center}
+ \pgfmathsetlength{\absvshift}{\absvshift+sign(\absvshift)*height{"Q"}} % with the current font.
+ \fi
+ }
+ % %\pgf@circ@Rlen/\ctikzvalof{current arrow scale} is equal to the length of the currarrow
+ %absolute move, minimum space is length of arrowhead
+ coordinate (pgfcirc@midtmp) at ($(\tikztostart) ! \pgf@circ@Rlen/\ctikzvalof{current arrow scale} ! (pgfcirc@anchorstartnode)$)
+ coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distancefromnode ! (pgfcirc@anchorstartnode)$)
+ coordinate (pgfcirc@Vfrom@flat) at (pgfcirc@midtmp)
+ %absolute move, minimum space is length of arrowhead
+ coordinate (pgfcirc@midtmp) at ($(\tikztotarget) ! \pgf@circ@Rlen/\ctikzvalof{current arrow scale} ! (pgfcirc@anchorendnode)$)
+ coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distancefromnode ! (pgfcirc@anchorendnode)$)
+ coordinate (pgfcirc@Vto@flat) at (pgfcirc@midtmp)
+ coordinate (pgfcirc@mid) at ($(pgfcirc@Vfrom@flat)!0.5!(pgfcirc@Vto@flat)$)
+
+ \ifpgf@circuit@bipole@voltage@below
+ % see comments for the "above" part (similar)
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@straight
+ coordinate (pgfcirc@bottom) at (\ctikzvalof{bipole/name}.-90)
+ coordinate (pgfcirc@Vto1) at ($(pgfcirc@mid)+(pgfcirc@bottom)-(pgfcirc@Vfrom@flat)$)
+ coordinate (pgfcirc@Vfrom1) at ($(pgfcirc@mid)+(pgfcirc@bottom)-(pgfcirc@Vto@flat)$)
+ coordinate (\pgfcirc@a@prefix-Vto) at ($(pgfcirc@Vto1) ! \absvshift!90 : (pgfcirc@Vfrom1)$)
+ coordinate (\pgfcirc@a@prefix-Vfrom) at ($(pgfcirc@Vfrom1) ! \absvshift!-90 : (pgfcirc@Vto1)$)
+ coordinate (\pgfcirc@a@prefix-Vlab) at ($(\pgfcirc@a@prefix-Vto)!0.5!(\pgfcirc@a@prefix-Vfrom) $)
+ coordinate (pgfcirc@Vdir) at (\pgfcirc@a@prefix-Vto)
+ \else
+ coordinate (\pgfcirc@a@prefix-Vto) at ($(pgfcirc@Vto@flat) ! \absvshift!90 : (pgfcirc@anchorendnode)$)
+ coordinate (\pgfcirc@a@prefix-Vfrom) at ($(pgfcirc@Vfrom@flat) ! \absvshift!-90 : (pgfcirc@anchorstartnode)$)
+ coordinate (pgfcirc@Vcont1t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
+ coordinate (pgfcirc@Vcont2t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
+ coordinate (\pgfcirc@a@prefix-Vcont1) at ($(pgfcirc@Vcont1t) ! -\absvshift!90 : (pgfcirc@Vcont2t)$)
+ coordinate (\pgfcirc@a@prefix-Vcont2) at ($(pgfcirc@Vcont2t) ! -\absvshift!-90 : (pgfcirc@Vcont1t)$)
+ coordinate (\pgfcirc@a@prefix-Vlab) at ($(\pgfcirc@a@prefix-Vcont2)!0.5!(\pgfcirc@a@prefix-Vcont1)$)
+ coordinate (pgfcirc@Vdir) at (\pgfcirc@a@prefix-Vcont2)
+ \fi
+ \else
+ % we are in case of american here
+ coordinate (\pgfcirc@a@prefix-Vto) at ($(pgfcirc@Vto@flat) ! \absvshift!90 : (pgfcirc@anchorendnode)$)
+ coordinate (\pgfcirc@a@prefix-Vfrom) at ($(pgfcirc@Vfrom@flat) ! \absvshift!-90 : (pgfcirc@anchorstartnode)$)
+ coordinate (pgfcirc@bottom) at (\ctikzvalof{bipole/name}.-90)
+ coordinate (pgfcirc@Vdir0) at ($(pgfcirc@mid)+(pgfcirc@bottom)-(pgfcirc@Vfrom@flat)$)
+ coordinate (\pgfcirc@a@prefix-Vlab) at ($(pgfcirc@bottom) ! \absvshift!-90 : (pgfcirc@Vdir0)$)
+ coordinate (pgfcirc@Vdir) at ($(pgfcirc@mid)+(\pgfcirc@a@prefix-Vlab)-(pgfcirc@Vfrom@flat)$)
+ \ifpgf@circuit@bipole@voltage@raised
+ % move the from and to up to the level of Vlab
+ coordinate (\pgfcirc@a@prefix-Vto) at ($(\pgfcirc@a@prefix-Vlab)+(pgfcirc@Vto@flat)-(pgfcirc@mid)$)
+ coordinate (\pgfcirc@a@prefix-Vfrom) at ($(\pgfcirc@a@prefix-Vlab)+(pgfcirc@Vfrom@flat)-(pgfcirc@mid)$)
+ \fi
+ \fi
+ \else
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@straight
+ coordinate (pgfcirc@top) at (\ctikzvalof{bipole/name}.90)
+ % move parallel to the component line at pgfcirc@top distance
+ coordinate (pgfcirc@Vto1) at ($(pgfcirc@mid)+(pgfcirc@top)-(pgfcirc@Vfrom@flat)$)
+ coordinate (pgfcirc@Vfrom1) at ($(pgfcirc@mid)+(pgfcirc@top)-(pgfcirc@Vto@flat)$)
+ % add the extra distance
+ coordinate (\pgfcirc@a@prefix-Vto) at ($(pgfcirc@Vto1) ! \absvshift!-90 : (pgfcirc@Vfrom1)$)
+ coordinate (\pgfcirc@a@prefix-Vfrom) at ($(pgfcirc@Vfrom1) ! \absvshift!90 : (pgfcirc@Vto1)$)
+ coordinate (\pgfcirc@a@prefix-Vlab) at ($(\pgfcirc@a@prefix-Vto)!0.5!(\pgfcirc@a@prefix-Vfrom) $)
+ % direction line to shift the label later
+ coordinate (pgfcirc@Vdir) at (\pgfcirc@a@prefix-Vto)
+ \else
+ % european voltages here
+ coordinate (\pgfcirc@a@prefix-Vto) at ($(pgfcirc@Vto@flat) ! -\absvshift!90 : (pgfcirc@anchorendnode)$)
+ coordinate (\pgfcirc@a@prefix-Vfrom) at ($(pgfcirc@Vfrom@flat) ! -\absvshift!-90 : (pgfcirc@anchorstartnode)$)
+ % identify the two control points for the "arc" of the voltage
+ coordinate (pgfcirc@Vcont1t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
+ coordinate (pgfcirc@Vcont2t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
+ % and shift them a bit
+ coordinate (\pgfcirc@a@prefix-Vcont1) at ($(pgfcirc@Vcont1t) ! \absvshift!90 : (pgfcirc@Vcont2t)$)
+ coordinate (\pgfcirc@a@prefix-Vcont2) at ($(pgfcirc@Vcont2t) ! \absvshift!-90 : (pgfcirc@Vcont1t)$)
+ coordinate (\pgfcirc@a@prefix-Vlab) at ($(\pgfcirc@a@prefix-Vcont2)!0.5!(\pgfcirc@a@prefix-Vcont1)$)
+ % direction line to shift the label later
+ coordinate (pgfcirc@Vdir) at (\pgfcirc@a@prefix-Vcont2)
+ \fi
+ \else
+ % we are in case of american here
+ coordinate (\pgfcirc@a@prefix-Vto) at ($(pgfcirc@Vto@flat) ! \absvshift!-90 : (pgfcirc@anchorendnode)$)
+ coordinate (\pgfcirc@a@prefix-Vfrom) at ($(pgfcirc@Vfrom@flat) ! \absvshift!90 : (pgfcirc@anchorstartnode)$)
+ coordinate (pgfcirc@top) at (\ctikzvalof{bipole/name}.90)
+ % move parallel to the component line
+ coordinate (pgfcirc@Vdir0) at ($(pgfcirc@mid)+(pgfcirc@top)-(pgfcirc@Vfrom@flat)$)
+ % and add the extra distance
+ coordinate (\pgfcirc@a@prefix-Vlab) at ($(pgfcirc@top) ! \absvshift!90 : (pgfcirc@Vdir0)$)
+ coordinate (pgfcirc@Vdir) at ($(pgfcirc@mid)+(\pgfcirc@a@prefix-Vlab)-(pgfcirc@Vfrom@flat)$)
+ \ifpgf@circuit@bipole@voltage@raised
+ % move the from and to up to the level of Vlab
+ coordinate (\pgfcirc@a@prefix-Vto) at ($(\pgfcirc@a@prefix-Vlab)+(pgfcirc@Vto@flat)-(pgfcirc@mid)$)
+ coordinate (\pgfcirc@a@prefix-Vfrom) at ($(\pgfcirc@a@prefix-Vlab)+(pgfcirc@Vfrom@flat)-(pgfcirc@mid)$)
+ \fi
+ \fi
+ \fi
+ \ifx\@@kind\@@open
+ coordinate (\pgfcirc@a@prefix-Vto) at (pgfcirc@Vto@flat)
+ coordinate (\pgfcirc@a@prefix-Vfrom) at (pgfcirc@Vfrom@flat)
+ \fi
+ \ifpgf@circ@debugv
+ node [ocirc, fill=red] at (pgfcirc@anchorstartnode) {}
+ node [ocirc, fill=blue] at (pgfcirc@anchorendnode) {}
+ node [ocirc, fill=green] at (\pgfcirc@a@prefix-Vto) {}
+ node [ocirc, fill=yellow] at (\pgfcirc@a@prefix-Vfrom) {}
+ node [odiamondpole, fill=green!50!black] at (pgfcirc@Vto@flat) {}
+ node [odiamondpole, fill=orange] at (pgfcirc@Vfrom@flat) {}
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@straight
+ \else
+ node [osquarepole, fill=red] at (\pgfcirc@a@prefix-Vcont1) {}
+ node [osquarepole, fill=blue] at (\pgfcirc@a@prefix-Vcont2) {}
+ \fi
+ \fi
+ \fi
+
+ %
+ % Now we draw the voltage things (only if not empty --- in which case we have been
+ % called just to set the anchors)
+ %
+ \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@straight
+ \ifpgf@circuit@bipole@voltage@backward
+ (\pgfcirc@a@prefix-Vto) --(\pgfcirc@a@prefix-Vfrom) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
+ \else
+ (\pgfcirc@a@prefix-Vfrom) --(\pgfcirc@a@prefix-Vto) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ (\pgfcirc@a@prefix-Vto) .. controls (\pgfcirc@a@prefix-Vcont2) and (\pgfcirc@a@prefix-Vcont1) ..
+ node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {}
+ (\pgfcirc@a@prefix-Vfrom)
+ \else
+ (\pgfcirc@a@prefix-Vfrom) .. controls (\pgfcirc@a@prefix-Vcont1) and (\pgfcirc@a@prefix-Vcont2) ..
+ node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {}
+ (\pgfcirc@a@prefix-Vto)
+ \fi
+ \fi
+ \else % american
+ \ifpgf@circuit@bipole@voltage@backward
+ \ifpgf@circ@oldvoltagedirection
+ (\pgfcirc@a@prefix-Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ (\pgfcirc@a@prefix-Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ \else
+ (\pgfcirc@a@prefix-Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ (\pgfcirc@a@prefix-Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ \fi
+ \else
+ \ifpgf@circ@oldvoltagedirection
+ (\pgfcirc@a@prefix-Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ (\pgfcirc@a@prefix-Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ \else
+ (\pgfcirc@a@prefix-Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
+ (\pgfcirc@a@prefix-Vto) node[inner sep=0, node font=\pgf@circ@avfont,
+ anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
+ \fi
+ \fi
+ \fi
+ \fi % Closing the ...ifempty
+}
+
+%% Output routine for voltage sources
+\def\pgf@circ@drawvoltagegenerator{
+ % the following is affected indirectly by voltage/shift, you can move the arrow with voltage/bump a.
+ % it's not perfect, but I can't find the way to do it correctly...
+ \pgfextra{
+ \edef\shiftv{\ctikzvalof{voltage/shift}}
+ % distance along the 60-120 axis
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/bump a}
+ \pgfkeysifdefined{\pgf@temp}
+ {
+ \edef\bumpa{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/bump a}}
+ }
+ {
+ \edef\bumpa{\ctikzvalof{voltage/bump a}}
+ }
+ % additional per-bipole voltage shift (internal)
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/additional shift}
+ \pgfkeysifdefined{\pgf@temp}
+ {
+ \edef\addvshift{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/additional shift}}
+ }
+ {
+ \edef\addvshift{0}
+ }
+ \pgfmathsetmacro{\bumpaplus}{\bumpa + 0.5*\shiftv} % coefficient added "by feel". Sorry.
+ }
+ \ifpgf@circuit@bipole@voltage@below
+ coordinate (pgfcirc@Vfrom0) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-120)$)
+ coordinate (pgfcirc@Vto0) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-60)$)
+ coordinate (\pgfcirc@a@prefix-Vfrom) at ($ (pgfcirc@Vfrom0) ! \addvshift! -90: (pgfcirc@Vto0) $)
+ coordinate (\pgfcirc@a@prefix-Vto) at ($ (pgfcirc@Vto0) ! \addvshift! 90: (pgfcirc@Vfrom0) $)
+ \else
+ coordinate (pgfcirc@Vfrom0) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.120)$)
+ coordinate (pgfcirc@Vto0) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.60)$)
+ coordinate (\pgfcirc@a@prefix-Vfrom) at ($ (pgfcirc@Vfrom0) ! \addvshift! 90: (pgfcirc@Vto0) $)
+ coordinate (\pgfcirc@a@prefix-Vto) at ($ (pgfcirc@Vto0) ! \addvshift! -90: (pgfcirc@Vfrom0) $)
+ \fi
+ coordinate (\pgfcirc@a@prefix-Vlab) at ($(\pgfcirc@a@prefix-Vto)!0.5!(\pgfcirc@a@prefix-Vfrom) $)
+ coordinate (pgfcirc@Vdir) at (\pgfcirc@a@prefix-Vto)
+ \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ (\pgfcirc@a@prefix-Vto) -- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {} (\pgfcirc@a@prefix-Vfrom)
+ \else
+ (\pgfcirc@a@prefix-Vfrom) -- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {} (\pgfcirc@a@prefix-Vto)
+ \fi
+ \else% american voltage
+ \ifpgf@circuit@bipole@voltageoutsideofsymbol
+ % if it is a battery, must put + and -
+
+ \ifpgf@circ@fixbatteries
+ \ifpgf@circuit@bipole@voltage@backward
+ (\pgfcirc@a@prefix-Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ (\pgfcirc@a@prefix-Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ \else
+ (\pgfcirc@a@prefix-Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ (\pgfcirc@a@prefix-Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ \fi
+ \else
+ \ifpgf@circuit@bipole@voltage@backward
+ (\pgfcirc@a@prefix-Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ (\pgfcirc@a@prefix-Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ \else
+ (\pgfcirc@a@prefix-Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
+ (\pgfcirc@a@prefix-Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi % closes ...ifempty
+}
+
+%% Output routine
+%% this is the entry point
+%%
+%% locally used dimensions
+\newdimen{\pgfcirc@labelshift}
+\newif\ifpgfcirc@v@curved % helper if --- true only if voltages are curved
+\def\pgf@circ@drawvoltage{% node name
+ \pgfextra{%
+ % set the helper if...curved
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@straight
+ \pgfcirc@v@curvedfalse
+ \else
+ \pgfcirc@v@curvedtrue
+ \fi
+ \else
+ \pgfcirc@v@curvedfalse
+ \fi
+ % \typeout{V routine called with prefix: \pgfcirc@a@prefix}
+ % Label anchors WARNING: indentation is probably wrong
+ \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \else
+ \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \else
+ \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{south east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{east}
+ \else \def\pgf@circ@bipole@voltage@label@anchor{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north east}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@anchor{north}
+ \else\def\pgf@circ@bipole@voltage@label@anchor{south}
+ \fi
+ \fi\fi
+
+ % export anchor position (if not needed, is always the same macro)
+ \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix-Vlab-anchor\endcsname{\pgf@circ@bipole@voltage@label@anchor}
+ % this must be set *before* changing for mirroring and inverting; in that case
+ % the xscale/yscale parameters take it into account
+ \ifpgf@circuit@bipole@voltage@below
+ \def\pgf@circ@bipole@voltage@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@voltage@label@where{90}
+ \fi
+
+ % magic to counteract the scale and yscale effects (there should be a better way...)
+ \ifnum \ctikzvalof{mirror value}=-1
+ \ifpgf@circuit@bipole@voltage@below
+ \pgf@circuit@bipole@voltage@belowfalse
+ \else
+ \pgf@circuit@bipole@voltage@belowtrue
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@inverted
+ \ifpgf@circuit@bipole@voltage@below
+ \pgf@circuit@bipole@voltage@belowfalse
+ \else
+ \pgf@circuit@bipole@voltage@belowtrue
+ \fi
+ \fi
+
+ % take into account scaling
+ \setscaledRlenforclass
+
+ \ifpgf@circuit@europeanvoltage
+ \ifpgf@circuit@bipole@voltage@straight
+ % check for straight
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/straight label distance}
+ \pgfkeysifdefined{\pgf@temp}{%
+ \edef\labeldist{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/straight label distance}}%
+ % \typeout{ST:ADJUSTED\space for\space \ctikzvalof{bipole/kind} \space at \space \stdist}
+ }{\edef\labeldist{\ctikzvalof{voltage/straight label distance}}}
+ \ifpgf@circ@debugv\edef\whichtypeshift{STR}\fi
+ \else
+ % check for european
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/european label distance}
+ \pgfkeysifdefined{\pgf@temp}{%
+ \edef\labeldist{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/european label distance}}%
+ % \typeout{EU:ADJUSTED\space for\space \ctikzvalof{bipole/kind} \space at \space \eudist}
+ }{ \edef\labeldist{\ctikzvalof{voltage/european label distance}}}
+ \ifpgf@circ@debugv\edef\whichtypeshift{EUR}\fi
+ \fi
+ \else
+ % check for american
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/american label distance}
+ \pgfkeysifdefined{\pgf@temp}{%
+ \ifpgf@circuit@bipole@voltage@raised
+ % do not apply the shift if we are using raised american style
+ \edef\labeldist{1.4}% default value
+ \else
+ \edef\labeldist{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/american label distance}}%
+ \fi
+ % \typeout{AL:ADJUSTED\space for\space \ctikzvalof{bipole/kind} \space at \space \aldist}
+ }{\edef\labeldist{\ctikzvalof{voltage/american label distance}}}
+ \ifpgf@circ@debugv\edef\whichtypeshift{AME}\fi
+ \fi
+ % find the height of the bipole or use a default value
+ \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/height}
+ \pgfkeysifdefined{\pgf@temp}
+ {\pgfmathsetmacro{\partheightf}{0.5*\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/height}}
+ \edef\partheight{\partheightf\pgf@circ@scaled@Rlen}}
+ {\edef\partheight{(.5\pgf@circ@scaled@Rlen)}} %fallback to fixed value
+
+ \ifpgf@circuit@bipole@isvoltage
+ \pgfmathsetlength{\pgfcirc@labelshift}{(\labeldist-1.2)*\partheight}
+ \else
+ \pgfmathsetlength{\pgfcirc@labelshift}{(\labeldist-1.4)*\partheight}
+ \fi
+ % the value for the european was by default 1.4
+ \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
+ % set the macro for detecting open
+ \edef\@@kind{\ctikzvalof{bipole/kind}}\edef\@@open{open}
+ \ifpgf@adjust@open@voltage\else\edef\@@open{this-will-nEver-match}\fi
+ % \typeout{KIND\space\@@kind}
+ }%end pgfextra
+
+ \ifpgf@circuit@bipole@isvoltage
+ \pgf@circ@drawvoltagegenerator
+ % add fake cont1 and cont2 anchors for export
+ coordinate (\pgfcirc@a@prefix-Vcont1) at ($(\pgfcirc@a@prefix-Vfrom) !0.5! (\pgfcirc@a@prefix-Vto)$)
+ coordinate (\pgfcirc@a@prefix-Vcont2) at ($(\pgfcirc@a@prefix-Vfrom) !0.5! (\pgfcirc@a@prefix-Vto)$)
+ \else
+ \pgf@circ@drawvoltagegeneric
+ \fi
+ % % debugging
+ % \pgfextra{%
+ % \typeout{LABEL\space KIND:\@@kind\space EU:\the\pgfcirc@eushift\space AL:\the\pgfcirc@alshift\space
+ % DIRECTION:\pgf@circ@bipole@voltage@label@where}
+ % \pgf@circ@debugvtrue}
+
+ % move a bit if requested
+ coordinate (\pgfcirc@a@prefix-Vlab) at ($(\pgfcirc@a@prefix-Vlab) ! \pgfcirc@labelshift ! \pgf@circ@bipole@voltage@label@where :(pgfcirc@Vdir)$)
+
+ % check for the case of american AND open
+ \ifpgf@circuit@europeanvoltage
+ \else
+ \ifx\@@kind\@@open
+ % override pgfcirc@Vlab
+ coordinate (\pgfcirc@a@prefix-Vlab) at ($(pgfcirc@Vfrom@flat)!0.5!(pgfcirc@Vto@flat)$)\fi
+ \fi
+
+ \ifpgf@circ@debugv
+ node [odiamondpole, color=blue] at (\pgfcirc@a@prefix-Vlab) {}
+ node [odiamondpole, color=red] at (pgfcirc@Vdir) {}
+ node [overlay, red, font=\tiny, anchor=south east, align=right] at(pgfcirc@Vdir)
+ {\whichtypeshift:\the\pgfcirc@labelshift\\ DIR:\pgf@circ@bipole@voltage@label@where}
+ \fi
+
+ % put the node only if it's not empty
+ \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else
+ node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt,
+ \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
+ at (\pgfcirc@a@prefix-Vlab) {\pgf@circ@finallabels{voltage/label}}
+ \fi
+
+ \ifpgfcirc@v@curved\else
+ % fake Vcont1 and Vcont2 for when they are exported --- in the middle of Vto and Vfrom
+ coordinate (\pgfcirc@a@prefix-Vcont1) at ($(\pgfcirc@a@prefix-Vfrom) !0.5! (\pgfcirc@a@prefix-Vto)$)
+ coordinate (\pgfcirc@a@prefix-Vcont2) at ($(\pgfcirc@a@prefix-Vfrom) !0.5! (\pgfcirc@a@prefix-Vto)$)
+ \fi
+ % revert from and to (and c1 - c2) if needed (simpler than rework the positioning above...)
+ \ifpgf@circuit@bipole@voltage@backward
+ \pgfcirc@swap@coordinates{\pgfcirc@a@prefix-Vfrom}{\pgfcirc@a@prefix-Vto}
+ \pgfcirc@swap@coordinates{\pgfcirc@a@prefix-Vcont1}{\pgfcirc@a@prefix-Vcont2}
+ \fi
+
+}%end drawvoltages
+%%%---------- close: tex/pgfcircvoltage
+%%%%%%%%%%% Springe nach tex/pgfcirccurrent
+%%%---------- open: tex/pgfcirccurrent.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Current handling
+
+%% styles
+\ctikzset{bipole current style/.style={}}
+\tikzset{bipole current style/.code={
+ \ctikzset{bipole current style/.style={#1}}
+}}
+\tikzset{bipole current append style/.code={
+ \ctikzset{bipole current style/.append style={#1}}
+}}
+
+%% Options
+\ctikzset{i^>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_>/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i>^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i>_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i^</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i_</.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i<^/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above
+ }
+}
+
+\ctikzset{i<_/.style = {
+ i = #1,
+ \circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = below
+ }
+}
+
+\ctikzset{i/.code = {
+ \pgfcirc@has@itrue
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
+ \ctikzsetvalof{bipole/current/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+ %reverse current direction for voltage sources
+ \ifpgf@circ@oldvoltagedirection\else
+ \ifpgf@circuit@bipole@isvoltage
+ \ifpgf@circuit@bipole@voltage@backward
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
+ \circuitikzbasekey/bipole/current/x position = after,
+ \circuitikzbasekey/bipole/current/y position = below }
+ \else
+ \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
+ \circuitikzbasekey/bipole/current/x position = before,
+ \circuitikzbasekey/bipole/current/y position = above }
+ \fi\fi\fi
+ }
+}
+
+\ifpgf@circ@oldvoltagedirection
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
+\else
+ \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
+\fi
+\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
+\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
+\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
+
+%% Output routine
+\def\pgf@circ@drawcurrent{
+ \pgfextra{
+ \edef\pgf@circ@rounded@dir{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@rounded@dir\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ % export anchor position (if not needed, is always the same macro)
+ \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix-Ilab-anchor\endcsname{\pgf@circ@dir}
+
+ \ifpgf@circuit@bipole@current@below
+ \def\pgf@circ@bipole@current@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@current@label@where{+90}
+ \fi
+ }
+
+ %
+ \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
+ \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line
+ coordinate (\pgfcirc@a@prefix-Ifrom) at (\tikztostart)
+ coordinate (\pgfcirc@a@prefix-Ito) at (\tikztotarget)
+ \else% normal bipole or source
+ \ifpgf@circuit@bipole@current@before
+ coordinate (\pgfcirc@a@prefix-Ifrom) at (\tikztostart)
+ coordinate (\pgfcirc@a@prefix-Ito) at (pgfcirc@anchorstartnode)
+ \else
+ coordinate (\pgfcirc@a@prefix-Ifrom) at (pgfcirc@anchorendnode)
+ coordinate (\pgfcirc@a@prefix-Ito) at (\tikztotarget)
+ \fi
+ \fi
+ \ifpgf@circuit@bipole@current@backward
+ \pgfextra{
+ \pgfmathsubtract{\pgf@circ@rounded@dir}{180}
+ \edef\pgf@circ@rounded@dir{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ }
+ \fi
+ coordinate (\pgfcirc@a@prefix-Ipos) at ($(\pgfcirc@a@prefix-Ifrom)! \ctikzvalof{current/distance} !(\pgfcirc@a@prefix-Ito)$)
+ % if the current label is not empty (in which case we have already all the anchors)
+ \pgf@circ@ifkeyempty{bipole/current/label/name}\else
+ % put the arrow node
+ node[currarrow, rotate=\pgf@circ@rounded@dir, anchor=center](Iarrow) at (\pgfcirc@a@prefix-Ipos) {}
+ % put the label
+ node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole current style]
+ (\ctikzvalof{bipole/name}current)
+ at (Iarrow.\pgf@circ@bipole@current@label@where){\pgf@circ@finallabels{current/label}}
+ \fi % end ifempty
+ \ifpgf@circuit@bipole@current@backward
+ \pgfcirc@swap@coordinates{\pgfcirc@a@prefix-Ifrom}{\pgfcirc@a@prefix-Ito}
+ \fi
+}
+
+%%%---------- close: tex/pgfcirccurrent
+%%%%%%%%%%% Springe nach tex/pgfcircflow
+%%%---------- open: tex/pgfcircflow.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% flow handling
+
+
+%% styles
+\ctikzset{bipole flow style/.style={}}
+\tikzset{bipole flow style/.code={
+ \ctikzset{bipole flow style/.style={#1}}
+}}
+\tikzset{bipole flow append style/.code={
+ \ctikzset{bipole flow style/.append style={#1}}
+}}
+
+%% Options
+\ctikzset{f^>/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f_>/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f>^/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f>_/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f^</.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f_</.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f<^/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = above
+ }
+}
+
+\ctikzset{f<_/.style = {
+ f = #1,
+ \circuitikzbasekey/bipole/flow/direction = backward,
+ \circuitikzbasekey/bipole/flow/x position = before,
+ \circuitikzbasekey/bipole/flow/y position = below
+ }
+}
+
+\ctikzset{f</.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = backward} }
+\ctikzset{f_/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = below } }
+\ctikzset{f>/.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = forward } }
+\ctikzset{f^/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = above } }
+
+\ctikzset{f/.code = {
+ \pgfcirc@has@ftrue
+ \pgfkeys{\circuitikzbasekey/bipole/flow/direction = forward,
+ \circuitikzbasekey/bipole/flow/x position = after,
+ \circuitikzbasekey/bipole/flow/y position = above }
+ \pgfkeys{/tikz/circuitikz/bipole/flow/label/name=#1}
+ \ctikzsetvalof{bipole/flow/label/unit}{}
+ \ifpgf@circ@siunitx
+ \pgf@circ@handleSI{#1}
+ \ifpgf@circ@siunitx@res
+ \edef\pgf@temp{\pgf@circ@handleSI@val}
+ \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/name}{\pgf@temp}
+ \edef\pgf@temp{\pgf@circ@handleSI@unit}
+ \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/unit}{\pgf@temp}
+ \else
+ \fi
+ \else
+ \fi
+}
+}
+
+%% Output routine
+
+\def\pgf@circ@drawflow{
+ \pgfextra{
+ \edef\pgf@circ@rounded@dir{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@rounded@dir\pgf@nil}
+
+ \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
+ \fi
+ \fi\fi
+ \ifnum\pgfcircmathresult <5
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+ \ifnum\pgfcircmathresult >355
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
+ \fi
+ \fi
+
+ \ifpgf@circuit@bipole@flow@below
+ \def\pgf@circ@bipole@flow@label@where{-90}
+ \else
+ \def\pgf@circ@bipole@flow@label@where{+90}
+ \fi
+ % export anchor position (if not needed, is always the same macro)
+ \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix-Flab-anchor\endcsname{\pgf@circ@dir}
+ }
+
+ \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
+ \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line
+ coordinate (pgfcirc@Ffrom@flat) at (\tikztostart)
+ coordinate (pgfcirc@Fto@flat) at (\tikztotarget)
+ \else% normal bipole or source
+ \ifpgf@circuit@bipole@flow@before
+ coordinate (pgfcirc@Ffrom@flat) at (\tikztostart)
+ coordinate (pgfcirc@Fto@flat) at (pgfcirc@anchorstartnode)
+ \else
+ coordinate (pgfcirc@Ffrom@flat) at (pgfcirc@anchorendnode)
+ coordinate (pgfcirc@Fto@flat) at (\tikztotarget)
+ \fi
+ \fi
+ \pgfextra{
+ \newdimen{\absfshift}
+ \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \absfshift=\flow@offset
+ \ifpgf@circuit@bipole@flow@backward
+ \pgfmathsubtract{\pgf@circ@rounded@dir}{180}
+ \edef\pgf@circ@rounded@dir{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
+ \fi
+ }
+ \ifpgf@circuit@bipole@flow@below
+ coordinate (pgfcirc@Ffrom@up) at ($(pgfcirc@Ffrom@flat) ! \absfshift !-90: (pgfcirc@Fto@flat)$)
+ coordinate (pgfcirc@Fto@up) at ($(pgfcirc@Fto@flat) ! \absfshift !90: (pgfcirc@Ffrom@flat)$)
+ \else
+ coordinate (pgfcirc@Ffrom@up) at ($(pgfcirc@Ffrom@flat) ! \absfshift !90: (pgfcirc@Fto@flat)$)
+ coordinate (pgfcirc@Fto@up) at ($(pgfcirc@Fto@flat) ! \absfshift !-90: (pgfcirc@Ffrom@flat)$)
+ \fi
+ coordinate (\pgfcirc@a@prefix-Fpos) at ($(pgfcirc@Ffrom@up) ! \ctikzvalof{flow/distance} !(pgfcirc@Fto@up)$)
+ \pgfextra{
+ \absfshift=0.25\pgf@circ@Rlen% This is half size of the "flowarrow" shape!
+ }
+ coordinate (\pgfcirc@a@prefix-Ffrom) at ($(\pgfcirc@a@prefix-Fpos)!\absfshift!(pgfcirc@Ffrom@up)$)
+ coordinate (\pgfcirc@a@prefix-Fto) at ($(\pgfcirc@a@prefix-Fpos)!\absfshift!(pgfcirc@Fto@up) $)
+ %
+ % coordinate (\pgfcirc@a@prefix-Fpos) at
+ % ([yshift=\flow@offset]$(\pgfcirc@a@prefix-Ffrom)! \ctikzvalof{flow/distance} !(\pgfcirc@a@prefix-Fto)$)
+ % if the flow label is not empty (in which case we have already all the anchors)
+ \pgf@circ@ifkeyempty{bipole/flow/label/name}\else
+ % the flow arrow is really a node "flowarrow", not a real arrow
+ node[flowarrow, rotate=\pgf@circ@rounded@dir, anchor=center](Farrowpos) at (\pgfcirc@a@prefix-Fpos) {}
+
+ node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole flow style]
+ (\ctikzvalof{bipole/name}flow) at (Farrowpos.\pgf@circ@bipole@flow@label@where) {\pgf@circ@finallabels{flow/label}}
+ \fi
+
+ % adjust from and to before exporting --- it's much more simple like this then rework the algorithm above
+ \ifpgf@circuit@bipole@flow@backward
+ \pgfcirc@swap@coordinates{\pgfcirc@a@prefix-Ffrom}{\pgfcirc@a@prefix-Fto}
+ \fi
+
+}
+
+%%%---------- close: tex/pgfcircflow
+
+% notice that the default is nooldvoltagedirection; it's not explicitly set to allow for the warning
+\ExecuteOptions{nofetbodydiode, nofetsolderdot, europeancurrents, europeanvoltages, americanports, americanresistors, cuteinductors ,europeangfsurgearrester, nosiunitx, noarrowmos, smartlabels}
+
+\ProcessOptions\relax
+
+%%%%%%%%%%% Springe nach tex/pgfcircpath
+%%%---------- open: tex/pgfcircpath.tex
+% Copyright 2018-2020 by Romano Giannetti
+% Copyright 2015-2020 by Stefan Lindner
+% Copyright 2013-2020 by Stefan Erhardt
+% Copyright 2007-2020 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+
+\def\pgf@circ@direction{0.0}
+
+% swap two coordinates
+\def\pgfcirc@swap@coordinates#1#2{%
+ coordinate (pgfcirc@tmp@swap) at (#1)
+ coordinate (#1) at (#2)
+ coordinate (#2) at (pgfcirc@tmp@swap)
+}
+
+% Names
+\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
+\ctikzset{n/.code = {
+ \pgfkeys{/tikz/circuitikz/bipole/name=#1}
+}}
+
+% Reflect the node along
+\ctikzset{mirrored/.is choice}
+\ctikzset{mirror value/.initial=1}
+\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
+\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
+\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
+
+% Invert node along path
+\ctikzset{inverted/.is choice}
+\ctikzset{invert value/.initial=1}
+\ctikzset{inverted/true/.code = {\ctikzsetvalof{invert value}{-1}\pgf@circuit@bipole@invertedtrue}}
+\ctikzset{inverted/false/.code = {\ctikzsetvalof{invert value}{1}\pgf@circuit@bipole@invertedfalse}}
+\ctikzset{invert/.style = {/tikz/circuitikz/inverted=true}}
+\newif\ifpgf@circuit@bipole@inverted
+\ctikzset{bipole/inverted/.is if=pgf@circuit@bipole@inverted}
+
+\newif\ifpgf@circuit@bipole@voltage@backward
+\ctikzset{bipole/voltage/direction/.is choice}
+\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
+\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
+
+% Initialize paths
+\def\pgfcircresetpath{
+ \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90, ,bipole/annotation/name=, bipole/annotation/position=-90,
+ bipole/inverted=false, bipole/kind=,
+ bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
+ bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
+ bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
+ bipole/current/y position=above, bipole/current/direction=forward,
+ mirrored=false
+ }
+}
+
+%
+% expandable IF for the extra nodes (thanks to Henri Menke)
+% see https://chat.stackexchange.com/transcript/message/56560808#56560808
+%
+\def\pgfcirc@if@has@i{%
+ \ifpgfcirc@has@i
+ \expandafter\pgfutil@firstoftwo
+ \else
+ \expandafter\pgfutil@secondoftwo
+ \fi}
+\def\pgfcirc@if@has@v{%
+ \ifpgfcirc@has@v
+ \expandafter\pgfutil@firstoftwo
+ \else
+ \expandafter\pgfutil@secondoftwo
+ \fi}
+\def\pgfcirc@if@has@f{%
+ \ifpgfcirc@has@f
+ \expandafter\pgfutil@firstoftwo
+ \else
+ \expandafter\pgfutil@secondoftwo
+ \fi}
+
+
+
+%% Generic bipole path
+\def\pgf@circ@bipole@path#1#2{
+ % Create a bipole path from the shapes defined with \pgfcircdeclarebipole
+ % or \pgfcircdeclarebipolescaled; the node shapes are named with a "shape"
+ % appended to the main (path-style) name
+ % #1 path-style node name
+ % #2 the argument passed from the to-path structure; don't touch
+ %
+ % Example:
+ % \def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
+ %
+ \pgf@circ@bipole@path@base{shape}{}{#1}{#2}
+}
+%
+% this is used for components that are mainly node-style but have a path-style form
+%
+\def\pgfcirc@node@to@path#1#2#3{%
+ % add a path-style component based on a node-style one without mangling the name
+ % of the shape.
+ % #1: node-type shape name (existing)
+ % #2: path-type name (to be created)
+ % #3: additional options to add to the path style
+ %
+ \expandafter\def\csname pgf@circ@#1@path\endcsname##1{\pgf@circ@bipole@path@base{}{##1}{#1}{}}%
+ \compattikzset{#2/.style = {\circuitikzbasekey,
+ /tikz/to path=\csname pgf@circ@#1@path\endcsname{##1},
+ #3}}%
+ \ctikzset{bipoles/#1/height/.initial=1}%
+}
+%%
+%% ultra-generic bipole path
+%% I am not sure what the last argument is needed for, but don't touch it or everything explodes
+%%
+\def\pgf@circ@bipole@path@base#1#2#3#4{%
+ %
+ % Create a path-style component based on a node-style shape
+ % #1: postfix to be added to the name path to obtain the main shape name
+ % #2: text to be passed as text to the node
+ % #3: name of the bipole component
+ % #4: this will be filled by the argument of the to-path
+ %
+ \pgfextra{
+ \ctikzset{bipole/kind = #3}
+ \edef\pgf@temp{\ctikzvalof{bipole/name}}
+ \def\pgf@circ@temp{}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = pgfcirc@#3\pgf@circ@rand} % create it (re-usage should not create problem, but...)
+ \edef\pgfcirc@a@prefix{pgfcirc}% do not pollute the namespace for nothing
+ \else
+ \edef\pgfcirc@a@prefix{\ctikzvalof{bipole/name}}% for exporting v-i-f anchors
+ \fi
+ }
+ % save start and stop values
+ % notice that we DO NOT MOVE the path position at all!
+ coordinate (\ctikzvalof{bipole/name}start) at (\tikztostart)
+ coordinate (\ctikzvalof{bipole/name}end) at (\tikztotarget)
+ \pgfextra{
+ % find the direction (angle) of the path
+ \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \edef\pgf@circ@direction{\pgfmathresult}
+ \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix-direction\endcsname{\pgf@circ@direction}
+ }
+ % position the component in the middle of the path. We DO NOT MOVE the current position!
+ node[#3#1, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value},
+ xscale=\ctikzvalof{invert value}] (\ctikzvalof{bipole/name})
+ at ($(\tikztostart) ! .5 ! (\tikztotarget)$) {#2}
+ % set start and end labels
+ \ifpgf@circuit@bipole@inverted
+ \ifcsname pgf@anchor@#3#1@pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (pgfcirc@anchorstartnode) at (\ctikzvalof{bipole/name}.pathend)
+ coordinate (pgfcirc@anchorendnode) at (\ctikzvalof{bipole/name}.pathstart)
+ \else
+ coordinate (pgfcirc@anchorstartnode) at (\ctikzvalof{bipole/name}.right)
+ coordinate (pgfcirc@anchorendnode) at (\ctikzvalof{bipole/name}.left)
+ \fi
+ \else
+ \ifcsname pgf@anchor@#3#1@pathstart\endcsname%if special path-anchors are defined, use them!
+ coordinate (pgfcirc@anchorstartnode) at (\ctikzvalof{bipole/name}.pathstart)
+ coordinate (pgfcirc@anchorendnode) at (\ctikzvalof{bipole/name}.pathend)
+ \else
+ coordinate (pgfcirc@anchorstartnode) at (\ctikzvalof{bipole/name}.left)
+ coordinate (pgfcirc@anchorendnode) at (\ctikzvalof{bipole/name}.right)
+ \fi
+ \fi
+ % draw the leads unless it's an open circuit
+ % stop at the component
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#3}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open do nothing
+ \else
+ % it is important to start the path with -- to have correct line joins!
+ -- (\tikztostart) -- (pgfcirc@anchorstartnode)
+ \fi
+ % Add all the "ornaments": labels, annotations, voltages, currents and flows
+ \drawpoles
+ \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabels{label}\fi
+ \pgf@circ@ifkeyempty{bipole/annotation/name}\else\pgf@circ@drawlabels{annotation}\fi
+ % the following must be made in their own path scope to avoid crash in TikZ 3.1.8/3.1.8a
+ % it should be logically safe for older version too --- even if TikZ reverted the change
+ % use explandable ifs too, thanks to Henri Menke
+ {\pgfcirc@if@has@v{\pgf@circ@drawvoltage}{}}%
+ {\pgfcirc@if@has@i{\pgf@circ@drawcurrent}{}}%
+ {\pgfcirc@if@has@f{\pgf@circ@drawflow}{}}%
+ % finish the path from the component to the final target
+ % you never know --- re-set \pgf@temp to detect open
+ \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#3}}
+ \ifx\pgf@temp\pgf@circ@temp % if it is an open do nothing
+ (\tikztotarget)
+ \else
+ (pgfcirc@anchorendnode) -- (\tikztotarget)
+ \fi
+ % reset internal circuit keys
+ \pgfextra{\pgfcircresetpath}
+ %draw pending nodes an path
+ \tikztonodes
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Handling of terminals
+
+\ctikzset{bipole/nodes/.is family}
+\ctikzset{bipole/nodes/left/.initial=none}
+\ctikzset{bipole/nodes/right/.initial=none}
+\tikzset{bipole nodes/.style n args={2}{%
+ \circuitikzbasekey/bipole/nodes/left=#1,
+ \circuitikzbasekey/bipole/nodes/right=#2
+ }
+}
+
+%% Easily usable styles
+
+\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+
+% rectjoinfill workarounds
+
+\ctikzset{.-/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=none}}
+\ctikzset{.-*/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=circ}}
+\ctikzset{.-o/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=ocirc}}
+\ctikzset{.-d/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
+\ctikzset{-./.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{o-./.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{*-./.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{d-./.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+\ctikzset{.-./.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
+
+\tikzset{reversed/.style = {\circuitikzbasekey/bipole/inverted=true}}
+
+\def\drawpoles{
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{none}}
+ \ifx\pgf@temp\pgf@circ@temp\else(\tikztostart) node[\pgf@circ@temp] {}\fi
+ \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} }
+ \ifx\pgf@temp\pgf@circ@temp\else(\tikztotarget) node[\pgf@circ@temp] {}\fi
+}
+
+%% Path definitions
+\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
+\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
+\def\pgf@circ@sresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{thermistor}{#1}\else\pgf@circ@bipole@path{resistivesens}{#1}\fi}
+\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
+\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
+\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
+\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
+\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
+\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
+\def\pgf@circ@capacitivesens@path#1{\pgf@circ@bipole@path{capacitivesens}{#1}}
+\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
+%% polar capacitor is deprectaed, use curved capacitor instead
+\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
+\def\pgf@circ@ccapacitor@path#1{\pgf@circ@bipole@path{ccapacitor}{#1}}
+\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
+\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
+\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
+\def\pgf@circ@batteryone@path#1{\pgf@circ@bipole@path{battery1}{#1}}
+\def\pgf@circ@batterytwo@path#1{\pgf@circ@bipole@path{battery2}{#1}}
+\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
+\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
+\def\pgf@circ@cutechoke@path#1{\pgf@circ@bipole@path{cutechoke}{#1}}
+\def\pgf@circ@inductor@path#1{%
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@europeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@cuteinductor@path{#1}%
+ \else%
+ \pgf@circ@americaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@vinductor@path#1{
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@veuropeaninductor@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@vcuteinductor@path{#1}%
+ \else%
+ \pgf@circ@vamericaninductor@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@inductivesens@path#1{%
+ \pgfextra{
+ \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
+ \def\pgf@temp{european}%
+ }
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@europeaninductivesens@path{#1}%
+ \else%
+ \pgfextra{ \def\pgf@temp{cute} }%
+ \ifx\pgf@temp\pgf@circ@temp%
+ \pgf@circ@cuteinductivesens@path{#1}%
+ \else%
+ \pgf@circ@americaninductivesens@path{#1}%
+ \fi%
+ \fi%
+}
+\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
+\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
+\def\pgf@circ@europeaninductivesens@path#1{\pgf@circ@bipole@path{sfullgeneric}{#1}}
+\def\pgf@circ@americaninductivesens@path#1{\pgf@circ@bipole@path{samericaninductor}{#1}}
+\def\pgf@circ@cuteinductivesens@path#1{\pgf@circ@bipole@path{scuteinductor}{#1}}
+\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
+\def\pgf@circ@bulb@path#1{\pgf@circ@bipole@path{bulb}{#1}}
+\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
+\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
+\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
+\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
+\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
+\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
+\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
+\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
+\def\pgf@circ@oosourcetrans@path#1{\pgf@circ@bipole@path{oosourcetrans}{#1}}
+\def\pgf@circ@ooosource@path#1{\pgf@circ@bipole@path{ooosource}{#1}}
+\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
+\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
+\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
+\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
+\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
+\def\pgf@circ@ecsource@path#1{\pgf@circ@bipole@path{ecsource}{#1}}
+\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
+\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
+\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
+\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
+\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
+\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
+\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
+\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
+\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
+\def\pgf@circ@nos@path#1{\pgf@circ@bipole@path{nos}{#1}}
+\def\pgf@circ@ncs@path#1{\pgf@circ@bipole@path{ncs}{#1}}
+\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
+\def\pgf@circ@ncpushbutton@path#1{\pgf@circ@bipole@path{ncpushbutton}{#1}}
+\def\pgf@circ@pushbuttonc@path#1{\pgf@circ@bipole@path{pushbuttonc}{#1}}
+\def\pgf@circ@ncpushbuttono@path#1{\pgf@circ@bipole@path{ncpushbuttono}{#1}}
+\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
+\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
+\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
+\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
+\def\pgf@circ@xgeneric@path#1{\pgf@circ@bipole@path{xgeneric}{#1}}
+\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
+\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
+\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
+\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
+\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
+\def\pgf@circ@oscope@path#1{\pgf@circ@bipole@path{oscope}{#1}}
+\def\pgf@circ@empty@path#1{}
+\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
+\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
+\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
+\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
+\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
+\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
+\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
+\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
+\def\pgf@circ@mstline@path#1{\pgf@circ@bipole@path{mstline}{#1}}
+\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
+\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
+\def\pgf@circ@openbarrier@path#1{\pgf@circ@bipole@path{openbarrier}{#1}}
+\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
+\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
+\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
+
+\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
+\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
+\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
+
+\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
+\def\pgf@circ@twoportsplit@path#1{\pgf@circ@bipole@path{twoportsplit}{#1}}
+\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
+\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
+\def\pgf@circ@bandstop@path#1{\pgf@circ@bipole@path{bandstop}{#1}}
+\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
+\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
+\def\pgf@circ@allpass@path#1{\pgf@circ@bipole@path{allpass}{#1}}
+\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
+\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
+\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
+\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
+\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
+\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
+\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
+\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
+\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
+\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
+\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
+\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
+\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
+%
+\def\pgf@circ@sacdc@path#1{\pgf@circ@bipole@path{sacdc}{#1}}
+\def\pgf@circ@sdcac@path#1{\pgf@circ@bipole@path{sdcac}{#1}}
+\def\pgf@circ@tacdc@path#1{\pgf@circ@bipole@path{tacdc}{#1}}
+\def\pgf@circ@tdcac@path#1{\pgf@circ@bipole@path{tdcac}{#1}}
+
+%%Mechanical
+\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
+\def\pgf@circ@inerter@path#1{\pgf@circ@bipole@path{inerter}{#1}}
+\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
+\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
+\def\pgf@circ@viscoe@path#1{\pgf@circ@bipole@path{viscoe}{#1}}
+
+%% Styles
+
+\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
+\def\compattikzset#1{%
+ % \typeout{BIPOLEDEF:\space \detokenize{#1}}%
+ \tikzset{\comnpatname#1}}
+
+%\def\ctikzsetbipole#1#2{%
+% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
+%}
+
+\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
+\compattikzset{inerter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inerter@path, l=#1}}
+\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
+\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
+\compattikzset{viscoe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@viscoe@path, l=#1}}
+\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
+\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
+\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
+\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
+\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
+\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
+\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
+\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
+\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
+\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
+\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
+\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
+\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
+\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
+\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
+\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
+% polar capacitor is deprecated, use curved capacitor instead
+\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
+\compattikzset{curved capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ccapacitor@path, l=#1}}
+\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
+\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
+\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batteryone@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{battery2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batterytwo@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
+\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
+\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
+\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
+\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
+\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
+\compattikzset{cute choke/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cutechoke@path, l=#1}}
+\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
+\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
+\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
+\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
+\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
+\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
+\compattikzset{transmission line/.style = {tline = #1}}
+\compattikzset{TL/.style = {tline = #1}}
+\compattikzset{mstline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mstline@path, l=#1}}
+\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{empty controlled source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
+\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+
+\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source = #1, \circuitikzbasekey/bipole/is current=true}}
+\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
+\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source = #1, \circuitikzbasekey/bipole/is current=true}}
+
+
+\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
+\compattikzset{xgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@xgeneric@path, l=#1}}
+\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
+\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
+\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
+\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
+\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
+\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
+
+\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
+\compattikzset{bulb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bulb@path, l=#1}}
+
+\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
+\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
+\compattikzset{openbarrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@openbarrier@path}}
+\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
+\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
+\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
+
+\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
+\compattikzset{twoportsplit/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoportsplit@path}}
+\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
+\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
+\compattikzset{bandstop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandstop@path}}
+\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
+\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
+\compattikzset{allpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@allpass@path}}
+\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
+\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
+\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
+\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
+\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
+\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
+\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
+\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
+\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
+\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
+\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
+\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
+\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
+%
+\compattikzset{sacdc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@sacdc@path, l=#1}}
+\compattikzset{sdcac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@sdcac@path, l=#1}}
+\compattikzset{tacdc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tacdc@path, l=#1}}
+\compattikzset{tdcac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tdcac@path, l=#1}}
+
+% % % % % %
+% % Begin of Diodes
+% % % % % %
+
+\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
+\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
+\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
+\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
+\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
+\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
+\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
+\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
+\def\pgf@circ@fullbidirectionaldiode@path#1{\pgf@circ@bipole@path{fullbidirectionaldiode}{#1}}
+\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
+\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
+\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
+\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
+\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
+\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
+\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
+\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
+\def\pgf@circ@emptybidirectionaldiode@path#1{\pgf@circ@bipole@path{emptybidirectionaldiode}{#1}}
+
+\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
+\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
+\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
+\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
+\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
+\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
+\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
+\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
+\compattikzset{full bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullbidirectionaldiode@path}}
+\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
+\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
+
+\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{empty bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptybidirectionaldiode@path}}
+\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
+\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
+\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
+\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
+\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
+\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
+\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
+\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
+\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
+\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
+%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
+
+\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
+
+\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
+\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
+\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
+\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
+\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
+\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
+\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
+\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
+\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
+\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
+\compattikzset{bidirectionaldiode/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
+
+%% Define Shortcuts
+\compattikzset{Do/.style = {\comnpatname empty diode}}
+\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
+\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
+\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
+\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
+\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
+\compattikzset{leDo/.style = {\comnpatname empty led}}
+\compattikzset{VCo/.style = {\comnpatname empty varcap}}
+\compattikzset{biDo/.style = {\comnpatname empty bidirectionaldiode}}
+\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
+\compattikzset{Tro/.style = {\comnpatname empty triac}}
+
+\compattikzset{D*/.style = {\comnpatname full diode}}
+\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
+\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
+\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
+\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
+\compattikzset{pD*/.style = {\comnpatname full photodiode}}
+\compattikzset{leD*/.style = {\comnpatname full led}}
+\compattikzset{VC*/.style = {\comnpatname full varcap}}
+\compattikzset{biD*/.style = {\comnpatname full bidirectionaldiode}}
+\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
+\compattikzset{Tr*/.style = {\comnpatname full triac}}
+
+\compattikzset{D/.style = {\comnpatname diode}}
+\compattikzset{tD/.style = {\comnpatname tunnel diode}}
+\compattikzset{zD/.style = {\comnpatname Zener diode}}
+\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
+\compattikzset{sD/.style = {\comnpatname Schottky diode}}
+\compattikzset{pD/.style = {\comnpatname photodiode}}
+\compattikzset{leD/.style = {\comnpatname led}}
+\compattikzset{VC/.style = {\comnpatname varcap}}
+\compattikzset{biD/.style = {\comnpatname bidirectionaldiode}}
+\compattikzset{Ty/.style = {\comnpatname thyristor}}
+\compattikzset{Tr/.style = {\comnpatname triac}}
+
+\compattikzset{D-/.style = {\comnpatname stroke diode}}
+\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
+\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
+\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
+\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
+\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
+\compattikzset{leD-/.style = {\comnpatname stroke led}}
+\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
+\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
+\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
+\compattikzset{biD-/.style = {\comnpatname empty bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
+
+% % % % % %
+% % End of Diodes
+% % % % % %
+
+
+\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
+\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
+\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
+\compattikzset{ncs/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
+\compattikzset{nos/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
+\compattikzset{normal closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
+\compattikzset{normal open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
+\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
+\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{nopb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{normally open push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
+\compattikzset{ncpb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
+\compattikzset{normally closed push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
+\compattikzset{nopbc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbuttonc@path, l=#1}}
+\compattikzset{normally open push button closed/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbuttonc@path, l=#1}}
+\compattikzset{ncpbo/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbuttono@path, l=#1}}
+\compattikzset{normally closed push button open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbuttono@path, l=#1}}
+\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
+
+\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
+\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
+\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
+\tikzset{oscope/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@oscope@path, l=#1}}
+
+% cute switches
+%% closed cute switch
+\def\pgf@circ@cuteclosedswitch@path#1{\pgf@circ@bipole@path{cuteclosedswitch}{#1}}
+\compattikzset{cute closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosedswitch@path, l=#1}}
+\compattikzset{ccsw/.style= {\comnpatname cute closed switch= #1}}
+
+%% open cute switch
+\def\pgf@circ@cuteopenswitch@path#1{\pgf@circ@bipole@path{cuteopenswitch}{#1}}
+\compattikzset{cute open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopenswitch@path, l=#1}}
+\compattikzset{cosw/.style= {\comnpatname cute open switch= #1}}
+
+%% closing cute switch
+\def\pgf@circ@cuteclosingswitch@path#1{\pgf@circ@bipole@path{cuteclosingswitch}{#1}}
+\compattikzset{cute closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosingswitch@path, l=#1}}
+\compattikzset{ccgsw/.style= {\comnpatname cute closing switch= #1}}
+
+%% opening cute switch
+\def\pgf@circ@cuteopeningswitch@path#1{\pgf@circ@bipole@path{cuteopeningswitch}{#1}}
+\compattikzset{cute opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopeningswitch@path, l=#1}}
+\compattikzset{cogsw/.style= {\comnpatname cute opening switch= #1}}
+
+
+% short forms
+\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, l=#1}}
+
+\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path, i=#1}}
+\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, /tikz/to path=\pgf@circ@oosource@path, v=#1}}
+\compattikzset{oosourcetrans/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, /tikz/to path=\pgf@circ@oosourcetrans@path, v=#1}}
+\compattikzset{ooosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, /tikz/to path=\pgf@circ@ooosource@path, v=#1}}
+
+\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
+\compattikzset{isource/.style = {\comnpatname current source = #1}}
+\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{ecsource/.style = {\comnpatname empty controlled source = #1}}
+\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
+\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+
+\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
+
+\compattikzset{R/.style= {\comnpatname resistor = #1}}
+\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
+\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
+\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
+\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
+\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
+\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
+\compattikzset{C/.style = {\comnpatname capacitor = #1}}
+\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
+%% pC is deprecated, use cC instead
+\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
+\compattikzset{cC/.style = {\comnpatname curved capacitor = #1}}
+\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
+\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
+\compattikzset{L/.style = {\comnpatname inductor = #1}}
+\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
+\compattikzset{V/.style = {\comnpatname voltage source = #1}}
+\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
+\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
+\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
+\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
+\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
+ \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
+ \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
+ \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+
+%current sources
+\compattikzset{I/.style = {\comnpatname current source = #1}}
+\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
+\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
+\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
+\def\pgf@temp#1{
+ \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
+ \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
+ \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
+ \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
+}
+\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
+\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
+\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
+
+% cute sources
+\def\pgf@circ@vsourceC@path#1{\pgf@circ@bipole@path{vsourceC}{#1}}
+\compattikzset{cute european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{vsourceC/.style= {\comnpatname cute european voltage source= #1}}
+\compattikzset{ceV/.style= {\comnpatname cute european voltage source= #1}}
+
+\def\pgf@circ@isourceC@path#1{\pgf@circ@bipole@path{isourceC}{#1}}
+\compattikzset{cute european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{isourceC/.style= {\comnpatname cute european current source= #1}}
+\compattikzset{ceI/.style= {\comnpatname cute european current source= #1}}
+
+\def\pgf@circ@cvsourceC@path#1{\pgf@circ@bipole@path{cvsourceC}{#1}}
+\compattikzset{cute european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{cvsourceC/.style= {\comnpatname cute european controlled voltage source= #1}}
+\compattikzset{cceV/.style= {\comnpatname cute european controlled voltage source= #1}}
+
+\def\pgf@circ@cisourceC@path#1{\pgf@circ@bipole@path{cisourceC}{#1}}
+\compattikzset{cute european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{cisourceC/.style= {\comnpatname cute european controlled current source= #1}}
+\compattikzset{cceI/.style= {\comnpatname cute european controlled current source= #1}}
+
+% noise sources
+\def\pgf@circ@vsourceN@path#1{\pgf@circ@bipole@path{vsourceN}{#1}}
+\compattikzset{noise voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceN@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
+\compattikzset{vsourceN/.style= {\comnpatname noise voltage source= #1}}
+\compattikzset{nV/.style= {\comnpatname noise voltage source= #1}}
+
+\def\pgf@circ@isourceN@path#1{\pgf@circ@bipole@path{isourceN}{#1}}
+\compattikzset{noise current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceN@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
+\compattikzset{isourceN/.style= {\comnpatname noise current source= #1}}
+\compattikzset{nI/.style= {\comnpatname noise current source= #1}}
+
+% resistive sensor american style
+\def\pgf@circ@resistivesens@path#1{\pgf@circ@bipole@path{resistivesens}{#1}}
+\compattikzset{american resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistivesens@path, l=#1}}
+\compattikzset{european resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
+\compattikzset{resistive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@sresistor@path, l=#1}}
+\compattikzset{sR/.style= {\comnpatname resistive sensor= #1}}
+
+\compattikzset{capacitive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitivesens@path, l=#1}}
+\compattikzset{sC/.style= {\comnpatname capacitive sensor= #1}}
+
+\compattikzset{cute inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductivesens@path, l=#1}}
+\compattikzset{european inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductivesens@path, l=#1}}
+\compattikzset{american inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductivesens@path, l=#1}}
+\compattikzset{inductive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductivesens@path, l=#1}}
+\compattikzset{sL/.style= {\comnpatname inductive sensor= #1}}
+
+\compattikzset{Mr/.style = {\comnpatname memristor}}
+
+\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
+\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
+\compattikzset{spst/.style = {\comnpatname switch = #1}}
+
+\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
+
+\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
+\compattikzset{vss/.style = {\comnpatname vee = #1}}
+
+% activate the to-style crossing
+\def\pgf@circ@crossing@path#1{\pgf@circ@bipole@path{crossing}{#1}}
+\compattikzset{crossing/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@crossing@path, l=#1}}
+\compattikzset{xing/.style= {\comnpatname crossing= #1}}
+
+%% loudspeaker and microphone
+
+\def\pgf@circ@loudspeaker@path#1{\pgf@circ@bipole@path{loudspeaker}{#1}}
+\compattikzset{loudspeaker/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@loudspeaker@path, l=#1}}
+
+\def\pgf@circ@mic@path#1{\pgf@circ@bipole@path{mic}{#1}}
+\compattikzset{mic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mic@path, l=#1}}
+
+% more instrument
+\def\pgf@circ@rmeter@path#1{\pgf@circ@bipole@path{rmeter}{#1}}
+\compattikzset{rmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeter@path, l=#1}}
+\def\pgf@circ@rmeterwa@path#1{\pgf@circ@bipole@path{rmeterwa}{#1}}
+\compattikzset{rmeterwa/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeterwa@path, l=#1}}
+\def\pgf@circ@smeter@path#1{\pgf@circ@bipole@path{smeter}{#1}}
+\compattikzset{smeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@smeter@path, l=#1}}
+% current loop probes
+\def\pgf@circ@iloop@path#1{\pgf@circ@bipole@path{iloop}{#1}}
+\compattikzset{iloop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop@path, l=#1}}
+\def\pgf@circ@iloop2@path#1{\pgf@circ@bipole@path{iloop2}{#1}}
+\compattikzset{iloop2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop2@path, l=#1}}
+% qucs-style probes
+\def\pgf@circ@qiprobe@path#1{\pgf@circ@bipole@path{qiprobe}{#1}}
+\compattikzset{qiprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qiprobe@path, l=#1}}
+\def\pgf@circ@qvprobe@path#1{\pgf@circ@bipole@path{qvprobe}{#1}}
+\compattikzset{qvprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qvprobe@path, l=#1}}
+\def\pgf@circ@qpprobe@path#1{\pgf@circ@bipole@path{qpprobe}{#1}}
+\compattikzset{qpprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qpprobe@path, l=#1}}
+% multiwire(s)
+\def\pgf@circ@bmultiwire@path#1{\pgf@circ@bipole@path{bmultiwire}{#1}}
+\compattikzset{bmultiwire/.style = {\circuitikzbasekey,
+/tikz/to path=\pgf@circ@bmultiwire@path, l=#1}}
+\def\pgf@circ@multiwire@path#1{\pgf@circ@bipole@path{multiwire}{#1}}
+\compattikzset{multiwire/.style = {\circuitikzbasekey,
+/tikz/to path=\pgf@circ@multiwire@path, l=#1}}
+\def\pgf@circ@tmultiwire@path#1{\pgf@circ@bipole@path{tmultiwire}{#1}}
+\compattikzset{tmultiwire/.style = {\circuitikzbasekey,
+/tikz/to path=\pgf@circ@tmultiwire@path, l=#1}}
+
+% reed switches
+\def\pgf@circ@reed@path#1{\pgf@circ@bipole@path{reed}{#1}}
+\compattikzset{reed/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@reed@path, l=#1}}
+
+% Transistor like bipoles
+
+\def\pgf@circ@trans@path#1#2{
+ \pgfextra{
+ \edef\pgf@temp{\ctikzvalof{bipole/name}}
+ \def\pgf@circ@temp{#2}
+ \ifx\pgf@temp\pgf@circ@temp % if it has not a name
+ \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
+ \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
+ \fi
+ }
+ \ifpgf@circuit@bipole@inverted
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ \else
+ (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
+ (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
+ \fi
+ \pgfextra{
+ \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
+ {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
+ \pgfmathadd{\pgfmathresult}{-90}
+ \pgfmathround{\pgfmathresult}
+ \edef\pgf@circ@direction{\pgfmathresult}
+ }
+ ($(\tikztostart) ! .5 ! (\tikztotarget)$)
+ node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
+ (\ctikzvalof{bipole/name}) {}
+ node {\ctikzvalof{bipole/label/name}}
+ \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
+ (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
+ \else
+ (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
+ (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
+ \fi
+ \drawpoles
+ \pgfextra{
+ \pgfcircresetpath
+ }
+ (\tikztotarget) \tikztonodes % e si continua
+}
+
+
+\def\pgf@circ@definetranspath#1{
+ \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
+}
+
+\pgf@circ@definetranspath{elmech}
+\pgf@circ@definetranspath{nmos}
+\pgf@circ@definetranspath{pmos}
+\pgf@circ@definetranspath{nmosd}
+\pgf@circ@definetranspath{pmosd}
+\pgf@circ@definetranspath{hemt}
+\pgf@circ@definetranspath{npn}
+\pgf@circ@definetranspath{pnp}
+\pgf@circ@definetranspath{nfet}
+\pgf@circ@definetranspath{nigfete}
+\pgf@circ@definetranspath{nigfetd}
+\pgf@circ@definetranspath{nigfetebulk}
+\pgf@circ@definetranspath{pfet}
+\pgf@circ@definetranspath{pigfete}
+\pgf@circ@definetranspath{pigfetd}
+\pgf@circ@definetranspath{pigfetebulk}
+\pgf@circ@definetranspath{njfet}
+\pgf@circ@definetranspath{pjfet}
+\pgf@circ@definetranspath{pigbt}
+\pgf@circ@definetranspath{nigbt}
+\pgf@circ@definetranspath{Lpigbt}
+\pgf@circ@definetranspath{Lnigbt}
+%
+% Path-style logical ports
+%
+% create path-style element for one input --- one output logical ports
+%
+\def\pgfcirc@port@node@to@path#1#2{%
+ %
+ % add a logic port path style component --- we need to suppress leads
+ % and use the correct center
+ %
+ \pgfcirc@node@to@path{#1}{#2}{/tikz/no leads, \circuitikzbasekey/logic ports origin=center}%
+}
+\pgfcirc@port@node@to@path{not port}{inline not}
+\pgfcirc@port@node@to@path{buffer port}{inline buffer}
+\pgfcirc@port@node@to@path{schmitt port}{inline schmitt}
+\pgfcirc@port@node@to@path{invschmitt port}{inline invschmitt}
+
+\pgfcirc@port@node@to@path{tgate}{inline tgate}
+\pgfcirc@port@node@to@path{double tgate}{inline double tgate}
+
+%%%---------- close: tex/pgfcircpath
+
+\ifpgf@circ@siunitx
+ \RequirePackage{xstring}[2009/03/13]
+ %\expandafter\let\csname angstrom\endcsname\relax
+ \RequirePackage{siunitx}
+\fi
+
+\ifpgf@circ@explicitvdir\else
+ \PackageWarningNoLine{circuitikz}{%
+ You did not specify one of the voltage directions:\MessageBreak
+ \space\space oldvoltagedirection, nooldvoltagedirection, \MessageBreak
+ \space\space RPvoltages or EFvoltages \MessageBreak
+ Default directions may have changed, \MessageBreak
+ please check the manual%
+ }
+\fi
+
+\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
+%override (unused) circuitikz environment for compability to externalization)
+\let\circuitikz\tikzpicture
+\let\endcircuitikz\endtikzpicture
+
+\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.2.7.sty b/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.2.7.sty
index 0a813920a9..4897c4fe90 100644
--- a/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.2.7.sty
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz-1.2.7.sty
@@ -18,24509 +18,5 @@
\ProvidesPackage{circuitikz-1.2.7}
[\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]
-%% Version 3.0 of pgf/TikZ is required
-\RequirePackage{tikz}
-\usetikzlibrary{calc}
-%
-% "arrows" library is deprecated, and behave badly with
-% arrows on short paths. Change to the new arrows.meta
-% In pfgcirc.define, we will add the old definition of
-% latex' which we have lost in the transition
-%
-\usetikzlibrary{arrows.meta, bending}
-\usetikzlibrary{fpu} % may be needed for use fpu reciprocal (v1.0.1)
-%
-% global of options (better use styles!)
-%
-\DeclareOption{european}{
- \ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
- \ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester choice = european}
-}
-\DeclareOption{american}{
- \ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester choice = american}
- \ctikzset{logic ports = american}
-}
-\DeclareOption{siunitx}{
- \pgf@circ@siunitxtrue
-}
-\DeclareOption{nosiunitx}{
- \pgf@circ@siunitxfalse
-}
-\DeclareOption{compatibility}{
- \pgf@circuit@compattrue
-}
-%
-% voltages
-%
-\DeclareOption{europeanvoltage}{
- \ctikzset{voltage=european}
-}
-\DeclareOption{straightvoltages}{
- \ctikzset{voltage=straight}
-}
-\DeclareOption{americanvoltage}{
- \ctikzset{voltage=american}
-}
-\DeclareOption{europeanvoltages}{
- \ctikzset{voltage=european}
-}
-\DeclareOption{americanvoltages}{
- \ctikzset{voltage=american}
-}
-% Voltage directions
-\DeclareOption{oldvoltagedirection}{
- \pgf@circ@oldvoltagedirectiontrue
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriesfalse
-}
-\DeclareOption{nooldvoltagedirection}{
- \pgf@circ@oldvoltagedirectionfalse
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriesfalse
-}
-\DeclareOption{RPvoltages}{
- \pgf@circ@oldvoltagedirectiontrue
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriestrue
-}
-\DeclareOption{EFvoltages}{
- \pgf@circ@oldvoltagedirectionfalse
- \pgf@circ@explicitvdirtrue
- \pgf@circ@fixbatteriestrue
-}
-%
-% currents
-%
-\DeclareOption{europeancurrent}{
- \ctikzset{current = european}
-}
-\DeclareOption{americancurrent}{
- \ctikzset{current = american}
-}
-\DeclareOption{europeancurrents}{
- \ctikzset{current = european}
-}
-\DeclareOption{americancurrents}{
- \ctikzset{current = american}
-}
-%
-% resistors
-%
-\DeclareOption{americanresistor}{
- \ctikzset{resistor = american}
-}
-\DeclareOption{europeanresistor}{
- \ctikzset{resistor = european}
-}
-\DeclareOption{americanresistors}{
- \ctikzset{resistor = american}
-}
-\DeclareOption{europeanresistors}{
- \ctikzset{resistor = european}
-}
-%
-% inductors
-%
-\DeclareOption{americaninductor}{
- \ctikzset{inductor = american}
-}
-\DeclareOption{europeaninductor}{
- \ctikzset{inductor = european}
-}
-\DeclareOption{cuteinductor}{
- \ctikzset{inductor = cute}
-}
-\DeclareOption{americaninductors}{
- \ctikzset{inductor = american}
-}
-\DeclareOption{europeaninductors}{
- \ctikzset{inductor = european}
-}
-\DeclareOption{cuteinductors}{
- \ctikzset{inductor = cute}
-}
-%
-% logic ports
-%
-\DeclareOption{americanport}{
- \ctikzset{logic ports = american}
-}
-\DeclareOption{europeanport}{
- \ctikzset{logic ports = european}
-}
-\DeclareOption{americanports}{
- \ctikzset{logic ports = american}
-}
-\DeclareOption{europeanports}{
- \ctikzset{logic ports = european}
-}
-%
-% surge arresters (really?)
-%
-\DeclareOption{americangfsurgearrester}{
- \ctikzset{gas filled surge arrester choice = american}
-}
-\DeclareOption{europeangfsurgearrester}{
- \ctikzset{gas filled surge arrester choice = european}
-}
-%
-% diodes
-%
-\DeclareOption{fulldiodes}{
- \ctikzset{diode = full}
-}
-\DeclareOption{emptydiodes}{
- \ctikzset{diode = empty}
-}
-\DeclareOption{strokediodes}{
- \ctikzset{diode = stroke}
-}
-\DeclareOption{fulldiode}{
- \ctikzset{diode = full}
-}
-\DeclareOption{emptydiode}{
- \ctikzset{diode = empty}
-}
-\DeclareOption{strokediode}{
- \ctikzset{diode = stroke}
-}
-%
-% MOSes and FETs
-%
-\DeclareOption{arrowmos}{
- \pgf@circuit@mos@arrowstrue
-}
-\DeclareOption{noarrowmos}{
- \pgf@circuit@mos@arrowsfalse
-}
-\DeclareOption{fetbodydiode}{
- \pgf@circuit@fet@bodydiodetrue
-}
-\DeclareOption{nofetbodydiode}{
- \pgf@circuit@fet@bodydiodefalse
-}
-\DeclareOption{fetsolderdot}{
- \pgf@circuit@fet@solderdottrue
-}
-\DeclareOption{nofetsolderdot}{
- \pgf@circuit@fet@solderdotfalse
-}
-\DeclareOption{emptypmoscircle}{
- \pgf@circuit@pmos@emptycircletrue
-}
-\DeclareOption{lazymos}{
- \ctikzset{tripoles/nmos/width=.5}
- \ctikzset{tripoles/nmos/gate height=.35}
- \ctikzset{tripoles/nmos/base height=.35}
- \ctikzset{tripoles/nmos/height/.initial=1.2}
- \ctikzset{tripoles/nmos/base width=.5}
- \ctikzset{tripoles/nmos/gate width=.65}
- \ctikzset{tripoles/pmos/width=.5}
- \ctikzset{tripoles/pmos/gate height=.35}
- \ctikzset{tripoles/pmos/base height=.35}
- \ctikzset{tripoles/pmos/height/.initial=1.2}
- \ctikzset{tripoles/pmos/base width=.5}
- \ctikzset{tripoles/pmos/gate width=.65}
- \pgf@circuit@pmos@emptycircletrue
-}
-%
-% BJTs labels
-%
-\DeclareOption{legacytransistorstext}{
- \pgf@circuit@transisors@fixlabelsfalse
-}
-\DeclareOption{nolegacytransistorstext}{
- \pgf@circuit@transisors@fixlabelstrue
-}
-\DeclareOption{centertransistorstext}{
- \pgf@circuit@transisors@fixlabelstrue
-}
-%
-% labels
-%
-\DeclareOption{straightlabels}{
- \ctikzset{label/align = straight}
-}
-\DeclareOption{rotatelabels}{
- \ctikzset{label/align = rotate}
-}
-\DeclareOption{smartlabels}{
- \ctikzset{label/align = smart}
-}
-%
-% Several options (better use styles)
-%
-\DeclareOption{betterproportions}{
- \ctikzset{monopoles/ground/width/.initial=.15}
- \ctikzset{bipoles/resistor/height/.initial=.23}
- \ctikzset{bipoles/resistor/width/.initial=.6}
- \ctikzset{bipoles/capacitor/height/.initial=.4}
- \ctikzset{bipoles/capacitor/width/.initial=.1}
- \ctikzset{bipoles/potentiometer/height/.initial=.6}
- \ctikzset{bipoles/potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/potentiometer/width/.initial=.6}
- \ctikzset{bipoles/photoresistor/height/.initial=.6}
- \ctikzset{bipoles/photoresistor/height 2/.initial=.23}
- \ctikzset{bipoles/photoresistor/width/.initial=.6}
- \ctikzset{bipoles/thermistor/main/.initial=.7}
- \ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistor/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/width/.initial=.6}
- \ctikzset{bipoles/thermistorntc/main/.initial=.7}
- \ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
- \ctikzset{bipoles/thermistorptc/width/.initial=.6}
- \ctikzset{bipoles/thermistorptc/main/.initial=.7}
- \ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/main/.initial=.7}
- \ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
- \ctikzset{bipoles/varistor/width/.initial=.6}
- \ctikzset{bipoles/vresistor/height/.initial=.45}
- \ctikzset{bipoles/vresistor/width/.initial=.6}
- \ctikzset{bipoles/generic/height/.initial=.23}
- \ctikzset{bipoles/generic/width/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height/.initial=.6}
- \ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
- \ctikzset{bipoles/generic potentiometer/width/.initial=.6}
- \ctikzset{bipoles/ageneric/height/.initial=.23}
- \ctikzset{bipoles/ageneric/width/.initial=.6}
- \ctikzset{bipoles/memristor/height/.initial=.23}
- \ctikzset{bipoles/memristor/wave height/.initial=.375}
- \ctikzset{bipoles/memristor/width/.initial=.60}
- \ctikzset{bipoles/tgeneric/height/.initial=.525}
- \ctikzset{bipoles/tgeneric/width/.initial=.6}
- \ctikzset{bipoles/tfullgeneric/height/.initial=.525}
- \ctikzset{bipoles/tfullgeneric/width/.initial=.60}
- \ctikzset{bipoles/fullgeneric/height/.initial=.23}
- \ctikzset{bipoles/fullgeneric/width/.initial=.6}
- \ctikzset{bipoles/diode/height/.initial=.3}
- \ctikzset{bipoles/diode/width/.initial=.25}
- \ctikzset{bipoles/bidirectionaldiode/height/.initial=.66}
- \ctikzset{bipoles/bidirectionaldiode/width/.initial=.6}
- \ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
- \ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
- \ctikzset{tripoles/thyristor/height/.initial=.66}
- \ctikzset{tripoles/thyristor/height 2/.initial=.3}
- \ctikzset{tripoles/thyristor/width/.initial=.6}
- \ctikzset{tripoles/thyristor/diode height/.initial=.3}
- \ctikzset{tripoles/thyristor/diode width left/.initial=.4}
- \ctikzset{tripoles/thyristor/diode width right/.initial=.3}
- \ctikzset{tripoles/triac/height/.initial=.66}
- \ctikzset{tripoles/triac/width/.initial=.6}
- \ctikzset{tripoles/triac/diode width left/.initial=.3}
- \ctikzset{tripoles/triac/diode width right/.initial=.3}
-}
-% This is a nice hack that prints all the shapes declared
-% by the package. Very useful for coverage testing and debugging.
-%
-% \let\origpgfdeclareshape=\pgfdeclareshape
-% \def\pgfdeclareshape#1{%
-% \typeout{SHAPE:\space"#1"}%
-% \origpgfdeclareshape{#1}
-% }
-%
-%
-%%%%%%%%%
-%%%%%%%%%%% Springe nach tex/pgfcirc.defines
-%%%---------- open: tex/pgfcirc.defines.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-%
-% This file has folding marks for vim (See last line).
-%
-%% Key managements%<<<1
-
-\long\def\pgf@circ@comment#1{}
-
-\def\circuitikzbasekey{/tikz/circuitikz}
-
-\pgfkeys{\circuitikzbasekey/.is family}
-
-\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
-\let\ctikzset\circuitikzset
-\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
-\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
-
-\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
-%%>>>
-
-%% Temporary Counters and dimensions%<<<1
-%% Temporary Counters
-\newcount\pgf@circ@count@a
-\newcount\pgf@circ@count@b
-\newcount\pgf@circ@count@c
-%%%%%%%%%%%%
-%% Dimensions
-% coordinate
-\newdimen\pgf@circ@res@up
-\newdimen\pgf@circ@res@down
-\newdimen\pgf@circ@res@zero
-\newdimen\pgf@circ@res@left
-\newdimen\pgf@circ@res@right
-\newdimen\pgf@circ@res@other
-\newdimen\pgf@circ@res@step
-\newdimen\pgf@circ@res@temp
-% Base len for all circuitikz
-\newdimen\pgf@circ@Rlen
-% scaled length for internal use in scalable shapes
-\newdimen\pgf@circ@scaled@Rlen
-\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}}
-\pgf@circ@Rlen = 1.4cm
-% by default scale is 1.0
-\pgf@circ@scaled@Rlen=\pgf@circ@Rlen
-% inital thickness
-\newdimen \pgfstartlinewidth
-%%>>>
-
-% arrow tips, ported over old arrows library (deprecated)%<<<1
-% see https://tex.stackexchange.com/questions/234084/latex-arrow-tip-with-arrows-meta-library
-% this was the original definition of latex' tips, renamed to avoid clashes
-%
-\pgfarrowsdeclare{latexslim}{latexslim}
-{
- \pgfutil@tempdima=0.28pt%
- \advance\pgfutil@tempdima by.3\pgflinewidth%
- \pgfarrowsleftextend{+-4\pgfutil@tempdima}
- \pgfarrowsrightextend{+6\pgfutil@tempdima}
-}
-{
- \pgfutil@tempdima=0.28pt%
- \advance\pgfutil@tempdima by.3\pgflinewidth%
- \pgfpathmoveto{\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
- \pgfpathcurveto
- {\pgfqpoint{3.5\pgfutil@tempdima}{.5\pgfutil@tempdima}}
- {\pgfqpoint{-1\pgfutil@tempdima}{1.5\pgfutil@tempdima}}
- {\pgfqpoint{-4\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
- \pgfpathcurveto
- {\pgfqpoint{-1.5\pgfutil@tempdima}{1\pgfutil@tempdima}}
- {\pgfqpoint{-1.5\pgfutil@tempdima}{-1\pgfutil@tempdima}}
- {\pgfqpoint{-4\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
- \pgfpathcurveto
- {\pgfqpoint{-1\pgfutil@tempdima}{-1.5\pgfutil@tempdima}}
- {\pgfqpoint{3.5\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
- {\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
- \pgfpathclose
- \pgfusepathqfill
-}
-
-\pgfarrowsdeclarereversed{latexslim reversed}{latexslim reversed}{latexslim}{latexslim}
-%%>>>
-
-%% Macros to do things depending on the class%<<<1
-
-\def\pgf@circ@setifdefinedfill#1#2{%
- % if \ctikzclass is defined and \ctikzclass/fill is defined and is not none:
- % set the fill color and execute \pgfusepath{#1}, else execute \pgfusepath{#2}
- \ifdefined\ctikzclass
- \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/fill}%
- {% yes, it's defined
- \edef\@@tmp{\ctikzvalof{\ctikzclass/fill}}\edef\@@none{none}%
- \ifx\@@tmp\@@none % but it's none
- \pgfusepath{#2}%
- \else
- \pgfsetfillcolor{\@@tmp}%
- \pgfusepath{#1}%
- \fi
- }{% the class is defined but the fill key not; use #2
- \pgfusepath{#2}%
- }
- \else
- \pgfusepath{#2}%
- \fi
-}
-
-%% Macro to fill or draw
-
-\def\pgf@circ@draworfill{%
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgf@circ@setifdefinedfill{draw,fill}{draw}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{draw, fill}
- \fi
-}
-
-\def\pgf@circ@draworfillandclip{%
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgf@circ@setifdefinedfill{draw, clip, fill}{draw, clip}
- \pgfusepath{draw, clip}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{draw, clip, fill}
- \fi
-}
-
-\def\pgf@circ@maybefill{%
- \ifx\tikz@fillcolor\pgfutil@empty
- \pgf@circ@setifdefinedfill{fill}{discard}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{fill}
- \fi
-}
-
-%% Macros for setting linewidth
-% #1 is the legacy class (bipoles, tripoles) etc
-% #2 is the reference linewidth
-\def\pgf@circ@setlinewidth#1#2{%
- \ifdefined\ctikzclass
- \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/thickness}%
- {% yes, it's defined
- \edef\@@tmp{\ctikzvalof{\ctikzclass/thickness}}\edef\@@none{none}%
- \ifx\@@tmp\@@none % but it's none
- \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}% passthrough legacy class
- \else
- \pgfsetlinewidth{\@@tmp #2}%
- \fi
- }{ % key not defined, do the legacy thing
- \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
- }% Ok, do nothing
- \else % no class
- \pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
- \fi
-}
-% use \pgf@circ@setlinewidth{none}{\pgflinewidth} if there is no legacy case
-\ctikzset{none/thickness/.initial=1.0} % do not touch
-%%>>>
-
-%% font changes compatible with plain/LaTeX/ConTeXt%<<<1
-%% thanks to Henri Menke https://github.com/circuitikz/circuitikz/issues/285#issuecomment-537224605
-
-\ifpgfutil@format@is@latex
- \long\def\pgf@circ@font@tiny{\tiny}
- \long\def\pgf@circ@font@small{\small}
- \long\def\pgf@circ@font@bold{\textbf}
- \long\def\pgf@circ@font@boldmath{\boldmath}
- \long\def\pgf@circ@font@sixbm{\fontsize{6}{7}\selectfont\boldmath}
- \long\def\pgf@circ@font@tenbm{\fontsize{10}{12}\selectfont\boldmath}
- \long\def\pgf@circ@font@twelve{\fontsize{12}{14}\selectfont}
-\else\ifpgfutil@format@is@plain
- \long\def\pgf@circ@font@tiny{\fiverm}
- \long\def\pgf@circ@font@small{\sevenrm}
- \long\def\pgf@circ@font@bold#1{{\bf#1}}
- \long\def\pgf@circ@font@boldmath{\bf} % to be tested
- \long\def\pgf@circ@font@sixbm{\sevenrm\bf} %
- \long\def\pgf@circ@font@tenbm{\tenrm\bf} %
- \long\def\pgf@circ@font@twelve{\twelverm} %
-\else\ifpgfutil@format@is@context
- \long\def\pgf@circ@font@tiny{\tfxx}
- \long\def\pgf@circ@font@small{\tfx}
- \long\def\pgf@circ@font@bold{\bold}
- \long\def\pgf@circ@font@boldmath{\bold} % to be tested
- \long\def\pgf@circ@font@sixbm{\tfx\bold} %
- \long\def\pgf@circ@font@tenbm{\normal\bold}%
- \long\def\pgf@circ@font@twelve{\tfa} %
-\fi\fi\fi
-
-
-%
-% Thanks to Phelype Oleinik https://tex.stackexchange.com/a/520806/38080
-%
-% this is needed to avoid problems with \ConTeXt
-\ifcsname normalunexpanded\endcsname
- \let\pgfcircutil@unexpanded\normalunexpanded
-\else
- \let\pgfcircutil@unexpanded\unexpanded
-\fi
-% minimally expand a pgfkey to check if it's {}/undefined or filled.
-\def\unexpandedvalueof#1{%
- \pgfcircutil@unexpanded\expandafter\expandafter
- \expandafter\pgf@circ@valueof@chk\pgfkeysvalueof{#1}}
-\def\pgf@circ@valueof@chk#1{%
- \ifx\relax#1%
- \expandafter\pgfutil@firstoftwo
- \else
- \expandafter\pgfutil@secondoftwo
- \fi
- {{}}% #1 is \relax, so consider empty
- {\expandafter{#1}}% otherwise, leave the key after one more expansion
-}%
-%>>>
-
-% text position in some component.%<<<1
-% (added with ieeestd logic ports. Maybe to be extended to other components,
-% like amplifiers)
-%
-\newif\ifpgf@circ@center@text\pgf@circ@center@texttrue
-\tikzset{component text/.is choice}%
-\tikzset{component text/center/.code={\pgf@circ@center@texttrue}}%
-\tikzset{component text/left/.code={\pgf@circ@center@textfalse}}%
-\ctikzset{component text/.is choice}%
-\ctikzset{component text/center/.code={\pgf@circ@center@texttrue}}%
-\ctikzset{component text/left/.code={\pgf@circ@center@textfalse}}%
-\ctikzset{left text distance/.initial=0.3em}%
-%>>>
-
-% voltage direction options%<<<1
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circuit@compat
-\newif\ifpgf@circ@oldvoltagedirection % default false
-\newif\ifpgf@circ@explicitvdir
-\newif\ifpgf@circ@fixbatteries
-
-\ctikzset{voltage dir/.is choice}
-\ctikzset{voltage dir/old/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriesfalse}}
-\ctikzset{voltage dir/noold/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriesfalse}}
-\ctikzset{voltage dir/RP/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriestrue}}
-\ctikzset{voltage dir/EF/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriestrue}}
-\tikzset{voltage dir/.style={circuitikz/voltage dir=#1}}%
-%>>>
-
-% bipole definitions for path component and text decorations%%<<<1
-%
-% Option "t=*" for nodes
-\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
-%
-\ctikzset{bipole/.is family}
-\ctikzset{bipole/kind/.initial=}
-\ctikzset{bipole/name/.initial=}
-\newif\ifpgf@circuit@bipole@isvoltage
-\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
-\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
-\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
-\newif\ifpgf@circuit@bipole@strokedsymbol
-\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
-\newif\ifpgf@circuit@bipole@iscurrent
-\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
-
-\ctikzset{bipole/voltage/.is family}
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-\newif\ifpgf@circuit@bipole@voltage@below
-\ctikzset{bipole/voltage/position/.is choice}
-\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
-\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
-
-\ctikzset{bipole/voltage/label/unit/.initial=}
-\ctikzset{bipole/voltage/label/name/.initial=}
-
-\ctikzset{bipole/current/.is family}
-\newif\ifpgf@circuit@bipole@current@backward
-\ctikzset{bipole/current/direction/.is choice}
-\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
-\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
-\newif\ifpgf@circuit@bipole@current@before
-\ctikzset{bipole/current/x position/.is choice}
-\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
-\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
-\newif\ifpgf@circuit@bipole@current@below
-\ctikzset{bipole/current/y position/.is choice}
-\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
-\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
-\ctikzset{bipole/current/label/unit/.initial=}
-\ctikzset{bipole/current/label/name/.initial=}
-
-\ctikzset{bipole/flow/.is family}
-\newif\ifpgf@circuit@bipole@flow@backward
-\ctikzset{bipole/flow/direction/.is choice}
-\ctikzset{bipole/flow/direction/forward/.code={\pgf@circuit@bipole@flow@backwardfalse}}
-\ctikzset{bipole/flow/direction/backward/.code={\pgf@circuit@bipole@flow@backwardtrue}}
-\newif\ifpgf@circuit@bipole@flow@before
-\ctikzset{bipole/flow/x position/.is choice}
-\ctikzset{bipole/flow/x position/after/.code={\pgf@circuit@bipole@flow@beforefalse}}
-\ctikzset{bipole/flow/x position/before/.code={\pgf@circuit@bipole@flow@beforetrue}}
-\newif\ifpgf@circuit@bipole@flow@below
-\ctikzset{bipole/flow/y position/.is choice}
-\ctikzset{bipole/flow/y position/above/.code={\pgf@circuit@bipole@flow@belowfalse}}
-\ctikzset{bipole/flow/y position/below/.code={\pgf@circuit@bipole@flow@belowtrue}}
-\ctikzset{bipole/flow/label/unit/.initial=}
-\ctikzset{bipole/flow/label/name/.initial=}
-\ctikzset{flow/distance/.initial = .5}
-\ctikzset{flow/offset/.initial = .2}%distance between flow-arrow and conductor
-
-\ctikzset{bipole/label/.is family}
-\ctikzset{bipole/label/position/.initial=90}
-\ctikzset{bipole/label/unit/.initial=}
-\ctikzset{bipole/label/name/.initial=}
-\ctikzset{bipole/annotation/.is family}
-\ctikzset{bipole/annotation/position/.initial=-90}
-\ctikzset{bipole/annotation/unit/.initial=}
-\ctikzset{bipole/annotation/name/.initial=}
-
-\newif\ifpgf@circ@siunitx
-\newif\ifpgf@circ@siunitx@res
-
-\ctikzset{label/align/.is choice}
-\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
-\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
-\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
-%%>>>
-
-% traditional styles %<<<1
-%
-\ctikzset{thickness/.initial=2}
-\ctikzset{color/.initial=black}
-\pgfkeys{/tikz/color/.add code={}{\ctikzset{color={#1}}}}
-\ctikzset{bipoles/border margin/.initial=1.1}
-\ctikzset{bipoles/thickness/.initial=2}
-\ctikzset{tripoles/thickness/.initial=2}
-\ctikzset{quadpoles/thickness/.initial=2}
-\ctikzset{nodes width/.initial=.04}
-%%>>>
-
-% Styles definitions and macros%<<<1
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% main style definitions
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% load a style file: search ctikzstyle-NAME.tex in path
-\def\ctikzloadstyle#1{%
- \pgfutil@InputIfFileExists{ctikzstyle-#1}{}{%
- \tikzerror{I did not find the circuitikz style #1}}%
-}
-
-% load and enact a style
-\def\ctikzsetstyle#1{%
- \ctikzloadstyle{#1}%
- \tikzset{#1 circuit style}%
-}
-
-% global style parameters
-\ctikzset{default/scale/.initial=1.0} % do not touch
-\ctikzset{default/fill/.initial=none} % do not touch
-\ctikzset{default/thickness/.initial=none} % do not touch
-% default is use as the generic default style for bipoles
-
-% mostly bipoles:
-
-\ctikzset{resistors/scale/.initial=1.0}
-\ctikzset{resistors/fill/.initial=none}
-\ctikzset{resistors/thickness/.initial=none}
-
-\ctikzset{capacitors/scale/.initial=1.0}
-\ctikzset{capacitors/fill/.initial=none}
-\ctikzset{capacitors/thickness/.initial=none}
-
-\ctikzset{inductors/scale/.initial=1.0}
-\ctikzset{inductors/fill/.initial=none}
-\ctikzset{inductors/thickness/.initial=none}
-
-\ctikzset{diodes/scale/.initial=1.0}
-\ctikzset{diodes/fill/.initial=none}
-\ctikzset{diodes/thickness/.initial=none}
-
-\ctikzset{batteries/scale/.initial=1.0}
-\ctikzset{batteries/fill/.initial=none}
-\ctikzset{batteries/thickness/.initial=none}
-
-\ctikzset{sources/scale/.initial=1.0}
-\ctikzset{sources/fill/.initial=none}
-\ctikzset{sources/thickness/.initial=none}
-
-\ctikzset{csources/scale/.initial=1.0}
-\ctikzset{csources/fill/.initial=none}
-\ctikzset{csources/thickness/.initial=none}
-
-\ctikzset{instruments/scale/.initial=1.0}
-\ctikzset{instruments/fill/.initial=none}
-\ctikzset{instruments/thickness/.initial=none}
-
-\ctikzset{mechanicals/scale/.initial=1.0}
-\ctikzset{mechanicals/fill/.initial=none}
-\ctikzset{mechanicals/thickness/.initial=none}
-
-\ctikzset{misc/scale/.initial=1.0}
-\ctikzset{misc/fill/.initial=none}
-\ctikzset{misc/thickness/.initial=none}
-
-\ctikzset{blocks/scale/.initial=1.0}
-\ctikzset{blocks/fill/.initial=none}
-\ctikzset{blocks/thickness/.initial=none}
-
-% mostly nodes
-
-\ctikzset{grounds/scale/.initial=1.0}
-\ctikzset{grounds/fill/.initial=none}
-\ctikzset{grounds/thickness/.initial=none}
-
-\ctikzset{power supplies/scale/.initial=1.0}
-\ctikzset{power supplies/fill/.initial=none}
-\ctikzset{power supplies/thickness/.initial=none}
-
-\ctikzset{transistors/scale/.initial=1.0}
-\ctikzset{transistors/fill/.initial=none}
-\ctikzset{transistors/thickness/.initial=none}
-
-\ctikzset{tubes/scale/.initial=1.0}
-\ctikzset{tubes/fill/.initial=none}
-\ctikzset{tubes/thickness/.initial=none}
-
-\ctikzset{RF/scale/.initial=1.0}
-\ctikzset{RF/fill/.initial=none}
-\ctikzset{RF/thickness/.initial=none}
-
-\ctikzset{electromechanicals/scale/.initial=1.0}
-\ctikzset{electromechanicals/fill/.initial=none}
-\ctikzset{electromechanicals/thickness/.initial=none}
-
-% transformers go with inductors
-\ctikzset{amplifiers/scale/.initial=1.0}
-\ctikzset{amplifiers/fill/.initial=none}
-\ctikzset{amplifiers/thickness/.initial=none}
-
-\ctikzset{switches/scale/.initial=1.0}
-\ctikzset{switches/fill/.initial=none}
-\ctikzset{switches/thickness/.initial=none}
-
-\ctikzset{logic ports/scale/.initial=1.0}
-\ctikzset{logic ports/fill/.initial=none}
-\ctikzset{logic ports/thickness/.initial=none}
-
-\ctikzset{flipflops/scale/.initial=1.0}
-\ctikzset{flipflops/fill/.initial=none}
-\ctikzset{flipflops/thickness/.initial=none}
-
-\ctikzset{muxdemuxes/scale/.initial=1.0}
-\ctikzset{muxdemuxes/fill/.initial=none}
-\ctikzset{muxdemuxes/thickness/.initial=none}
-
-\ctikzset{chips/scale/.initial=1.0}
-\ctikzset{chips/fill/.initial=none}
-\ctikzset{chips/thickness/.initial=none}
-
-\ctikzset{displays/scale/.initial=1.0}
-\ctikzset{displays/fill/.initial=none}
-\ctikzset{displays/thickness/.initial=none}
-%
-% general styles
-%
-\tikzset{european/.style = {european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester set}}
-\tikzset{american/.style = {american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester set}}
-\tikzset{cute/.style = {european currents, european voltages, american resistors, cute inductors, american ports}}
-%%>>>
-
-% grounds and power supplies%<<<1
-
-\ctikzset{monopoles/.is family}
-\ctikzset{monopoles/ground/width/.initial=.25}
-\ctikzset{monopoles/ground/connectionthickness/.initial=1}
-\ctikzset{monopoles/ground/thickness/.initial=2}
-\ctikzset{monopoles/rground/thickness/.initial=2}
-\ctikzset{monopoles/tground/thickness/.initial=3}
-\ctikzset{monopoles/vcc/width/.initial=.2}
-\ctikzset{monopoles/vcc/arrow/.initial=legacy}
-\ctikzset{monopoles/vee/arrow/.initial=legacy}
-\ctikzset{monopoles/match/width/.initial=.4}
-\ctikzset{monopoles/chassis/width/.initial=.25}
-\ctikzset{monopoles/alternative chassis/width/.initial=.25}
-\ctikzset{monopoles/equipotentiality/width/.initial=.25}
-\ctikzset{monopoles/antenna/width/.initial=.25}
-\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/txantenna/width/.initial=.25}
-\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
-\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
-\ctikzset{monopoles/rxantenna/width/.initial=.25}
-\ctikzset{monopoles/bareantenna/width/.initial=.25}
-\ctikzset{monopoles/bareantenna/label/xanchor/.initial=1}
-\ctikzset{monopoles/bareantenna/label/yanchor/.initial=0.5}
-\ctikzset{monopoles/waves/width/.initial=0.5}%
-%>>>
-
-% microstrips %<<<1
-\ctikzset{bipoles/mstline/height/.initial=0.3}
-\ctikzset{bipoles/mstline/width/.initial=1.2}
-\pgfkeys{/tikz/mstlinelen/.add code={}{\ctikzset{bipoles/mstline/width=#1}}}
-\ctikzset{monopoles/msport/width/.initial=.5}
-\ctikzset{monopoles/msrstub/height/.initial=1.0}
-\ctikzset{monopoles/msrstub/width/.initial=0.6}%
-%>>>
-
-% microphone and loudspeaker%<<<1
-\ctikzset{bipoles/loudspeaker/height/.initial=.8}
-\ctikzset{bipoles/loudspeaker/depth/.initial=.3}
-\ctikzset{bipoles/loudspeaker/width/.initial=.8}
-\ctikzset{bipoles/mic/height/.initial=1.2}
-\ctikzset{bipoles/mic/depth/.initial=.1}
-\ctikzset{bipoles/mic/width/.initial=.8}%
-%>>>
-
-% resistors%<<<1
-% Zig Zag resistors
-\ctikzset{resistors/zigs/.initial=3}
-\ctikzset{resistors/width/.code={%
- \ctikzset{bipoles/resistor/width=#1}%
- \ctikzset{bipoles/vresistor/width=#1}%
- \ctikzset{bipoles/potentiometer/width=#1}%
- \ctikzset{bipoles/resistivesens/width=#1}%
- \ctikzset{bipoles/photoresistor/width=#1}%
- \ctikzset{bipoles/thermistor/width=#1}%
- \ctikzset{bipoles/thermistorntc/width=#1}%
- \ctikzset{bipoles/thermistorptc/width=#1}%
- \ctikzset{bipoles/varistor/width=#1}%
- \ctikzset{bipoles/generic/width=#1}%
- \ctikzset{bipoles/generic potentiometer/width=#1}%
- \ctikzset{bipoles/ageneric/width=#1}%
- \ctikzset{bipoles/tgeneric/width=#1}%
-}}
-\ctikzset{wiper pos/.code={%
- \ctikzset{bipoles/potentiometer/wiper pos=#1}%
- \ctikzset{bipoles/generic potentiometer/wiper pos=#1}%
-}}
-% zigzag resistor
-\ctikzset{bipoles/resistor/height/.initial=.3}
-\ctikzset{bipoles/resistor/width/.initial=.8}
-\ctikzset{bipoles/potentiometer/height/.initial=.8}
-\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
-\ctikzset{bipoles/potentiometer/width/.initial=.8}
-\ctikzset{bipoles/potentiometer/wiper pos/.initial=.5}
-\ctikzset{bipoles/vresistor/height/.initial=.6}
-\ctikzset{bipoles/vresistor/width/.initial=.8}
-\ctikzset{bipoles/resistivesens/height/.initial=.6}
-\ctikzset{bipoles/resistivesens/width/.initial=.8}
-% square resistors
-\ctikzset{bipoles/photoresistor/height/.initial=.6}
-\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
-\ctikzset{bipoles/photoresistor/width/.initial=.8}
-\ctikzset{bipoles/thermistor/main/.initial=.7}
-\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/width/.initial=.8}
-\ctikzset{bipoles/thermistorntc/main/.initial=.7}
-\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistorptc/width/.initial=.8}
-\ctikzset{bipoles/thermistorptc/main/.initial=.7}
-\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
-\ctikzset{bipoles/thermistor/width/.initial=.8}
-\ctikzset{bipoles/varistor/main/.initial=.7}
-\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
-\ctikzset{bipoles/varistor/width/.initial=.8}
-\ctikzset{bipoles/generic/height/.initial=.30}
-\ctikzset{bipoles/generic/width/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
-\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
-\ctikzset{bipoles/generic potentiometer/wiper pos/.initial=.5}
-\ctikzset{bipoles/ageneric/height/.initial=.30}
-\ctikzset{bipoles/tgeneric/height/.initial=.70}
-\ctikzset{bipoles/tgeneric/width/.initial=.80}
-\ctikzset{bipoles/ageneric/width/.initial=.80}
-\ctikzset{bipoles/memristor/height/.initial=.30}
-\ctikzset{bipoles/memristor/wave height/.initial=.5}
-\ctikzset{bipoles/memristor/width/.initial=.80}
-
-\newif\ifpgf@circuit@europeanresistor
-\ctikzset{resistor/.is choice}
-\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
-\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
-\tikzset{american resistors/.style = {\circuitikzbasekey/resistor = american}}
-\tikzset{european resistors/.style = {\circuitikzbasekey/resistor = european}}
-%%>>>
-
-%% Capacitors%<<<1
-\ctikzset{bipoles/capacitor/height/.initial=.6}
-\ctikzset{bipoles/capacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/height/.initial=.5}
-\ctikzset{bipoles/ecapacitor/width/.initial=.2}
-\ctikzset{bipoles/ecapacitor/font/.initial=\pgf@circ@font@sixbm}
-%%% pcapacitor is deprecated
-\ctikzset{bipoles/pcapacitor/height/.initial=.6}
-\ctikzset{bipoles/pcapacitor/width/.initial=.2}
-\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
-\ctikzset{bipoles/ccapacitor/height/.initial=.6}
-\ctikzset{bipoles/ccapacitor/width/.initial=.12}
-\ctikzset{bipoles/ccapacitor/bend width/.initial=1.1}
-\ctikzset{bipoles/vcapacitor/height/.initial=.6}
-\ctikzset{bipoles/vcapacitor/width/.initial=.5}
-\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
-\ctikzset{bipoles/piezoelectric/height/.initial=.7}
-\ctikzset{bipoles/piezoelectric/width/.initial=.5}%
-%>>>
-
-% Inductors%<<<1
-\ctikzset{inductors/coils/.code={%
- \ctikzset{bipoles/cuteinductor/coils=#1}%
- \ctikzset{bipoles/cutechoke/coils=#1}%
- \ctikzset{bipoles/americaninductor/coils=#1}%
- \ctikzset{bipoles/vcuteinductor/coils=#1}%
- \ctikzset{bipoles/vamericaninductor/coils=#1}%
-}}
-\ctikzset{inductors/width/.code={%
- \ctikzset{bipoles/cuteinductor/width=#1}%
- \ctikzset{bipoles/cutechoke/width=#1}%
- \ctikzset{bipoles/americaninductor/width=#1}%
- \ctikzset{bipoles/vcuteinductor/width=#1}%
- \ctikzset{bipoles/vamericaninductor/width=#1}%
- \ctikzset{bipoles/fullgeneric/width=#1}%
- \ctikzset{bipoles/tfullgeneric/width=#1}%
-}}
-\ctikzset{bipoles/cuteinductor/height/.initial=.3}
-\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
-\ctikzset{bipoles/cuteinductor/width/.initial=.6}
-\ctikzset{bipoles/cuteinductor/coils/.initial=5}
-\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-%% Cute choke settings
-\ctikzset{bipoles/cutechoke/height/.initial=.3}
-\ctikzset{bipoles/cutechoke/lower coil height/.initial=.15}
-\ctikzset{bipoles/cutechoke/width/.initial=.6}
-\ctikzset{bipoles/cutechoke/coils/.initial=5}
-\ctikzset{bipoles/cutechoke/coil aspect/.initial=.5}%percentage of choke width, which is covered by lower coil
-\ctikzset{bipoles/cutechoke/cstep/.initial=.3}
-\ctikzset{bipoles/cutechoke/cdist/.initial=1.3}
-\ctikzset{bipoles/cutechoke/cthick/.initial=1}
-\newif\ifpgf@circuit@bipole@twolineschoke
-\pgf@circuit@bipole@twolineschokefalse
-\pgfkeys{/tikz/onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
-\ctikzset{onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
-\pgfkeys{/tikz/twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
-\ctikzset{twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
-%
-\ctikzset{bipoles/americaninductor/height/.initial=.3}
-\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
-\ctikzset{bipoles/americaninductor/width/.initial=.8}
-\ctikzset{bipoles/americaninductor/coils/.initial=4}
-\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
-\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
-\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
-\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
-\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
-\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
-\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
-\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
-\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
-\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
-\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
-\ctikzset{bipoles/fullgeneric/height/.initial=.30}
-\ctikzset{bipoles/fullgeneric/width/.initial=.80}
-\ctikzset{inductor/.is choice}
-\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
-\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
-\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
-
-\tikzset{american inductors/.style = {\circuitikzbasekey/inductor = american}}
-\tikzset{european inductors/.style = {\circuitikzbasekey/inductor = european}}
-\tikzset{cute inductors/.style = {\circuitikzbasekey/inductor = cute}}
-\tikzset{american ports/.style = {\circuitikzbasekey/logic ports = american}}
-\tikzset{european ports/.style = {\circuitikzbasekey/logic ports = european}}
-
-%%>>>
-
-% Sources%<<<1
-
-\ctikzset{bipoles/esource/height/.initial=.60}
-\ctikzset{bipoles/esource/width/.initial=.60}
-\ctikzset{bipoles/pvsource/height/.initial=.60}
-\ctikzset{bipoles/pvsource/width/.initial=.60}
-\ctikzset{bipoles/isource/height/.initial=.60}
-\ctikzset{bipoles/isource/width/.initial=.60}
-\ctikzset{bipoles/oosource/height/.initial=.60}
-\ctikzset{bipoles/oosource/width/.initial=.60}
-\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/dcisource/angle/.initial=80}
-\ctikzset{bipoles/dcisource/height/.initial=.60}
-\ctikzset{bipoles/dcisource/width/.initial=.60}
-\ctikzset{bipoles/dcvsource/height/.initial=.60}
-\ctikzset{bipoles/dcvsource/width/.initial=.60}
-\ctikzset{bipoles/vsourcetri/height/.initial=.60}
-\ctikzset{bipoles/vsourcetri/width/.initial=.60}
-\ctikzset{bipoles/isourceam/height/.initial=.60}
-\ctikzset{bipoles/isourceam/width/.initial=.60}
-\ctikzset{bipoles/vsource/height/.initial=.60}
-\ctikzset{bipoles/vsource/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/height/.initial=.60}
-\ctikzset{bipoles/vsourceam/width/.initial=.60}
-\ctikzset{bipoles/vsourceam/margin/.initial=.7}
-\ctikzset{bipoles/isourcesin/height/.initial=.60}
-\ctikzset{bipoles/isourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesin/height/.initial=.60}
-\ctikzset{bipoles/vsourcesin/width/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
-\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
-\ctikzset{bipoles/cisource/height/.initial=.7}
-\ctikzset{bipoles/cisource/width/.initial=.7}
-\ctikzset{bipoles/cisourceam/height/.initial=.7}
-\ctikzset{bipoles/cisourceam/width/.initial=.7}
-\ctikzset{bipoles/ecsource/height/.initial=.7}
-\ctikzset{bipoles/ecsource/width/.initial=.7}
-\ctikzset{bipoles/cvsource/height/.initial=.7}
-\ctikzset{bipoles/cvsource/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/height/.initial=.7}
-\ctikzset{bipoles/cvsourceam/width/.initial=.7}
-\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
-\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
-\ctikzset{bipoles/cisourcesin/width/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
-\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
-\ctikzset{bipoles/battery/height/.initial=.6}
-\ctikzset{bipoles/battery/width/.initial=.3}
-\ctikzset{bipoles/battery1/height/.initial=.6}
-\ctikzset{bipoles/battery1/width/.initial=.3}
-\ctikzset{bipoles/battery2/height/.initial=.6}
-\ctikzset{bipoles/battery2/width/.initial=.3}
-% noise sources
-\ctikzset{bipoles/noise sources/fillcolor/.initial=gray!50}
-
-%%>>>
-
-% "oo" style transformers and power grid diagrams%<<<1
-% % % ootransformer
-\ctikzset{bipoles/oosourcetrans/height/.initial=.6}
-\ctikzset{bipoles/oosourcetrans/width/.initial=.6}
-\ctikzset{bipoles/oosourcetrans/circlesize/.initial=.6}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/oosourcetrans/circleoffset/.initial=.4}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/oosourcetrans/vectorgroupscale/.initial=1}
-
-% % % oootransformer
-\ctikzset{bipoles/ooosource/height/.initial=.6}
-\ctikzset{bipoles/ooosource/circlesize/.initial=.55}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/ooosource/circleoffset/.initial=.45}%circlesize+circleoffset should be =1
-\ctikzset{bipoles/ooosource/vectorgroupscale/.initial=1}
-
-% % % primary windings
-\newif\ifpgf@circ@prim@delta
-\newif\ifpgf@circ@prim@wye
-\newif\ifpgf@circ@prim@zig
-\pgfkeys{tikz/prim/.is choice}
-\pgfkeys{tikz/prim/delta/.add code={}{\pgf@circ@prim@deltatrue}}
-\pgfkeys{tikz/prim/wye/.add code={}{\pgf@circ@prim@wyetrue}}
-\pgfkeys{tikz/prim/zig/.add code={}{\pgf@circ@prim@zigtrue}}
-
-% % % secondary windings
-\newif\ifpgf@circ@sec@delta
-\newif\ifpgf@circ@sec@wye
-\newif\ifpgf@circ@sec@zig
-\pgfkeys{tikz/sec/.is choice}
-\pgfkeys{tikz/sec/delta/.add code={}{\pgf@circ@sec@deltatrue}}
-\pgfkeys{tikz/sec/wye/.add code={}{\pgf@circ@sec@wyetrue}}
-\pgfkeys{tikz/sec/zig/.add code={}{\pgf@circ@sec@zigtrue}}
-
-% % % tertiary windings (ooosource)
-\newif\ifpgf@circ@tert@delta
-\newif\ifpgf@circ@tert@wye
-\newif\ifpgf@circ@tert@zig
-\pgfkeys{tikz/tert/.is choice}
-\pgfkeys{tikz/tert/delta/.add code={}{\pgf@circ@tert@deltatrue}}
-\pgfkeys{tikz/tert/wye/.add code={}{\pgf@circ@tert@wyetrue}}
-\pgfkeys{tikz/tert/zig/.add code={}{\pgf@circ@tert@zigtrue}}%
-%>>>
-
-% diodes%<<<1
-
-\ctikzset{bipoles/diode/height/.initial=.50}
-\ctikzset{bipoles/diode/width/.initial=.40}
-\ctikzset{bipoles/bidirectionaldiode/height/.initial=1.1}
-\ctikzset{bipoles/bidirectionaldiode/width/.initial=1}
-\ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
-\ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
-\ctikzset{bipoles/varcap/height/.initial=.50}
-\ctikzset{bipoles/varcap/width/.initial=.45}
-\ctikzset{tripoles/thyristor/height/.initial=1.10}
-\ctikzset{tripoles/thyristor/height 2/.initial=.5}
-\ctikzset{tripoles/thyristor/width/.initial=1.0}
-\ctikzset{tripoles/thyristor/diode height/.initial=.5}
-\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
-\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
-
-\ctikzset{tripoles/triac/height/.initial=1.1}
-\ctikzset{tripoles/triac/width/.initial=1}
-\ctikzset{tripoles/triac/diode width left/.initial=.3}
-\ctikzset{tripoles/triac/diode width right/.initial=.3}
-%
-% Flipping arrows in LED and photodiodes
-%
-\newif\ifpgf@led@fliparrows
-\newif\ifpgf@pd@fliparrows
-\pgf@led@fliparrowsfalse
-\pgf@pd@fliparrowsfalse
-%
-% by default the arrows start (LED) and go (PD) to the anode.
-%
-\ctikzset{led arrows from anode/.code=\pgf@led@fliparrowsfalse}
-\ctikzset{pd arrows to anode/.code=\pgf@pd@fliparrowsfalse}
-%
-% but they can start form the cathode (LED) or go to it (PD)
-%
-\ctikzset{led arrows from cathode/.code=\pgf@led@fliparrowstrue}
-\ctikzset{pd arrows to cathode/.code=\pgf@pd@fliparrowstrue}
-
-\newif\ifpgf@circuit@strokediode
-\newif\ifpgf@circuit@fulldiode
-\pgf@circuit@strokediodefalse
-\pgf@circuit@fulldiodefalse
-
-\ctikzset{diode/.is choice}
-\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
-\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
-\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
-
-\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full}}
-\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty}}
-\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke}}
-
-%%>>>
-
-% switches%<<<1
-
-\ctikzset{bipoles/spst/height/.initial=.35}
-\ctikzset{bipoles/spst/width/.initial=.35}
-\ctikzset{bipoles/spst/depth/.initial=.2}
-\ctikzset{bipoles/nos/height/.initial=.3}
-\ctikzset{bipoles/nos/width/.initial=.35}
-\ctikzset{bipoles/nos/depth/.initial=.2}
-\ctikzset{bipoles/ncs/height/.initial=.35}
-\ctikzset{bipoles/ncs/width/.initial=.35}
-\ctikzset{bipoles/ncs/depth/.initial=.2}
-\ctikzset{bipoles/pushbutton/height/.initial=.5}
-\ctikzset{bipoles/pushbutton/height 2/.initial=.2}
-\ctikzset{bipoles/pushbutton/width/.initial=.50}
-%%% reed switch
-\ctikzset{bipoles/reed/height/.initial=.4}
-\ctikzset{bipoles/reed/width/.initial=.8}% 0.35 in nos
-\ctikzset{bipoles/reed/depth/.initial=.4}
-%% Cute switches
-\ctikzset{bipoles/cuteswitch/shape/.initial={ocirc}}
-\ctikzset{bipoles/cuteswitch/height/.initial=.6}
-\ctikzset{bipoles/cuteswitch/height 2/.initial=.2}
-\ctikzset{bipoles/cuteswitch/width/.initial=.50}
-\ctikzset{bipoles/cuteswitch/thickness/.initial=1}
-
-\ctikzset{tripoles/spdt/width/.initial=.85}
-\ctikzset{tripoles/spdt/height/.initial=.45}
-\ctikzset{tripoles/spdt/margin/.initial=.45}
-
-\ctikzset{tripoles/toggleswitch/height/.initial=.8}
-\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
-\ctikzset{tripoles/toggleswitch/width/.initial=.80}
-%%>>>
-
-% arresters, fuses, lamps, etc%<<<1
-
-\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
-\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
-\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
-\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
-\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
-\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
-\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
-\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
-\ctikzset{bipoles/fuse/height/.initial=.20}
-\ctikzset{bipoles/fuse/width/.initial=.50}
-\ctikzset{bipoles/afuse/height/.initial=.20}
-\ctikzset{bipoles/afuse/width/.initial=.50}
-\ctikzset{bipoles/lamp/height/.initial=.60}
-\ctikzset{bipoles/lamp/width/.initial=.60}
-\ctikzset{bipoles/bulb/height/.initial=.8}
-\ctikzset{bipoles/bulb/width/.initial=.8}
-\ctikzset{bipoles/tline/height/.initial=.3}
-\ctikzset{bipoles/tline/width/.initial=.6}
-\ctikzset{bipoles/squid/height/.initial=.60}
-\ctikzset{bipoles/squid/width/.initial=.60}
-\ctikzset{bipoles/barrier/height/.initial=.60}
-\ctikzset{bipoles/barrier/width/.initial=.60}
-\ctikzset{bipoles/openbarrier/gap/.initial=0.5}
-\ctikzset{bipoles/thermocouple/height/.initial=.250}
-\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
-\ctikzset{bipoles/thermocouple/width/.initial=.140}
-\newif\ifpgf@circuit@europeangfsurgearrester
-\ctikzset{gas filled surge arrester choice/.is choice}
-\ctikzset{gas filled surge arrester choice/european/.code= {\pgf@circuit@europeangfsurgearrestertrue}}
-\ctikzset{gas filled surge arrester choice/american/.code= {\pgf@circuit@europeangfsurgearresterfalse}}
-
-\tikzset{american gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=american}}
-\tikzset{european gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=european}}
-%%>>>
-
-% wires (open, shorts, ...)%<<<1
-
-\ctikzset{bipoles/open/height/.initial=.3} %necessary for curly voltages
-\ctikzset{bipoles/open/width/.initial=.3} %necessary for curly voltages
-\ctikzset{bipoles/open/voltage/straight label distance/.initial=0}
-\ctikzset{bipoles/open/voltage/distance from node/.initial=.2}
-\ctikzset{bipoles/short/height/.initial=.1} %dummy height for voltage positioning
-\ctikzset{bipoles/short/width/.initial=.1} %dummy width for voltage positioning
-% multiwire
-\ctikzset{bipoles/multiwire/height/.initial=0.4}
-\ctikzset{bipoles/multiwire/width/.initial=0.2}
-\ctikzset{bipoles/multiwire/spacing/.initial=0.05}
-% crossing wires
-\ctikzset{bipoles/crossing/size/.initial=.2}
-%%>>>
-
-% Instruments %<<<1
-\ctikzset{bipoles/ammeter/height/.initial=.60}
-\ctikzset{bipoles/ammeter/width/.initial=.60}
-\ctikzset{bipoles/ohmmeter/height/.initial=.60}
-\ctikzset{bipoles/ohmmeter/width/.initial=.60}
-\ctikzset{bipoles/voltmeter/height/.initial=.60}
-\ctikzset{bipoles/voltmeter/width/.initial=.60}
-\ctikzset{bipoles/smeter/height/.initial=.60}
-\ctikzset{bipoles/smeter/width/.initial=.60}
-\ctikzset{bipoles/smeter/voltage/additional shift/.initial=1}
-\ctikzset{bipoles/qmeter/depth/.initial=.40}
-\ctikzset{bipoles/qmeter/height/.initial=.80}
-\ctikzset{bipoles/qmeter/width/.initial=.60}
-% this must be specified for each one
-\ctikzset{bipoles/qvprobe/voltage/additional shift/.initial=.5}
-\ctikzset{bipoles/qiprobe/voltage/additional shift/.initial=.5}
-\ctikzset{bipoles/qpprobe/voltage/additional shift/.initial=.5}
-\ctikzset{bipoles/iloop/width/.initial=.40}
-\ctikzset{bipoles/iloop/height/.initial=.60}
-
-\ctikzset{bipoles/oscope/height/.initial=.60}
-\ctikzset{bipoles/oscope/width/.initial=.60}
-\ctikzset{bipoles/oscope/voltage/additional shift/.initial=1}
-
-
-% option to not rotate the new (Romano's) instruments
-\newif\ifpgf@circuit@straightinstruments\pgf@circuit@straightinstrumentstrue
-\pgfkeys{/tikz/straight instruments/.add code={}{\pgf@circuit@straightinstrumentstrue}}
-\ctikzset{straight instruments/.add code={}{\pgf@circuit@straightinstrumentstrue}}
-\pgfkeys{/tikz/rotated instruments/.add code={}{\pgf@circuit@straightinstrumentsfalse}}
-\ctikzset{rotated instruments/.add code={}{\pgf@circuit@straightinstrumentsfalse}}
-%%>>>
-
-% blocks (twoports and so)%<<<1
-
-\ctikzset{bipoles/twoport/width/.initial=.7}
-\ctikzset{bipoles/twoport/height/.initial=.7}
-\ctikzset{bipoles/twoport/text/.initial=}
-\ctikzset{bipoles/twoportsplit/width/.initial=.7}
-\ctikzset{bipoles/twoport/text in/.initial=}
-\ctikzset{bipoles/twoport/text out/.initial=}
-\ctikzset{text/.style={t=#1}}
-\ctikzset{t/.code={%
- \ctikzsetvalof{bipoles/twoport/text}{#1}%
-}}
-\ctikzset{text in/.style={t1=#1}}
-\ctikzset{t1/.code={%
- \ctikzsetvalof{bipoles/twoport/text in}{#1}%
-}}
-\ctikzset{text out/.style={t2=#1}}
-\ctikzset{t2/.code={%
- \ctikzsetvalof{bipoles/twoport/text out}{#1}%
-}}
-\ctikzset{bipoles/vco/width/.initial=.7}
-\ctikzset{bipoles/bandpass/width/.initial=.7}
-\ctikzset{bipoles/bandstop/width/.initial=.7}
-\ctikzset{bipoles/highpass/width/.initial=.7}
-\ctikzset{bipoles/lowpass/width/.initial=.7}
-\ctikzset{bipoles/allpass/width/.initial=.7}
-\ctikzset{bipoles/adc/width/.initial=.7}
-\ctikzset{bipoles/dac/width/.initial=.7}
-\ctikzset{bipoles/dsp/width/.initial=.7}
-\ctikzset{bipoles/fft/width/.initial=.7}
-\ctikzset{bipoles/amp/width/.initial=.7}
-\ctikzset{bipoles/vamp/width/.initial=.7}
-\ctikzset{bipoles/piattenuator/width/.initial=.7}
-\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
-\ctikzset{bipoles/tattenuator/width/.initial=.7}
-\ctikzset{bipoles/vtattenuator/width/.initial=.7}
-\ctikzset{bipoles/phaseshifter/width/.initial=.7}
-\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
-\ctikzset{bipoles/detector/width/.initial=.7}
-\ctikzset{tripoles/mixer/width/.initial=0.7}
-\ctikzset{tripoles/adder/width/.initial=0.7}
-\ctikzset{tripoles/circulator/width/.initial=.7}
-\ctikzset{tripoles/oscillator/width/.initial=.7}
-
-\ctikzset{tripoles/wilkinson/height/.initial=1.3}
-\ctikzset{tripoles/wilkinson/width/.initial=1.3}
-
-\ctikzset{tripoles/splitter/height/.initial=1.3}
-\ctikzset{tripoles/splitter/width/.initial=1.3}
-
-\ctikzset{tripoles/mzm/height/.initial=1.3}
-\ctikzset{tripoles/mzm/width/.initial=1.3}
-%%>>>
-
-% Transistors %<<<1
-
-\newif\ifpgf@circuit@trans@depletiontype
-\pgf@circuit@trans@depletiontypefalse
-
-\newif\ifpgf@circuit@mos@arrows
-\ctikzset{tripoles/mos style/.is choice}
-\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
-\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
-\pgfkeys{/tikz/arrowmos/.add code={}{\pgf@circuit@mos@arrowstrue}}
-\pgfkeys{/tikz/noarrowmos/.add code={}{\pgf@circuit@mos@arrowsfalse}}
-
-% Fixed label positions
-\newif\ifpgf@circuit@transisors@fixlabels
-\pgf@circuit@transisors@fixlabelstrue
-\pgfkeys{/tikz/center transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
-\ctikzset{fix transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
-\pgfkeys{/tikz/legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
-\ctikzset{legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
-
-% Option solderdot for fet
-\newif\ifpgf@circuit@fet@solderdot
-\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
-\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
-
-% Option bodydiode for fet
-\newif\ifpgf@circuit@fet@bodydiode
-\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
-\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
-
-% Option draw fet without gate connection
-\newif\ifpgf@circuit@bpt@drawgate
-\pgf@circuit@bpt@drawgatetrue
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
-
-% Option draw bpt with schottky base
-\newif\ifpgf@circuit@bpt@schottky
-\pgf@circuit@bpt@schottkyfalse
-\pgfkeys{/tikz/schottky base/.add code={}{\pgf@circuit@bpt@schottkytrue}}
-\ctikzset{schottky base/.add code={}{\pgf@circuit@bpt@schottkytrue}}
-\pgfkeys{/tikz/no schottky base/.add code={}{\pgf@circuit@bpt@schottkyfalse}}
-\ctikzset{no schottky base/.add code={}{\pgf@circuit@bpt@schottkyfalse}}
-\ctikzset{tripoles/schottky base size/.initial=0.05}
-
-% Option draw bpt without base connection
-\newif\ifpgf@circuit@bpt@drawbase
-\pgf@circuit@bpt@drawbasetrue
-\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
-
-% Option draw bpt with optical input
-\newif\ifpgf@circuit@bpt@drawphoto
-\pgf@circuit@bpt@drawphotofalse
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
-
-% Option draw fet without bulk connection -- Added by Burak Kelleci
-\newif\ifpgf@circuit@bpt@drawbulk
-\pgfkeys{/tikz/bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
-\ctikzset{bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
-\pgfkeys{/tikz/nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
-\ctikzset{nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
-
-% Option draw pmos with empty circle
-\newif\ifpgf@circuit@pmos@emptycircle
-\pgf@circuit@pmos@emptycirclefalse
-\ctikzset{tripoles/pmos style/.is choice}
-\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
-% Option draw pmos with no circle
-\newif\ifpgf@circuit@pmos@nocircle
-\pgf@circuit@pmos@nocirclefalse
-\pgfkeys{/tikz/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
-\ctikzset{tripoles/pmos style/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
-% back to normal
-\pgfkeys{/tikz/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
-\ctikzset{tripoles/pmos style/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
-% arrows at the end, the correct way
-\newif\ifpgf@circuit@trans@arrowatend
-\pgf@circuit@trans@arrowatendfalse
-\ctikzset{transistors/arrow pos/.is choice}
-\ctikzset{transistors/arrow pos/legacy/.code={\pgf@circuit@trans@arrowatendfalse}}
-\ctikzset{transistors/arrow pos/end/.code={\pgf@circuit@trans@arrowatendtrue}}
-
-\newif\ifpgf@circuit@trans@ntype
-\pgf@circuit@trans@ntypetrue %default true
-%\newif\ifpgf@circuit@trans@ptype
-%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
-\ctikzset{tripoles/nmos/width/.initial=.7}
-\ctikzset{tripoles/nmos/gate height/.initial=.35}
-\ctikzset{tripoles/nmos/base height/.initial=.5}
-\ctikzset{tripoles/nmos/conn height/.initial=0}
-\ctikzset{tripoles/nmos/height/.initial=1.1}
-\ctikzset{tripoles/nmos/base width/.initial=.5}
-\ctikzset{tripoles/nmos/gate width/.initial=.62}
-\ctikzset{tripoles/nmos/arrow pos/.initial=.6}
-\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nmos/curr direction/.initial=1}
-
-\ctikzset{tripoles/pmos/width/.initial=.7}
-\ctikzset{tripoles/pmos/gate height/.initial=.35}
-\ctikzset{tripoles/pmos/base height/.initial=.5}
-\ctikzset{tripoles/pmos/conn height/.initial=0}
-\ctikzset{tripoles/pmos/height/.initial=1.1}
-\ctikzset{tripoles/pmos/base width/.initial=.5}
-\ctikzset{tripoles/pmos/gate width/.initial=.62}
-\ctikzset{tripoles/pmos/arrow pos/.initial=.4}
-\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pmos/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nmosd/width/.initial=.7}
-\ctikzset{tripoles/nmosd/gate height/.initial=.35}
-\ctikzset{tripoles/nmosd/base height/.initial=.5}
-\ctikzset{tripoles/nmosd/conn height/.initial=0}
-\ctikzset{tripoles/nmosd/height/.initial=1.1}
-\ctikzset{tripoles/nmosd/base width/.initial=.5}
-\ctikzset{tripoles/nmosd/gate width/.initial=.62}
-\ctikzset{tripoles/nmosd/arrow pos/.initial=.6}
-\ctikzset{tripoles/nmosd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nmosd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nmosd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nmosd/curr direction/.initial=1}
-\ctikzset{tripoles/nmosd/depletion width/.initial=.1}
-\ctikzset{tripoles/nmosd/depletion color/.initial=default}
-
-\ctikzset{tripoles/pmosd/width/.initial=.7}
-\ctikzset{tripoles/pmosd/gate height/.initial=.35}
-\ctikzset{tripoles/pmosd/base height/.initial=.5}
-\ctikzset{tripoles/pmosd/conn height/.initial=0}
-\ctikzset{tripoles/pmosd/height/.initial=1.1}
-\ctikzset{tripoles/pmosd/base width/.initial=.5}
-\ctikzset{tripoles/pmosd/gate width/.initial=.62}
-\ctikzset{tripoles/pmosd/arrow pos/.initial=.4}
-\ctikzset{tripoles/pmosd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pmosd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pmosd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pmosd/curr direction/.initial=-1}
-\ctikzset{tripoles/pmosd/depletion width/.initial=.1}
-\ctikzset{tripoles/pmosd/depletion color/.initial=default}
-\ctikzset{tripoles/hemt/width/.initial=.7}
-\ctikzset{tripoles/hemt/gate height/.initial=.35}
-\ctikzset{tripoles/hemt/base height/.initial=.5}
-\ctikzset{tripoles/hemt/conn height/.initial=0}
-\ctikzset{tripoles/hemt/height/.initial=1.1}
-\ctikzset{tripoles/hemt/base width/.initial=.5}
-\ctikzset{tripoles/hemt/gate width/.initial=.62}
-\ctikzset{tripoles/hemt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/hemt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/hemt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/hemt/curr direction/.initial=1}
-
-\ctikzset{tripoles/nfet/width/.initial=.7}
-\ctikzset{tripoles/nfet/gate height/.initial=.35}
-\ctikzset{tripoles/nfet/base height/.initial=.5}
-\ctikzset{tripoles/nfet/conn height/.initial=0}
-\ctikzset{tripoles/nfet/height/.initial=1.1}
-\ctikzset{tripoles/nfet/base width/.initial=.5}
-\ctikzset{tripoles/nfet/gate width/.initial=.62}
-\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pfet/width/.initial=.7}
-\ctikzset{tripoles/pfet/gate height/.initial=.35}
-\ctikzset{tripoles/pfet/base height/.initial=.5}
-\ctikzset{tripoles/pfet/conn height/.initial=0}
-\ctikzset{tripoles/pfet/height/.initial=1.1}
-\ctikzset{tripoles/pfet/base width/.initial=.5}
-\ctikzset{tripoles/pfet/gate width/.initial=.62}
-\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nfetd/width/.initial=.7}
-\ctikzset{tripoles/nfetd/gate height/.initial=.35}
-\ctikzset{tripoles/nfetd/base height/.initial=.5}
-\ctikzset{tripoles/nfetd/conn height/.initial=0}
-\ctikzset{tripoles/nfetd/height/.initial=1.1}
-\ctikzset{tripoles/nfetd/base width/.initial=.5}
-\ctikzset{tripoles/nfetd/gate width/.initial=.62}
-\ctikzset{tripoles/nfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nfetd/curr direction/.initial=1}
-
-\ctikzset{tripoles/pfetd/width/.initial=.7}
-\ctikzset{tripoles/pfetd/gate height/.initial=.35}
-\ctikzset{tripoles/pfetd/base height/.initial=.5}
-\ctikzset{tripoles/pfetd/conn height/.initial=0}
-\ctikzset{tripoles/pfetd/height/.initial=1.1}
-\ctikzset{tripoles/pfetd/base width/.initial=.5}
-\ctikzset{tripoles/pfetd/gate width/.initial=.62}
-\ctikzset{tripoles/pfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pfetd/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigfete/width/.initial=.7}
-\ctikzset{tripoles/nigfete/gate height/.initial=.35}
-\ctikzset{tripoles/nigfete/base height/.initial=.5}
-\ctikzset{tripoles/nigfete/conn height/.initial=.35}
-\ctikzset{tripoles/nigfete/height/.initial=1.1}
-\ctikzset{tripoles/nigfete/base width/.initial=.5}
-\ctikzset{tripoles/nigfete/gate width/.initial=.62}
-\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfete/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetd/width/.initial=.7}
-\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetd/base height/.initial=.5}
-\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetd/height/.initial=1.1}
-\ctikzset{tripoles/nigfetd/base width/.initial=.5}
-\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
-
-\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
-
-\ctikzset{tripoles/pigfete/width/.initial=.7}
-\ctikzset{tripoles/pigfete/gate height/.initial=.35}
-\ctikzset{tripoles/pigfete/base height/.initial=.5}
-\ctikzset{tripoles/pigfete/conn height/.initial=.35}
-\ctikzset{tripoles/pigfete/height/.initial=1.1}
-\ctikzset{tripoles/pigfete/base width/.initial=.5}
-\ctikzset{tripoles/pigfete/gate width/.initial=.62}
-\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetd/width/.initial=.7}
-\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetd/base height/.initial=.5}
-\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetd/height/.initial=1.1}
-\ctikzset{tripoles/pigfetd/base width/.initial=.5}
-\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
-\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
-\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
-\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
-\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
-\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
-
-\ctikzset{tripoles/npn/width/.initial=.6}
-\ctikzset{tripoles/npn/base height/.initial=.45}
-\ctikzset{tripoles/npn/base height 2/.initial=.15}
-\ctikzset{tripoles/npn/base height/.initial=.4}
-\ctikzset{tripoles/npn/conn height/.initial=0}
-\ctikzset{tripoles/npn/height/.initial=1.1}
-\ctikzset{tripoles/npn/base width/.initial=.5}
-\ctikzset{tripoles/npn/arrow pos/.initial=.5}
-\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/npn/curr direction/.initial=1}
-
-\ctikzset{tripoles/pnp/width/.initial=.6}
-\ctikzset{tripoles/pnp/base height/.initial=.45}
-\ctikzset{tripoles/pnp/base height 2/.initial=.15}
-\ctikzset{tripoles/pnp/base height/.initial=.4}
-\ctikzset{tripoles/pnp/conn height/.initial=0}
-\ctikzset{tripoles/pnp/height/.initial=1.1}
-\ctikzset{tripoles/pnp/base width/.initial=.5}
-\ctikzset{tripoles/pnp/arrow pos/.initial=.5}
-\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pnp/curr direction/.initial=-1}
-
-\ctikzset{tripoles/pigbt/width/.initial=.6}
-\ctikzset{tripoles/pigbt/gate height/.initial=.45}
-\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/pigbt/base height/.initial=.4}
-\ctikzset{tripoles/pigbt/outer base height/.initial=.4}
-\ctikzset{tripoles/pigbt/outer base thickness/.initial=1}
-\ctikzset{tripoles/pigbt/conn height/.initial=0}
-\ctikzset{tripoles/pigbt/height/.initial=1.1}
-\ctikzset{tripoles/pigbt/gate width/.initial=.62}
-\ctikzset{tripoles/pigbt/base width/.initial=.5}
-\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/nigbt/width/.initial=.6}
-\ctikzset{tripoles/nigbt/gate height/.initial=.45}
-\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/nigbt/base height/.initial=.4}
-\ctikzset{tripoles/nigbt/outer base height/.initial=.4}
-\ctikzset{tripoles/nigbt/outer base thickness/.initial=1}
-\ctikzset{tripoles/nigbt/conn height/.initial=0}
-\ctikzset{tripoles/nigbt/height/.initial=1.1}
-\ctikzset{tripoles/nigbt/gate width/.initial=.62}
-\ctikzset{tripoles/nigbt/base width/.initial=.5}
-\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/nigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/Lpigbt/width/.initial=.6}
-\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/outer base height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/outer base thickness/.initial=1}
-\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
-
-\ctikzset{tripoles/Lnigbt/width/.initial=.6}
-\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
-\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
-\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/outer base height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/outer base thickness/.initial=1}
-\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
-\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
-\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
-\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
-\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
-
-\ctikzset{tripoles/igbt/outer base height/.code={
- \ctikzset{tripoles/nigbt/outer base height/.initial=#1}
- \ctikzset{tripoles/pigbt/outer base height/.initial=#1}
- \ctikzset{tripoles/Lnigbt/outer base height/.initial=#1}
- \ctikzset{tripoles/Lpigbt/outer base height/.initial=#1}
- \ctikzset{tripoles/Lnigbt/conn height/.initial=#1}
- \ctikzset{tripoles/Lpigbt/conn height/.initial=#1}
-}}
-\ctikzset{tripoles/igbt/outer base thickness/.code={
- \ctikzset{tripoles/nigbt/outer base thickness=#1}
- \ctikzset{tripoles/pigbt/outer base thickness=#1}
- \ctikzset{tripoles/Lnigbt/outer base thickness=#1}
- \ctikzset{tripoles/Lpigbt/outer base thickness=#1}
-}}
-
-\ctikzset{tripoles/njfet/width/.initial=.7}
-\ctikzset{tripoles/njfet/gate height/.initial=.5}
-\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/njfet/gate width/.initial=.5}
-\ctikzset{tripoles/njfet/conn height/.initial=.35}
-\ctikzset{tripoles/njfet/height/.initial=1.1}
-\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/njfet/curr direction/.initial=1}
-
-\ctikzset{tripoles/pjfet/width/.initial=.7}
-\ctikzset{tripoles/pjfet/gate height/.initial=.5}
-\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
-\ctikzset{tripoles/pjfet/gate width/.initial=.5}
-\ctikzset{tripoles/pjfet/conn height/.initial=.35}
-\ctikzset{tripoles/pjfet/height/.initial=1.1}
-\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
-
-\ctikzset{tripoles/isfet/width/.initial=1}
-\ctikzset{tripoles/isfet/gate height/.initial=.35}
-\ctikzset{tripoles/isfet/base height/.initial=.5}
-\ctikzset{tripoles/isfet/height/.initial=1.1}
-\ctikzset{tripoles/isfet/base width/.initial=.3}
-\ctikzset{tripoles/isfet/gate width/.initial=.5}
-\ctikzset{tripoles/isfet/conn height/.initial=0}
-\ctikzset{tripoles/isfet/wave width/.initial=.16}
-\ctikzset{tripoles/isfet/wave amp/.initial=.06}
-\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
-\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
-\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
-\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
-\ctikzset{tripoles/isfet/curr direction/.initial=1}
-%
-% multi-emitter and multi-collector BJTs by Romano Giannetti
-%
-\ctikzset{tripoles/bjt/emitters/.initial=1}
-\ctikzset{tripoles/bjt/collectors/.initial=1}
-\pgfkeys{/tikz/emitters/.add code={}{\ctikzset{tripoles/bjt/emitters=#1}}}
-\pgfkeys{/tikz/collectors/.add code={}{\ctikzset{tripoles/bjt/collectors=#1}}}
-\ctikzset{tripoles/bjt/pins width/.initial=0.3}
-\pgfkeys{/tikz/bjt pins width/.add code={}{\ctikzset{tripoles/bjt/pins width=#1}}}
-\ctikzset{tripoles/bjt/multi height/.initial=.5}
-\pgfkeys{/tikz/bjt multi height/.add code={}{\ctikzset{tripoles/bjt/multi height/.initial=#1}}}
-%
-\ctikzset{tripoles/bjt/width/.initial=.3}
-\ctikzset{tripoles/bjt/base height 2/.initial=.4}
-\ctikzset{tripoles/bjt/base height/.initial=1.1}
-\ctikzset{tripoles/bjt/height/.initial=.4}
-\ctikzset{tripoles/bjt/base width/.initial=1}
-\ctikzset{tripoles/bjt/arrow pos/.initial=.5}
-% do NOT touch these two!
-\ctikzset{tripoles/bjt/npn/curr direction/.initial=1}
-\ctikzset{tripoles/bjt/pnp/curr direction/.initial=-1}
-
-%% transistors stop here
-%%>>>
-
-% Electronic tubes: diodetube, triode, tetrode and pentode%<<<1
-\ctikzset{tubes/width/.initial=1} % relative width
-\ctikzset{tubes/height/.initial=1.4} % relative height
-\ctikzset{tubes/tube radius/.initial=0.40} % radius of tube circle
-\ctikzset{tubes/anode distance/.initial=0.40} % distance from center
-\ctikzset{tubes/anode width/.initial=0.40} % width of an anode/plate
-\ctikzset{tubes/grid protrusion/.initial=0.25} % distance from center
-\ctikzset{tubes/grid dashes/.initial=5} % number of grid dashes
-\ctikzset{tubes/grid separation/.initial=0.2} % separation between grids
-\ctikzset{tubes/grid shift/.initial=0.0} % y shift grids from center
-\ctikzset{tubes/cathode distance/.initial=0.40} % distance from grid
-\ctikzset{tubes/cathode width/.initial=0.40} % width of an cathode
-\ctikzset{tubes/cathode corners/.initial=0.06} % corners of the cathode wire
-\ctikzset{tubes/cathode right extend/.initial=0.075} % extension at the right side
-\ctikzset{tubes/filament distance/.initial=0.1} % distance from cathode
-\ctikzset{tubes/filament angle/.initial=15} % Angle from centerpoint
-
-\newif\ifpgf@circuit@tubes@filament\pgf@circuit@tubes@filamentfalse
-\pgfkeys{/tikz/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
-\ctikzset{tubes/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
-\newif\ifpgf@circuit@tubes@nocathode\pgf@circuit@tubes@nocathodefalse
-\pgfkeys{/tikz/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
-\ctikzset{tubes/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
-\newif\ifpgf@circuit@tubes@fullcathode\pgf@circuit@tubes@fullcathodefalse
-\pgfkeys{/tikz/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
-\ctikzset{tubes/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}%
-%>>>
-
-%% Logic ports%<<<1
-%% beware that the third option is in IEEE ports in pgfcircmultipoles.tex
-
-% switches for logic gates
-%
-\pgfkeys{/tikz/number inputs/.initial=0}
-\pgfkeys{/tikz/number inputs/.default=0}
-
-\newif\ifpgf@circuit@europeanlogicport
-\ctikzset{logic ports/.is choice}
-\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue
- \tikzset{and port/.style={shape=european and port}}%
- \tikzset{or port/.style={shape=european or port}}%
- \tikzset{xor port/.style={shape=european xor port}}%
- \tikzset{buffer port/.style={shape=european buffer port}}%
- \tikzset{not port/.style={shape=european not port}}%
- \tikzset{nand port/.style={shape=european nand port}}%
- \tikzset{nor port/.style={shape=european nor port}}%
- \tikzset{xnor port/.style={shape=european xnor port}}%
- % there is no Schmitt ports in european style (yet)
- \tikzset{schmitt port/.style={shape=schmitt}}%
- \tikzset{invschmitt port/.style={shape=invschmitt}}%
-}}
-\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse
- \tikzset{and port/.style={shape=american and port}}%
- \tikzset{or port/.style={shape=american or port}}%
- \tikzset{xor port/.style={shape=american xor port}}%
- \tikzset{buffer port/.style={shape=american buffer port}}%
- \tikzset{not port/.style={shape=american not port}}%
- \tikzset{nand port/.style={shape=american nand port}}%
- \tikzset{nor port/.style={shape=american nor port}}%
- \tikzset{xnor port/.style={shape=american xnor port}}%
- \tikzset{schmitt port/.style={shape=schmitt}}%
- \tikzset{invschmitt port/.style={shape=invschmitt}}%
-}}
-
-\ctikzset{logic ports origin/.is choice}
-\ctikzset{logic ports origin/legacy/.code={
- \ctikzset{tripoles/american and port/origin/.initial=0.8}%
- \ctikzset{tripoles/american nand port/origin/.initial=0.8}%
- \ctikzset{tripoles/american nor port/origin/.initial=0.8}%
- \ctikzset{tripoles/american or port/origin/.initial=0.8}%
- \ctikzset{tripoles/american xor port/origin/.initial=0.8}%
- \ctikzset{tripoles/american xnor port/origin/.initial=0.8}%
- \ctikzset{tripoles/european and port/origin/.initial=0.8}%
- \ctikzset{tripoles/european nand port/origin/.initial=0.8}%
- \ctikzset{tripoles/european or port/origin/.initial=0.8}%
- \ctikzset{tripoles/european nor port/origin/.initial=0.8}%
- \ctikzset{tripoles/european xor port/origin/.initial=0.8}%
- \ctikzset{tripoles/european xnor port/origin/.initial=0.8}%
- \ctikzset{tripoles/european buffer port/origin/.initial=0.8}%
- \ctikzset{tripoles/european not port/origin/.initial=0.8}%
- }%
-}
-\ctikzset{logic ports origin/center/.code={%
- \ctikzset{tripoles/american and port/origin/.initial=0}%
- \ctikzset{tripoles/american nand port/origin/.initial=0}%
- \ctikzset{tripoles/american nor port/origin/.initial=0}%
- \ctikzset{tripoles/american or port/origin/.initial=0}%
- \ctikzset{tripoles/american xor port/origin/.initial=0}%
- \ctikzset{tripoles/american xnor port/origin/.initial=0}%
- \ctikzset{tripoles/european and port/origin/.initial=0}%
- \ctikzset{tripoles/european nand port/origin/.initial=0}%
- \ctikzset{tripoles/european or port/origin/.initial=0}%
- \ctikzset{tripoles/european nor port/origin/.initial=0}%
- \ctikzset{tripoles/european xor port/origin/.initial=0}%
- \ctikzset{tripoles/european xnor port/origin/.initial=0}%
- \ctikzset{tripoles/european buffer port/origin/.initial=0}%
- \ctikzset{tripoles/european not port/origin/.initial=0}%
- }%
-}
-
-\newif\ifpgfcirc@roundy@or@shapes\pgfcirc@roundy@or@shapesfalse
-\ctikzset{american or shape/.is choice}
-\ctikzset{american or shape/roundy/.code={\pgfcirc@roundy@or@shapestrue}}
-\ctikzset{american or shape/pointy/.code={\pgfcirc@roundy@or@shapesfalse}}
-
-\newif\ifpgfcirc@draw@input@leads\pgfcirc@draw@input@leadstrue
-\ctikzset{logic ports draw input leads/.is choice}
-\ctikzset{logic ports draw input leads/true/.code={\pgfcirc@draw@input@leadstrue}}
-\ctikzset{logic ports draw input leads/false/.code={\pgfcirc@draw@input@leadsfalse}}
-\tikzset{input leads/.code={\pgfcirc@draw@input@leadstrue}}
-\tikzset{no input leads/.code={\pgfcirc@draw@input@leadsfalse}}
-
-\newif\ifpgfcirc@draw@output@leads\pgfcirc@draw@output@leadstrue
-\ctikzset{logic ports draw output leads/.is choice}
-\ctikzset{logic ports draw output leads/true/.code={\pgfcirc@draw@output@leadstrue}}
-\ctikzset{logic ports draw output leads/false/.code={\pgfcirc@draw@output@leadsfalse}}
-\tikzset{output leads/.code={\pgfcirc@draw@output@leadstrue}}
-\tikzset{no output leads/.code={\pgfcirc@draw@output@leadsfalse}}
-
-\ctikzset{logic ports draw leads/.is choice}
-\ctikzset{logic ports draw leads/true/.code={\pgfcirc@draw@output@leadstrue\pgfcirc@draw@input@leadstrue}}
-\ctikzset{logic ports draw leads/false/.code={\pgfcirc@draw@output@leadsfalse\pgfcirc@draw@input@leadsfalse}}
-\tikzset{all leads/.code={\pgfcirc@draw@output@leadstrue\pgfcirc@draw@input@leadstrue}}
-\tikzset{no leads/.code={\pgfcirc@draw@output@leadsfalse\pgfcirc@draw@input@leadsfalse}}
-
-% adding a different style of xnor port
-% see https://github.com/circuitikz/circuitikz/issues/467
-\ctikzset{european xnor style/.is choice}
-\ctikzset{european xnor style/default/.code={%
- \pgfcircdeclareeurologicport{xnor}{$=1$}{\pgf@circ@res@count}{not}}%
-}
-\ctikzset{european xnor style/direct/.code={%
- \pgfcircdeclareeurologicport{xnor}{$=$}{\pgf@circ@res@count}{}}%
-}
-
-
-% old, legacy keys that should be killed over
-\ctikzset{bipoles/buffer/height/.initial=1}
-\ctikzset{bipoles/buffer/width/.initial=1}
-\ctikzset{bipoles/not port/width/.initial=1}
-\ctikzset{bipoles/not port/height/.initial=.8}
-\ctikzset{bipoles/not port/circle width/.initial=.15}
-
-\ctikzset{tripoles/american and port/width/.initial=1.1}
-\ctikzset{tripoles/american and port/height/.initial=.8}
-\ctikzset{tripoles/american and port/port width/.initial=.7}
-\ctikzset{tripoles/american and port/input height/.initial=.5}
-\ctikzset{tripoles/american nand port/width/.initial=1.1}
-\ctikzset{tripoles/american nand port/height/.initial=.8}
-\ctikzset{tripoles/american nand port/port width/.initial=.7}
-\ctikzset{tripoles/american nand port/circle width/.initial=.15}
-\ctikzset{tripoles/american nand port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/width/.initial=1.1}
-\ctikzset{tripoles/american or port/height/.initial=.8}
-\ctikzset{tripoles/american or port/port width/.initial=.7}
-\ctikzset{tripoles/american or port/input height/.initial=.5}
-\ctikzset{tripoles/american or port/input skip/.initial=.25}
-\ctikzset{tripoles/american or port/aaa/.initial=.6}
-\ctikzset{tripoles/american or port/bbb/.initial=.4}
-\ctikzset{tripoles/american or port/ccc/.initial=.5}
-\ctikzset{tripoles/american or port/ddd/.initial=.0}
-\ctikzset{tripoles/american nor port/width/.initial=1.1}
-\ctikzset{tripoles/american nor port/height/.initial=.8}
-\ctikzset{tripoles/american nor port/port width/.initial=.7}
-\ctikzset{tripoles/american nor port/input height/.initial=.5}
-\ctikzset{tripoles/american nor port/input skip/.initial=.25}
-\ctikzset{tripoles/american nor port/circle width/.initial=.15}
-\ctikzset{tripoles/american nor port/aaa/.initial=.6}
-\ctikzset{tripoles/american nor port/bbb/.initial=.4}
-\ctikzset{tripoles/american nor port/ccc/.initial=.5}
-\ctikzset{tripoles/american nor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xor port/width/.initial=1.1}
-\ctikzset{tripoles/american xor port/height/.initial=.8}
-\ctikzset{tripoles/american xor port/port width/.initial=.7}
-\ctikzset{tripoles/american xor port/input height/.initial=.5}
-\ctikzset{tripoles/american xor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xor port/distance/.initial=.1}
-\ctikzset{tripoles/american xnor port/width/.initial=1.1}
-\ctikzset{tripoles/american xnor port/height/.initial=.8}
-\ctikzset{tripoles/american xnor port/port width/.initial=.7}
-\ctikzset{tripoles/american xnor port/input height/.initial=.5}
-\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
-\ctikzset{tripoles/american xnor port/distance/.initial=.1}
-\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
-\ctikzset{tripoles/american and port/origin/.initial=0.8}
-\ctikzset{tripoles/american and port/inputs/.initial=2}
-% variable number of inputs
-\ctikzset{tripoles/american nand port/origin/.initial=0.8}
-\ctikzset{tripoles/american nand port/inputs/.initial=2}
-\ctikzset{tripoles/american nor port/origin/.initial=0.8}
-\ctikzset{tripoles/american nor port/inputs/.initial=2}
-\ctikzset{tripoles/american nor port/angle/.initial=70}
-\ctikzset{tripoles/american nor port/inner/.initial=0.3}
-\ctikzset{tripoles/american or port/origin/.initial=0.8}
-\ctikzset{tripoles/american or port/inputs/.initial=2}
-\ctikzset{tripoles/american or port/angle/.initial=70}
-\ctikzset{tripoles/american or port/inner/.initial=0.3}
-\ctikzset{tripoles/american xor port/origin/.initial=0.8}
-\ctikzset{tripoles/american xor port/inputs/.initial=2}
-\ctikzset{tripoles/american xor port/angle/.initial=70}
-\ctikzset{tripoles/american xor port/inner/.initial=0.3}
-\ctikzset{tripoles/american xnor port/origin/.initial=0.8}
-\ctikzset{tripoles/american xnor port/inputs/.initial=2}
-\ctikzset{tripoles/american xnor port/angle/.initial=70}
-\ctikzset{tripoles/american xnor port/inner/.initial=0.3}
-
-\ctikzset{tripoles/european and port/width/.initial=1.4}
-\ctikzset{tripoles/european and port/height/.initial=.65}
-\ctikzset{tripoles/european and port/reserved/.initial=.6}
-\ctikzset{tripoles/european and port/input height/.initial=.6}
-\ctikzset{tripoles/european or port/width/.initial=1.4}
-\ctikzset{tripoles/european or port/height/.initial=.65}
-\ctikzset{tripoles/european or port/reserved/.initial=.6}
-\ctikzset{tripoles/european or port/input height/.initial=.6}
-\ctikzset{tripoles/european xor port/width/.initial=1.4}
-\ctikzset{tripoles/european xor port/height/.initial=.65}
-\ctikzset{tripoles/european xor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xor port/input height/.initial=.6}
-\ctikzset{tripoles/european nand port/width/.initial=1.4}
-\ctikzset{tripoles/european nand port/not height/.initial=.3}
-\ctikzset{tripoles/european nand port/not width/.initial=.8}
-\ctikzset{tripoles/european nand port/height/.initial=.65}
-\ctikzset{tripoles/european nand port/reserved/.initial=.6}
-\ctikzset{tripoles/european nand port/input height/.initial=.6}
-\ctikzset{tripoles/european buffer port/width/.initial=1.4}
-\ctikzset{tripoles/european buffer port/not height/.initial=.3}
-\ctikzset{tripoles/european buffer port/not width/.initial=.8}
-\ctikzset{tripoles/european buffer port/height/.initial=.65}
-\ctikzset{tripoles/european buffer port/reserved/.initial=.6}
-\ctikzset{tripoles/european buffer port/input height/.initial=0}
-\ctikzset{tripoles/european not port/width/.initial=1.4}
-\ctikzset{tripoles/european not port/not height/.initial=.3}
-\ctikzset{tripoles/european not port/not width/.initial=.8}
-\ctikzset{tripoles/european not port/height/.initial=.65}
-\ctikzset{tripoles/european not port/reserved/.initial=.6}
-\ctikzset{tripoles/european not port/input height/.initial=0}
-\ctikzset{tripoles/european xnor port/width/.initial=1.4}
-\ctikzset{tripoles/european xnor port/not height/.initial=.3}
-\ctikzset{tripoles/european xnor port/not width/.initial=.8}
-\ctikzset{tripoles/european xnor port/height/.initial=.65}
-\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
-\ctikzset{tripoles/european xnor port/input height/.initial=.6}
-\ctikzset{tripoles/european nor port/width/.initial=1.4}
-\ctikzset{tripoles/european nor port/not height/.initial=.3}
-\ctikzset{tripoles/european nor port/not width/.initial=.8}
-\ctikzset{tripoles/european nor port/height/.initial=.65}
-\ctikzset{tripoles/european nor port/reserved/.initial=.6}
-\ctikzset{tripoles/european nor port/input height/.initial=.6}
-% variable number of inputs
-\ctikzset{tripoles/european and port/origin/.initial=0.8}
-\ctikzset{tripoles/european and port/inputs/.initial=2}
-\ctikzset{tripoles/european nand port/origin/.initial=0.8}
-\ctikzset{tripoles/european nand port/inputs/.initial=2}
-\ctikzset{tripoles/european or port/origin/.initial=0.8}
-\ctikzset{tripoles/european or port/inputs/.initial=2}
-\ctikzset{tripoles/european nor port/origin/.initial=0.8}
-\ctikzset{tripoles/european nor port/inputs/.initial=2}
-\ctikzset{tripoles/european xor port/origin/.initial=0.8}
-\ctikzset{tripoles/european xor port/inputs/.initial=2}
-\ctikzset{tripoles/european xnor port/origin/.initial=0.8}
-\ctikzset{tripoles/european xnor port/inputs/.initial=2}
-\ctikzset{tripoles/european buffer port/origin/.initial=0.8}
-\ctikzset{tripoles/european buffer port/inputs/.initial=1}%
-\ctikzset{tripoles/european not port/origin/.initial=0.8}
-\ctikzset{tripoles/european not port/inputs/.initial=1}%
-%%% parameters that are not used anymore after multi-input
-%%% gates --- left for compatibility of source code.
-\ctikzset{tripoles/american xor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xor port/ddd/.initial=.0}
-\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
-\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
-\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
-\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
-%%>>>
-
-% flip flops and muxdemxes%<<<1
-
-%% flip-flop specific keys (most others are the same as chips)
-
-\ctikzset{multipoles/flipflop/font/.initial=\pgf@circ@font@small}
-\ctikzset{multipoles/flipflop/fontud/.initial=\pgf@circ@font@tiny}
-\ctikzset{multipoles/flipflop/width/.initial=1.2}
-\ctikzset{multipoles/flipflop/pin spacing/.initial=0.6}
-\ctikzset{multipoles/flipflop/clock wedge size/.initial=0.2}
-
-%% muxdemuxes keys
-
-\ctikzset{multipoles/muxdemux/base len/.initial=0.4}
-\ctikzset{multipoles/muxdemux/Lh/.initial=8.0}
-\ctikzset{multipoles/muxdemux/Rh/.initial=6.0}
-\ctikzset{multipoles/muxdemux/w/.initial=3.0}
-\ctikzset{multipoles/muxdemux/inset w/.initial=0.0}
-\ctikzset{multipoles/muxdemux/inset Lh/.initial=0.0}
-\ctikzset{multipoles/muxdemux/inset Rh/.initial=0.0}
-\ctikzset{multipoles/muxdemux/NL/.initial=8}
-\ctikzset{multipoles/muxdemux/NR/.initial=1}
-\ctikzset{multipoles/muxdemux/NB/.initial=3}
-\ctikzset{multipoles/muxdemux/NT/.initial=0}
-\ctikzset{multipoles/muxdemux/square pins/.initial=0}%
-%>>>
-
-% Amplifiers%<<<1
-%
-% switches for op amps
-% changing input polarity
-%
-\newif\ifpgf@circuit@oa@iplusup\pgf@circuit@oa@iplusupfalse
-\pgfkeys{/tikz/noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
-\ctikzset{noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
-\pgfkeys{/tikz/noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
-\ctikzset{noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
-%
-% changing output polarity (for fully diff objects)
-%
-\newif\ifpgf@circuit@oa@oplusup\pgf@circuit@oa@oplusuptrue
-\pgfkeys{/tikz/noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
-\ctikzset{noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
-\pgfkeys{/tikz/noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
-\ctikzset{noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
-
-% Operational amplifier
-\ctikzset{tripoles/op amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/op amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/op amp/height/.initial=1.4} % Total height
-\ctikzset{tripoles/op amp/input height/.initial=.5} % Input port vertical separation
-\ctikzset{tripoles/op amp/up pos/.initial=.45} % Top and bottom anchor position
-\ctikzset{tripoles/op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Fully differential operational amplifier
-\ctikzset{tripoles/fd op amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/fd op amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/fd op amp/height/.initial=1.4} % Total height
-\ctikzset{tripoles/fd op amp/input height/.initial=.5} % Input port vertical separation
-\ctikzset{tripoles/fd op amp/output height/.initial=.5} % Output port vertical separation
-\ctikzset{tripoles/fd op amp/up pos/.initial=.45} % Top and bottom anchor position
-\ctikzset{tripoles/fd op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-\ctikzset{tripoles/en amp/width/.initial=1.7}
-\ctikzset{tripoles/en amp/port width/.initial=.7}
-\ctikzset{tripoles/en amp/height/.initial=1.6}
-\ctikzset{tripoles/en amp/input height/.initial=.3}
-\ctikzset{tripoles/en amp/up pos/.initial=.45}
-\ctikzset{tripoles/en amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-\ctikzset{tripoles/en amp/font2/.initial=\pgf@circ@font@twelve} % Absolute font size needed!
-\ctikzset{tripoles/en amp/text/.initial={$\mathstrut{\triangleright}\,{\infty}$}}
-\tikzset{
- en amp text/.code = {%
- \ctikzsetvalof{tripoles/en amp/text}{#1}%
- },
- en amp text A/.code = {%
- \ctikzsetvalof{tripoles/en amp/text}{$\mathstrut{\triangleright}\,\mathrm{A}$}%
- },
-}
-
-% Transconductance amplifier
-\ctikzset{tripoles/gm amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/gm amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/gm amp/height/.initial=1.4} % Left side of the trapezoid
-\ctikzset{tripoles/gm amp/height 2/.initial=0.5} % Right side of the trapezoid
-\ctikzset{tripoles/gm amp/input height/.initial=.5} % Input port vertical separation
-\ctikzset{tripoles/gm amp/up pos/.initial=.45} % Top and bottom anchor position
-\ctikzset{tripoles/gm amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Instrumentation amplifier
-\ctikzset{tripoles/inst amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/inst amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/inst amp/height/.initial=1.4} % Left side of the trapezoid
-\ctikzset{tripoles/inst amp/height 2/.initial=0.6} % Right side of the trapezoid
-\ctikzset{tripoles/inst amp/input height/.initial=.5} % Input ports vertical separation
-\ctikzset{tripoles/inst amp/up pos/.initial=.4} % Top and bottom anchor position
-\ctikzset{tripoles/inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
-\ctikzset{tripoles/inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Instrumentation amplifier with differential output
-\ctikzset{tripoles/fd inst amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/fd inst amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/fd inst amp/height/.initial=1.4} % Left side of the trapezoid
-\ctikzset{tripoles/fd inst amp/height 2/.initial=0.6} % Right side of the trapezoid
-\ctikzset{tripoles/fd inst amp/input height/.initial=.5} % Input ports vertical separation
-\ctikzset{tripoles/fd inst amp/output height/.initial=.5} % Output ports vertical separation
-\ctikzset{tripoles/fd inst amp/up pos/.initial=.4} % Top and bottom anchor position
-\ctikzset{tripoles/fd inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
-\ctikzset{tripoles/fd inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Instrumentation amplifier with gain resistor terminals
-\ctikzset{tripoles/inst amp ra/width/.initial=2.4} % Total width
-\ctikzset{tripoles/inst amp ra/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/inst amp ra/height/.initial=2.9} % Left side of the trapezoid
-\ctikzset{tripoles/inst amp ra/height 2/.initial=0.4} % Right side of the trapezoid
-\ctikzset{tripoles/inst amp ra/input height/.initial=.7} % Input ports vertical separation
-\ctikzset{tripoles/inst amp ra/up pos/.initial=.4} % Top and bottom anchor position
-\ctikzset{tripoles/inst amp ra/refv pos/.initial=.7} % Top and bottom voltage reference position
-\ctikzset{tripoles/inst amp ra/ra pos/.initial=.6} % Gain resistor terminals vertical separation
-\ctikzset{tripoles/inst amp ra/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
-
-% Plain amplifier
-\ctikzset{tripoles/plain amp/width/.initial=1.7} % Total width
-\ctikzset{tripoles/plain amp/port width/.initial=.7} % Terminals length
-\ctikzset{tripoles/plain amp/height/.initial=1.4} % Total height
-\ctikzset{tripoles/plain amp/input height/.initial=.5} % Input ports vertical separation
-\ctikzset{tripoles/plain amp/up pos/.initial=.45} % Top and bottom anchor position
-
-% changing fonts and symbols of amplifiers
-\ctikzset{amplifiers/symbol font/.code={%
- \ctikzset{tripoles/inst amp ra/font=#1}%
- \ctikzset{tripoles/fd inst amp/font=#1}%
- \ctikzset{tripoles/inst amp/font=#1}%
- \ctikzset{tripoles/gm amp/font=#1}%
- \ctikzset{tripoles/en amp/font=#1}%
- \ctikzset{tripoles/fd op amp/font=#1}%
- \ctikzset{tripoles/op amp/font=#1}%
-}}
-\ctikzset{amplifiers/plus/.initial={$+$}}
-\ctikzset{amplifiers/minus/.initial={$-$}}
-\tikzset{amp symbol font/.code={%
- \ctikzset{amplifiers/symbol font={#1}}%
- }
-}
-\tikzset{amp plus/.code={\ctikzsetvalof{amplifiers/plus}{#1}}}
-\tikzset{amp minus/.code={\ctikzsetvalof{amplifiers/minus}{#1}}}
-\def\pgf@circ@ampli@plus{\ctikzvalof{amplifiers/plus}}
-\def\pgf@circ@ampli@minus{\ctikzvalof{amplifiers/minus}}
-%%>>>
-
-% Transformers%<<<1
-
-\ctikzset{quadpoles/transformer/inner/.initial=0.4}
-\ctikzset{quadpoles/transformer/width/.initial=1.5}
-\ctikzset{quadpoles/transformer/width1/.initial=.4}
-\ctikzset{quadpoles/transformer/height/.initial=1.5}
-\ctikzset{quadpoles/transformer/height1/.initial=.8}
-\ctikzset{quadpoles/transformer core/inner/.initial=0.4}
-\ctikzset{quadpoles/transformer core/width/.initial=1.5}
-\ctikzset{quadpoles/transformer core/height/.initial=1.5}
-\ctikzset{quadpoles/transformer core/core height/.initial=.5}
-\ctikzset{quadpoles/transformer core/core width/.initial=.05}
-\ctikzset{quadpoles/gyrator/inner/.initial=0.4}
-\ctikzset{quadpoles/gyrator/width/.initial=1.5}
-\ctikzset{quadpoles/gyrator/height/.initial=1.5}
-\ctikzset{quadpoles/fourport/width/.initial=1.3}
-\ctikzset{quadpoles/fourport/height/.initial=1.3}
-\ctikzset{quadpoles/coupler/width/.initial=1.3}
-\ctikzset{quadpoles/coupler/height/.initial=1.3}
-\ctikzset{quadpoles/coupler2/width/.initial=1.3}
-\ctikzset{quadpoles/coupler2/height/.initial=1.3}
-
-\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
-
-\ctikzset{quadpoles style/.is choice}
-\ctikzset{quadpoles style/inward/.code={% default value
- \ctikzset{quadpoles/transformer/inner=0.4}%
- \ctikzset{quadpoles/transformer/width=1.5}%
- \ctikzset{quadpoles/transformer core/inner=0.4}%
- \ctikzset{quadpoles/transformer core/width=1.5}%
- \ctikzset{quadpoles/gyrator/inner=0.4}%
- \ctikzset{quadpoles/gyrator/width=1.5}%
- }%
-}
-\ctikzset{quadpoles style/inline/.code={% now horizontal baffle
- \ctikzset{quadpoles/transformer/inner=1}%
- \ctikzset{quadpoles/transformer/width=0.6}%
- \ctikzset{quadpoles/transformer core/inner=1}%
- \ctikzset{quadpoles/transformer core/width=0.6}%
- \ctikzset{quadpoles/gyrator/inner=1} % FIXME
- \ctikzset{quadpoles/gyrator/width=0.6}%
- }%
-}
-%%>>>
-
-% seven segment displays by RGtti%<<<1
-
-\newif\ifpgf@circ@sevenseg@dot
-\newif\ifpgf@circ@sevenseg@box
-\def\pgf@circ@sevenseg@dotstate{empty}
-\ctikzset{seven seg/.is family}
-\ctikzset{seven seg/dot/.is choice}
-% none means no dot, not space for it. Empty means no dot, but space
-\ctikzset{seven seg/dot/none/.code={\pgf@circ@sevenseg@dotfalse}}
-\ctikzset{seven seg/dot/empty/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{empty}}}
-\ctikzset{seven seg/dot/off/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{off}}}
-\ctikzset{seven seg/dot/on/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{on}}}
-%
-\ctikzset{seven seg/width/.initial=0.4}% relative to \pgf@circ@Rlen
-\ctikzset{seven seg/thickness/.initial=4pt}% segment thickness
-\ctikzset{seven seg/segment sep/.initial=0.2pt}% gap between segments
-\ctikzset{seven seg/box sep/.initial=1pt}% external box gap
-\ctikzset{seven seg/color on/.initial=red}% color for segment "on"
-\ctikzset{seven seg/color off/.initial=gray!20!white} % ...and "off"
-\ctikzset{seven seg/box/.is choice}
-\ctikzset{seven seg/box/off/.code={\pgf@circ@sevenseg@boxfalse}}
-\ctikzset{seven seg/box/on/.code={\pgf@circ@sevenseg@boxtrue}}
-
-\ctikzset{seven seg/bits/.initial=0000000}
-
-\ctikzset{seven seg/value/.code={%
- \edef\@@tmp{#1}%
- \edef\@@n{0} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111110}\fi
- \edef\@@n{1} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110000}\fi
- \edef\@@n{2} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1101101}\fi
- \edef\@@n{3} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111001}\fi
- \edef\@@n{4} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110011}\fi
- \edef\@@n{5} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011011}\fi
- \edef\@@n{6} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011111}\fi
- \edef\@@n{7} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110000}\fi
- \edef\@@n{8} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111111}\fi
- \edef\@@n{9} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111011}\fi
- \edef\@@n{10}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
- \edef\@@n{11}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
- \edef\@@n{12}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
- \edef\@@n{13}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
- \edef\@@n{14}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
- \edef\@@n{15}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
- \edef\@@n{A} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
- \edef\@@n{B} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
- \edef\@@n{C} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
- \edef\@@n{D} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
- \edef\@@n{E} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
- \edef\@@n{F} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
- \edef\@@n{a} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
- \edef\@@n{b} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
- \edef\@@n{c} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
- \edef\@@n{d} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
- \edef\@@n{e} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
- \edef\@@n{f} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
- \edef\@@n{-} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0000001}\fi
-}}
-
-\tikzset{%
- seven segment val/.style args={#1dot#2box#3}{%
- shape=bare7seg,
- /tikz/circuitikz/seven seg/value=#1,
- /tikz/circuitikz/seven seg/dot=#2,
- /tikz/circuitikz/seven seg/box=#3,
- },
- seven segment bits/.style args={#1dot#2box#3}{%
- shape=bare7seg,
- /tikz/circuitikz/seven seg/bits=#1,
- /tikz/circuitikz/seven seg/dot=#2,
- /tikz/circuitikz/seven seg/box=#3,
- },
-}
-%%>>>
-
-% Options for twoports and blocks%<<<1
-
-% Option ">" for twoports
-\newif\ifpgf@circuit@inputarrow
-\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/.is choice}
-\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
-\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
-
-% Option "boxed" for nodes and twoports
-\newif\ifpgf@circuit@boxed
-\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
-\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
-\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
-
-% Option "dashed" for nodes and twoports
-\newif\ifpgf@circuit@dashed
-\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
-\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}%
-%>>>
-
-% Chips and Rotary switches (multipoles) %<<<1
-%
-\ctikzset{multipoles/thickness/.initial=2}
-\ctikzset{multipoles/font/.initial=\pgf@circ@font@tiny}
-% DIP (dual in line package) chips
-\ctikzset{multipoles/dipchip/width/.initial=1.2}
-\ctikzset{multipoles/dipchip/num pins/.initial=8}
-\ctikzset{multipoles/dipchip/pin spacing/.initial=0.4}
-\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/dipchip/num pins=#1}}}
-% QFP (quad flat package) chips
-\ctikzset{multipoles/qfpchip/num pins/.initial=8}
-\ctikzset{multipoles/qfpchip/pin spacing/.initial=0.4}
-\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/qfpchip/num pins=#1}}}
-% chip numbers
-\newif\ifpgf@circuit@chip@shownumbers\pgf@circuit@chip@shownumberstrue
-\pgfkeys{/tikz/show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
-\ctikzset{show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
-\pgfkeys{/tikz/hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
-\ctikzset{hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
-\newif\ifpgf@circuit@chip@straightnumbers\pgf@circuit@chip@straightnumberstrue
-\pgfkeys{/tikz/straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
-\ctikzset{straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
-\pgfkeys{/tikz/rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
-\ctikzset{rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
-% external chip pins
-\ctikzset{multipoles/external pins thickness/.initial=1}
-\ctikzset{multipoles/external pins width/.initial=0.2}
-\ctikzset{multipoles/external pad fraction/.initial=0}
-\pgfkeys{/tikz/external pins width/.add code={}{\ctikzset{multipoles/external pins width=#1}}}
-\pgfkeys{/tikz/external pad fraction/.add code={}{\ctikzset{multipoles/external pad fraction=#1}}}
-% topmarks
-\newif\ifpgf@circuit@chip@topmark\pgf@circuit@chip@topmarktrue
-\pgfkeys{/tikz/topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
-\ctikzset{topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
-\pgfkeys{/tikz/no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
-\ctikzset{no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
-
-% rotary switch by Romano
-\ctikzset{multipoles/rotary/thickness/.initial=1}
-\ctikzset{multipoles/rotary/shape/.initial=ocirc}
-\ctikzset{multipoles/rotary/channels/.initial=5}
-\ctikzset{multipoles/rotary/angle/.initial=60}
-\ctikzset{multipoles/rotary/wiper/.initial=20}
-\ctikzset{multipoles/rotary/arrow/.is choice}
-\newif\ifpgf@circ@rotaryarrow\pgf@circ@rotaryarrowfalse
-\newif\ifpgf@circ@rotaryarrow@cw\pgf@circ@rotaryarrow@cwfalse
-\newif\ifpgf@circ@rotaryarrow@ccw\pgf@circ@rotaryarrow@ccwfalse
-\ctikzset{multipoles/rotary/arrow/none/.code={\pgf@circ@rotaryarrowfalse\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwfalse}}
-\ctikzset{multipoles/rotary/arrow/both/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwtrue}}
-\ctikzset{multipoles/rotary/arrow/cw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwfalse}}
-\ctikzset{multipoles/rotary/arrow/ccw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwtrue}}
-
-\tikzset{%
- rotary switch/.style args={#1in#2wiper#3}{%
- shape=rotaryswitch,
- /tikz/circuitikz/multipoles/rotary/channels=#1,
- /tikz/circuitikz/multipoles/rotary/angle=#2,
- /tikz/circuitikz/multipoles/rotary/wiper=#3,
- },
- rotary switch -/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=none,
- },
- rotary switch <-/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=ccw,
- },
- rotary switch ->/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=cw,
- },
- rotary switch <->/.style args={#1in#2wiper#3}{
- rotary switch=#1 in #2 wiper #3,
- /tikz/circuitikz/multipoles/rotary/arrow=both,
- },
- % Notice that these should be the same as the initial values of the keys
- rotary switch/.default={5 in 60 wiper 20},
- rotary switch -/.default={5 in 60 wiper 20},
- rotary switch <-/.default={5 in 60 wiper 20},
- rotary switch ->/.default={5 in 60 wiper 20},
- rotary switch <->/.default={5 in 60 wiper 20},
-}
-%%>>>
-
-% %Mechanical section%<<<1
-\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
-\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
-\ctikzset{bipoles/spring/height/.initial=.5}
-\ctikzset{bipoles/spring/width/.initial=.5}
-\ctikzset{bipoles/inerter/height/.initial=.7}
-\ctikzset{bipoles/inerter/width/.initial=.175}
-\ctikzset{bipoles/mass/height/.initial=.55}
-\ctikzset{bipoles/mass/box height/.initial=.4}
-\ctikzset{bipoles/mass/width/.initial=.5}
-
-\ctikzset{bipoles/damper/height/.initial=.35}
-\ctikzset{bipoles/damper/length/.initial=.3}
-\ctikzset{bipoles/damper/width/.initial=.4}
-%%>>>
-
-% powerelectronic blocks%<<<1
-\ctikzset{bipoles/sacdc/width/.initial=.7}
-\ctikzset{bipoles/sdcac/width/.initial=.7}
-\ctikzset{bipoles/tacdc/width/.initial=.7}
-\ctikzset{bipoles/tdcac/width/.initial=.7}
-\ctikzset{quadpoles/gridnode/width/.initial=.7} %not sure if quadpole?
-%>>>
-
-% voltage and current options%<<<1
-%
-\ctikzset{current arrow scale/.initial=16}
-\ctikzset{current/distance/.initial = .5}
-
-\newif\ifpgf@circuit@europeancurrent
-\newif\ifpgf@circuit@europeanvoltage
-\newif\ifpgf@circuit@bipole@voltage@straight
-\newif\ifpgf@circuit@bipole@voltage@raised
-
-\ctikzset{voltage/.is choice}
-%
-% straight is expected to be a subset of european, so disable it in american style
-%
-\ctikzset{voltage/american/.code = {%
- \pgf@circuit@europeanvoltagefalse
- \pgf@circuit@bipole@voltage@straightfalse
- \pgf@circuit@bipole@voltage@raisedfalse
-}}
-\ctikzset{voltage/raised/.code = {%
- \pgf@circuit@europeanvoltagefalse
- \pgf@circuit@bipole@voltage@straightfalse
- \pgf@circuit@bipole@voltage@raisedtrue
-}}
-\ctikzset{voltage/european/.code = {%
- \pgf@circuit@europeanvoltagetrue
- \pgf@circuit@bipole@voltage@straightfalse
- \pgf@circuit@bipole@voltage@raisedfalse
-}}
-\ctikzset{voltage/straight/.code = {%
- \pgf@circuit@europeanvoltagetrue
- \pgf@circuit@bipole@voltage@straighttrue
- \pgf@circuit@bipole@voltage@raisedfalse
-}}
-\ctikzset{voltage/curved/.code = {%
- \pgf@circuit@europeanvoltagetrue
- \pgf@circuit@bipole@voltage@straightfalse
- \pgf@circuit@bipole@voltage@raisedfalse
-}}
-% are these used?
-\ctikzset{current/.is choice}
-\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse}
-\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue}
-
-% this is left for backward compatibility...
-\ctikzset{straight/.is choice}
-\ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}}
-\ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}}
-\ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight}
-%
-% voltage is used also to set parameters, apart for the /.is choice
-% above. I hope it is ok --- would be a mess otherwise
-%
-\ctikzset{voltage/shift/.initial=0.0} % shift form the cable of voltage symbols
-\ctikzset{voltage shift/.style={\circuitikzbasekey/voltage/shift=#1}}
-\tikzset{voltage shift/.style={\circuitikzbasekey/voltage/shift=#1}}
-%
-% keys for exporting voltage, current, flow anchors
-%
-\newif\ifpgfcirc@has@v\pgfcirc@has@vfalse
-\newif\ifpgfcirc@has@f\pgfcirc@has@ffalse
-\newif\ifpgfcirc@has@i\pgfcirc@has@ifalse
-\def\ctikzgetanchor#1#2{\csname pgfcirc@#1-#2-anchor\endcsname}
-\def\ctikzgetdirection#1{\csname pgfcirc@#1-direction\endcsname}
-%
-% shaping the +/- sign, see pgfcircvoltage.tex
-\ctikzset{voltage/american font/.initial={}}
-\ctikzset{voltage/american plus/.initial={$+$}}
-\ctikzset{voltage/american minus/.initial={$-$}}
-% here we start the voltage adjustments for special components.
-% default values:
-%
-% this is the distance of the "point" marking the voltage along the line
-% 0.0 is on the external nodes of the to path
-% 1.0 is cramped on the object
-% this can be overriden component by component
-\ctikzset{voltage/distance from node/.initial=.5}% pos, 0->1
-%
-% this is the distance from the line (perpendicular to) where the voltage is drawn.
-% It is global, and not adjustable by component (use the "label distance" or locally
-% if you need it)
-\ctikzset{voltage/distance from line/.initial=.08}% in \pgf@circ@scaled@Rlen units
-%
-% bend paramenters for european arc. You can override them component-based
-\ctikzset{voltage/bump b/.initial=1.5}
-%
-% generator voltages symbols or arrows (always straight) are put along the
-% 60 ... 120 angles of the symbol (don't ask why). The distance here is on the
-% center..angle line. It's called bump a because I don't know...
-%
-\ctikzset{voltage/bump a/.initial=1.2}
-%
-% these are the label distances FROM the drawings.
-% You can override them component by component.
-\ctikzset{voltage/european label distance/.initial=1.4}
-\ctikzset{voltage/straight label distance/.initial=1.4}
-\ctikzset{voltage/american label distance/.initial=1.4}
-% american open voltage adjusting
-%
-\newif\ifpgf@adjust@open@voltage\pgf@adjust@open@voltagetrue
-\ctikzset{open voltage position/.is choice}
-\ctikzset{open voltage position/center/.code={\pgf@adjust@open@voltagetrue}}
-\ctikzset{open voltage position/legacy/.code={\pgf@adjust@open@voltagefalse}}
-% bad names, kept for compatibility, don't use
-\ctikzset{american open voltage/.is choice}
-\ctikzset{american open voltage/center/.code={\pgf@adjust@open@voltagetrue}}
-\ctikzset{american open voltage/legacy/.code={\pgf@adjust@open@voltagefalse}}
-%
-% voltage and current styles
-%
-\tikzset{american currents/.style = {\circuitikzbasekey/current = american}}
-\tikzset{european currents/.style = {\circuitikzbasekey/current = european}}
-\tikzset{american voltages/.style = {\circuitikzbasekey/voltage = american}}
-\tikzset{european voltages/.style = {\circuitikzbasekey/voltage = european}}
-\tikzset{straight voltages/.style = {\circuitikzbasekey/voltage = straight}}
-\tikzset{raised voltages/.style = {\circuitikzbasekey/voltage = raised}}
-%%>>>
-
-% special cases for voltage positions%<<<1
-% the KIND is the node name without SHAPE
-% See the definition above for meaning
-% if bipoles/KIND/voltage/straight label distance is not defined, it uses the height
-% if bipoles/KIND/voltage/additional shift is not defined, it is 0 (extra distance)
-%
-\ctikzset{bipoles/generic/voltage/distance from node/.initial=0.4}
-\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
-%
-\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
-%
-\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
-%
-\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
-\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
-%
-\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
-%
-\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/varistor/voltage/american label distance/.initial=1.8}
-%
-\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=1.6}
-%
-\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
-\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=0.8}
-\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
-\ctikzset{bipoles/thermistorntc/voltage/european label distance/.initial=0.8}
-\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
-\ctikzset{bipoles/thermistorptc/voltage/european label distance/.initial=0.8}
-%
-\ctikzset{bipoles/ccapacitor/voltage/bump b/.initial=2.2}
-%
-\ctikzset{bipoles/emptyzzdiode/voltage/bump b/.initial=2.5}
-\ctikzset{bipoles/emptyzzdiode/voltage/european label distance/.initial=1.0}
-\ctikzset{bipoles/fullzzdiode/voltage/bump b/.initial=2.5}
-\ctikzset{bipoles/fullzzdiode/voltage/european label distance/.initial=1.0}
-\ctikzset{bipoles/emptythyristor/voltage/bump b/.initial=2.0}
-\ctikzset{bipoles/emptythyristor/voltage/european label distance/.initial=1.2}
-\ctikzset{bipoles/fullthyristor/voltage/bump b/.initial=2.0}
-\ctikzset{bipoles/fullthyristor/voltage/european label distance/.initial=1.2}
-\ctikzset{bipoles/emptytriac/voltage/bump b/.initial=1.8}
-\ctikzset{bipoles/emptytriac/voltage/european label distance/.initial=0.8}
-\ctikzset{bipoles/fulltriac/voltage/bump b/.initial=1.8}
-\ctikzset{bipoles/fulltriac/voltage/european label distance/.initial=0.8}
-%
-\ctikzset{bipoles/short/voltage/american label distance/.initial=2.8}
-\ctikzset{bipoles/open/voltage/distance from node/.initial=0.3}
-%
-\ctikzset{bipoles/battery/voltage/bump a/.initial=1.4}
-\ctikzset{bipoles/vsourceAM/voltage/american label distance/.initial=1.2}
-\ctikzset{bipoles/cvsourceAM/voltage/american label distance/.initial=1.2}
-%%>>>
-
-% vim: set fdm=marker fmr=%<<<,%>>>:
-%%%---------- close: tex/pgfcirc.defines
-%%%%%%%%%%% Springe nach tex/pgfcircutils
-%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-\def\pgf@circ@handleSI#1{
- \noexpandarg
- \def\pgf@temp{}
- \StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
- \StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
-
- \ifnum\pgf@circ@handleSI@unit@len=0
- \pgf@circ@siunitx@resfalse
- \else
- \IfEndWith{#1}{>}{
- \pgf@circ@siunitx@restrue
- \noexpandarg
- \StrBefore{#1}{<}[\pgf@circ@handleSI@val]
- %\typeout{si |#1|}
- }{
- \pgf@circ@siunitx@resfalse
- %\typeout{no si |#1|}
- }
-\fi
-}
-
-\def\pgf@circ@ifkeyempty#1{
- \pgfextra{
- \ctikzset{#1/.get=\pgf@circ@temp}
- \edef\pgf@temp{}
- }
- \ifx\pgf@circ@temp\pgf@temp
- }
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Math routines
-
-\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% useful commands
-
-\ifpgfutil@format@is@latex
- %% flipping text
- \def\ctikzflipx#1{\scalebox{-1}[1]{#1}}
- \def\ctikzflipy#1{\scalebox{1}[-1]{#1}}
- \def\ctikzflipxy#1{\scalebox{-1}[-1]{#1}}
- % text mode overbar
- % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
- \def\ctikztextnot#1{$\overline{\hbox{#1}}\m@th$}
-\else\ifpgfutil@format@is@plain
- % text mode overbar
- % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
- \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
-\else\ifpgfutil@format@is@context
- % text mode overbar
- % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
- \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
-\fi\fi\fi
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% switch to use fpu in reciprocal scale transformations
-%%
-%% this code has been contributed by Schrรถdinger's cat
-%% https://tex.stackexchange.com/a/529159/38080
-%%
-%% Use the official key to use the fpu if installed, see
-%% https://github.com/pgf-tikz/pgf/issues/861
-%%
-%% Thanks to "muzimuzhi Z" https://tex.stackexchange.com/a/547085/38080
-%%
-\pgfkeysifdefined{/pgf/fpu/install only/.@cmd}{%
- \pgfqkeys{/pgf}{use fpu reciprocal/.code={\pgfkeys{/pgf/fpu/install only={reciprocal}}}}%
- }{%
- \pgfqkeys{/pgf}{use fpu reciprocal/.code={%
- \def\pgfmathreciprocal@##1{%
- \begingroup
- \pgfkeys{/pgf/fpu=true,/pgf/fpu/output format=fixed}%
- \pgfmathparse{1/##1}%
- \pgfmath@smuggleone\pgfmathresult
- \endgroup
- }}}%
-}
-
-%%%---------- close: tex/pgfcircutils
-
-%%%%%%%%%%% Springe nach tex/pgfcircshapes
-%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Other shapes
-
-%% Nothing
-
-\pgfdeclareshape{emptyshape}{
- \savedanchor{\northeast}{%
- \pgf@x=.5\wd\pgfnodeparttextbox%
- \pgf@y=.5\ht\pgfnodeparttextbox%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
- \anchor{center}{
- \pgfpointorigin
- }
-}
-%
-% Provision for changing opacity. Only expert use, see the manual.
-%
-\ctikzset{poles/open fill opacity/.initial=1.0}% better not touch it
-\tikzset{open poles opacity/.code={%
- \ctikzset{poles/open fill opacity=#1}%
-}}
-\ctikzset{poles/full fill opacity/.initial=1.0}% better not touch it
-\tikzset{full poles opacity/.code={%
- \ctikzset{poles/full fill opacity=#1}%
-}}
-
-%
-% Provision for changing default background
-%
-
-\ctikzset{open poles fill/.initial={white}}
-
-%% Full terminal
-
-\pgfdeclareshape{circ}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Empty round terminal
-
-\pgfdeclareshape{ocirc}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
- }
-
- \behindforegroundpath{
-
- \pgfscope
- \pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfsetcolor{\ctikzvalof{color}}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{\ctikzvalof{open poles fill}}
- % ...but override it if the class is defined!
- % note that this element has no class, but will inherit it when used
- % into another component
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
-
- }
-}
-
-%% Diamond terminal
-
-\pgfdeclareshape{diamondpole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
- \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
- \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
- \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
- % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
- \pgfpointintersectionoflines
- {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
- % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgf@x=\@@switchx\pgf@x
- \pgf@y=\@@switchy\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgftransformrotate{45}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% Diamond terminal, unfilled
-
-\pgfdeclareshape{odiamondpole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- % \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
- \pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
- \pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
- \pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- % \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
- % \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
- \pgfpointintersectionoflines
- {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
- % \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
- \pgf@x=\@@switchx\pgf@x
- \pgf@y=\@@switchy\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgftransformrotate{45}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\ctikzvalof{color}}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{\ctikzvalof{open poles fill}}
- % ...but override it if the class is defined!
- % note that this element has no class, but will inherit it when used
- % into another component
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% square terminal, filled
-
-\pgfdeclareshape{squarepole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpointborderrectangle
- {\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{\pgf@circ@res@up}{\pgf@circ@res@up}}
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-%% square terminal, unfilled
-
-\pgfdeclareshape{osquarepole}{
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpointborderrectangle
- {\pgfqpoint{\pgf@xa}{\pgf@ya}}
- {\pgfqpoint{\pgf@circ@res@up}{\pgf@circ@res@up}}
- }
- \behindforegroundpath{
- \pgfscope
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \pgfpathrectanglecorners
- {\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- \pgfsetcolor{\ctikzvalof{color}}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{\ctikzvalof{open poles fill}}
- % ...but override it if the class is defined!
- % note that this element has no class, but will inherit it when used
- % into another component
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-% BNC connector
-
-\pgfdeclareshape{bnc}{
- \anchor{center}{
- \pgfpointorigin
- }
- % BNC size is 2.5 times the size of the internal "ocirc"
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgf@y=2.5\pgf@y
- \pgf@x=-\pgf@y
- }
- % center is on the opening
- \anchor{center}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{zero}{ \pgfpointorigin }
- \anchor{hot}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{shield}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- % geo-anchors
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{right}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{left}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
- }
- \behindforegroundpath{
- \pgfextracty{\pgf@circ@res@other}{\northwest}
- \pgf@circ@res@step=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgfsetcolor{\ctikzvalof{color}}
- % external circle
- \pgfscope
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{-2\pgf@circ@res@other}{-2\pgf@circ@res@other}}
- {\pgfpoint{2\pgf@circ@res@other}{2\pgf@circ@res@other}}
- % next the opening to the right
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
- {\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@step}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@other}
- \pgfusepath{draw}
- \endpgfscope
- % internal circle
- \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@step}
- \pgf@circ@draworfill
- % and the contact line to the right
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-%% Fill for correct rectangular joins
-
-\pgfdeclareshape{rectjoinfill}{
- \savedanchor{\northeast}{%
- \pgf@x=.5\pgflinewidth%
- \pgf@y=.5\pgflinewidth%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- }
- \behindforegroundpath{
- \pgfscope
- \pgfpathrectanglecorners
- {\pgfpoint{0}{.5\pgflinewidth}}
- {\pgfpoint{0}{-.5\pgflinewidth}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%% transistor arrow
-
-\def\pgf@circ@find@linescale{
- % find the scale inverse of the scale factor: line width do not scale
- % with scale=..., transform shape so we have to counteract it.
- \iftikz@fullytransformed % this is true if `transform shape` is active
- % from @Circumscribe https://tex.stackexchange.com/a/474035/38080
- % Note that this trick is not working inside a `spy` environment...
- \pgfgettransformentries{\scaleA}{\scaleB}{\scaleC}{\scaleD}{\whatevs}{\whatevs}%
- \pgfmathsetmacro{\@@factor}{1.0/sqrt(abs(\scaleA*\scaleD-\scaleB*\scaleC))}%
- \else
- \pgfmathsetmacro{\@@factor}{1.0}
- \fi
-}
-
-\pgfdeclareshape{trarrow}{%
- % this arrow is only filled but grows with the linewidth, more or less
- % like currarrow do
- \savedanchor{\northeast}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \pgf@circ@find@linescale
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgfpoint{0.7*\pgf@circ@res@step +0.5*\@@factor*\pgflinewidth}
- {0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
- }
- % The arrow size should be more or less the same of a currarrow, which is
- % both filled and stroke, for backward output compatibility (more or less)
- %
- % angle \beta W is \pgf@circ@Rlen/\ctikzvalof{current arrow scale}
- % |-\__ currarrow as the tip at (W,0)
- % | | and the upper tail at (-0.7*W, 0.8*W)
- % | \__ it then "overshoot" do to the linew width L
- % | \__ xangle \alpha
- % ---0------->
- %
- % \beta = atan(0.7/0.8) \alpha=atan(0.8/1.7)
- % tip overshoot is (L/2)/sin(\alpha) = 1.743*L only in x direction
- % tail overshoot is -(L/2) in x, and (L/2)/sin(\beta) = 0.7539*L in y
- %
- \savedanchor{\northwest}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@circ@find@linescale
- \pgfpoint{-0.7*\pgf@circ@res@step -0.5*\@@factor*\pgflinewidth}
- {0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
- }
- \savedanchor{\tip}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@circ@find@linescale
- \pgfpoint{\pgf@circ@res@step + 1.743*\@@factor*\pgflinewidth}{0pt}
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{tip}{
- \tip
- }
- \anchor{btip}{% this anchor is behind the tip of half a linewidth
- \tip
- \pgf@circ@find@linescale
- \pgf@circ@res@temp=\@@factor\pgflinewidth
- \advance\pgf@x by -.5\pgf@circ@res@temp
- }
- \behindforegroundpath{
- \pgfscope
- \northwest
- \pgf@circ@res@up=\pgf@y
- \pgf@circ@res@left=\pgf@x
- \tip
- \pgf@circ@res@step = \pgf@x
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathclose
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{fill} % just fill
- \endpgfscope
- }
-}
-
-%% Current arrow
-
-\pgfdeclareshape{currarrow}{
- \savedanchor{\northeast}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@x=.5\pgf@circ@res@step
- \pgf@y=\pgf@x%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{tip}{
- \pgfpointorigin
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@x =\pgf@circ@res@step
- }
- \behindforegroundpath{
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
-
- \pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{draw,fill}
-
- \endpgfscope
- }
-}
-
-%% Flow arrow
-
-\pgfdeclareshape{flowarrow}{
- \savedanchor{\northeast}{%
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@y=.5\pgf@circ@res@step
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 4
- \pgf@x=\pgf@circ@res@step%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{text}{% text centered above
- \pgfpointorigin
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox}
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{tip}{
- \pgfpointorigin
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@x =\pgf@circ@res@step
- }
- \behindforegroundpath{
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 4
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{draw}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfnode{currarrow}{tip}{}{}{\pgfusepath{fill}}
- \endpgfscope
- }
-}
-
-%% Input arrow
-
-\pgfdeclareshape{inputarrow}{
- \savedanchor{\northeast}{% this is really not northeast, really -northwest
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
- \pgf@y=.5\pgf@circ@res@step
- \pgf@x=1.7\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax\pgf@x=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
- \anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast\pgf@x=0cm\relax}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@x=0cm\relax}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \savedanchor{\tip}{
- \pgfpointorigin
- }
- \anchor{center}{
- \tip
- }
- \anchor{tip}{
- \tip
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \pgf@circ@Rlen
- \divide \pgf@circ@res@step by 16
-
- \pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfusepath{fill}
-
- \endpgfscope
- }
-}
-
-
-%% box
-
-\pgfdeclareshape{box}{
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
-
- \pgfscope
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
- \pgf@circ@res@step = 0.5\pgf@circ@res@step
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-%% box scaled with blocks
-
-\pgfdeclareshape{blockbox}{
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{blocks/scale}\pgf@circ@Rlen}}
- \anchor{center}{
- \pgfpointorigin
- }
- \behindforegroundpath{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{blocks/scale}\pgf@circ@Rlen}
- \pgfscope
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@step = 0.5\pgf@circ@res@step
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-% full nodes for wire crossing
-
-\pgfdeclareshape{jump crossing}
-{
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \behindbackgroundpath{
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- % horizontal jumper
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
- \pgfsetbeveljoin
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % vertical, broken path
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0pt}{0.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-\pgfdeclareshape{plain crossing}
-{
- \savedanchor\northwest{%
- \pgf@y=\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgf@y
- }
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{w}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{n}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \behindbackgroundpath{
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- % horizontal jumper
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % vertical, broken path
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{0.1\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0pt}{0.1\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-
-%%%---------- close: tex/pgfcircshapes
-%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
-%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Monopoles
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%
-%% Grounds
-%%%%%%%%%%%%%
-
-
-%% Ground symbol
-% #1 -> name
-% #2 -> width
-% #3 -> depth
-% #4 -> code
-\long\def\pgf@circ@declareground#1#2#3#4{
- \pgfdeclareshape{#1}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{grounds}} % class of these components
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\southeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
- \pgf@x=#2\pgf@x
- \pgf@y=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
- \pgf@y=-#3\pgf@y
- }
- \anchor{north}{\pgfpointorigin}
- \anchor{north east}{\southeast\pgf@y=0pt\relax}
- \anchor{east}{\southeast\pgf@y=.5\pgf@y}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\southeast\pgf@y=.5\pgf@y\pgf@x=-\pgf@x}
- \anchor{north west}{\southeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- \anchor{center}{\pgfpointorigin}
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/ground/width}\pgf@circ@scaled@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- #4
- \endpgfscope
- }
- }
-}
-
-
-\pgf@circ@declareground{ground}{0.6}{1.6}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-\pgf@circ@declareground{tlground}{0.6}{0.4}{
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-
-\pgf@circ@declareground{rground}{0.6}{1}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{monopoles/rground}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-\pgf@circ@declareground{tground}{0.6}{0}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-}
-
-\pgf@circ@declareground{sground}{0.6}{1.8}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.8\pgf@circ@res@step}}
- \pgfpathclose
- \pgf@circ@draworfill
-}
-
-% noiseless ground
-\pgf@circ@declareground{nground}{0.9}{1.6}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.2\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.9\pgf@circ@res@step}{-1.6\pgf@circ@res@step}}
- \pgfpatharc{0}{180}{0.9\pgf@circ@res@step}
- \pgfusepath{draw}
-}
-
-% protective ground
-\pgf@circ@declareground{pground}{0.9}{1.8}{
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0pt}{-0.9\pgf@circ@res@step}}{0.9\pgf@circ@res@step}
- \pgf@circ@draworfill
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1.2\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1.4\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-% chassis ground
-\pgf@circ@declareground{cground}{1}{2}{
- \pgfsetlinewidth{\ctikzvalof{monopoles/ground/connectionthickness}\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{monopoles/ground}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-1.00\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{ 0.75\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{ 0.50\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-1.50\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.25\pgf@circ@res@step}{-2.10\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-% Contributed by @fotesan https://github.com/fotesan
-% european ground
-\pgf@circ@declareground{eground}{1.1}{1.7}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.6\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.6\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.1\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-\pgf@circ@declareground{eground2}{1.1}{1.7}{
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{monopoles/tground}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{-\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-1.1\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{-.45\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-1.7\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%%%%%%
-%% Power supplies
-%%%%%%%%%%%%%%%%%%
-
-% Vcc
-\pgfdeclareshape{vcc}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{power supplies}} % class of these components
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \saveddimen{\scaledwidth}{% thanks to @Schrรถdinger's cat on https://tex.stackexchange.com/a/506249/38080
- \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
- \pgfmathsetmacro{\gscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
- \pgfmathsetlength{\pgf@x}{(\ctikzvalof{\ctikzclass/scale}*\gscale*\ctikzvalof{monopoles/vcc/width})*\pgf@circ@Rlen}%
- }
- \savedanchor{\northeast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@circ@res@step
- \pgf@y=3\pgf@x%
- }
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
- \anchor{south}{\pgfpointorigin}
- \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{center}{\pgfpointorigin}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- \anchor{text}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{2\pgf@circ@res@step+2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=2\pgf@circ@res@step
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgfscope
- \edef\pgf@circ@temp{\ctikzvalof{monopoles/vcc/arrow}}\edef\pgf@temp{legacy}
- \ifx\pgf@temp\pgf@circ@temp
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{.8\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \else
- \pgfsetarrowsend{\pgf@circ@temp}
- \fi
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% Vee
-\pgfdeclareshape{vee}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{power supplies}} % class of these components
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \saveddimen{\scaledwidth}{% thanks to @Schrรถdinger's cat on https://tex.stackexchange.com/a/506249/38080
- \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
- \pgfmathsetmacro{\gscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
- \pgfmathsetlength{\pgf@x}{(\ctikzvalof{\ctikzclass/scale}*\gscale*\ctikzvalof{monopoles/vcc/width})*\pgf@circ@Rlen}%
- }
- \savedanchor{\northeast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@circ@res@step
- \pgf@y=-3\pgf@x%
- }
- \anchor{south}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y\relax}
- \anchor{north}{\pgfpointorigin}
- \anchor{west}{\northeast\pgf@y=0.5\pgf@y\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast}
- \anchor{south west}{\northeast\pgf@x=-\pgf@x}
- \anchor{north east}{\northeast\pgf@y=0pt\relax}
- \anchor{north west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{center}{\pgfpointorigin}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- \anchor{text}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgfpathmoveto{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgfpathmoveto{\pgfpoint{.5\wd\pgfnodeparttextbox}{-2\pgf@circ@res@step-2\ht\pgfnodeparttextbox}}
- \pgf@x=0pt
- \pgf@y=-2\pgf@circ@res@step
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
-
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/vcc/width}\pgf@circ@scaled@Rlen
- \pgfscope
- \edef\pgf@circ@temp{\ctikzvalof{monopoles/vee/arrow}}\edef\pgf@temp{legacy}
- \ifx\pgf@temp\pgf@circ@temp
-
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0}{-1.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \else
- \pgfsetarrowsend{\pgf@circ@temp}
- \fi
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{-1.5\pgf@circ@res@step}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-%%%%%%%%%%%%%%%%
-%% RF elements
-%%%%%%%%%%%%%%%%
-
-% Legacy tlinestub
-% Contributed by Leonardo Azzinnari
-\pgfdeclareshape{tlinestub}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\northeast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
- \pgf@x=1.2\pgf@circ@res@step
- \pgf@circ@res@step = \ctikzvalof{bipoles/tline/width} \pgf@circ@scaled@Rlen
- \pgf@y=.2\pgf@circ@res@step%
- }
- % the center is on the left side of the shape for facility of usage
- \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0.5\pgf@x\relax}
- \anchor{west}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=0cm\relax}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\northeast\pgf@x=0cm\pgf@y=-\pgf@y}
- \anchor{center}{\pgfpointorigin}
- % this is not exact, but it's better than nothing
- \anchor{text}{\northeast\pgf@xa=\pgf@x\pgf@ya=\pgf@y
- \pgfpoint{\dimexpr-.5\wd\pgfnodeparttextbox+.8\pgf@xa}
- {\dimexpr-.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@ya}}
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
-
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{bipoles/tline/width}\pgf@circ@scaled@Rlen
-
- \pgfscope\begin{pgftransparencygroup}
- \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgf@circ@maybefill
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{1.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfpatharc{90}{-90}{0.125\pgf@circ@res@step and 0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \pgfpathellipse{\pgfpoint{0.5\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0.125\pgf@circ@res@step}{0\pgf@circ@res@step}}{\pgfpoint{0\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \end{pgftransparencygroup} \endpgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
- }
-}
-
-%% New antennas without tails
-
-% main body of antennas
-\def\pgf@circ@antennabody{%
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{2\pgf@circ@res@step}}
- \pgfsetbeveljoin
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{2\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-% Waves for the antennas.
-\def\pgf@circ@antennawaves{%
- \pgfscope
- % define a triangle for clipping the waves
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4.2\pgf@circ@res@step}{-1\pgf@circ@res@step}}
- \pgfpathclose
- \pgfusepath{clip}
- % ...and build the waves as clipped circles
- \pgf@circ@count@a=8\pgf@circ@res@other=0.5\pgf@circ@res@step
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>2
- \pgfpathcircle{\pgfpoint{0pt}{\pgf@circ@res@step}}{\the\pgf@circ@count@a*\pgf@circ@res@other}
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% additional shape with the waves
-\pgfdeclareshape{waves}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0pt}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
- \anchor{bottom}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{north east}{\northeast}
- \anchor{east}{\northeast\pgf@y=0pt}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
- \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@step=0.5\pgf@circ@res@step
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfscope
- % define a triangle for clipping the waves
- \pgfpathmoveto{\pgfpoint{-2\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{2\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{-2\pgf@circ@res@step}}
- \pgfpathclose
- \pgfusepath{clip}
- % ...and build the waves as clipped circles
- \c@pgf@counta=8\pgf@circ@res@other=0.5\pgf@circ@res@step
- \pgfmathloop%
- \ifnum\c@pgf@counta>1
- \pgfpathcircle{\pgfpoint{-2\pgf@circ@res@step}{0pt}}{\the\c@pgf@counta*\pgf@circ@res@other}
- \advance\c@pgf@counta-1\relax%
- \repeatpgfmathloop
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-% the three types of antennas: simple, TX, RX. Notice that you can flip them...
-
-\pgfdeclareshape{bareantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=2\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{bottom}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{south}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@antennabody
- }
-}
-
-\pgfdeclareshape{bareTXantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=2\pgf@circ@res@step
- }
- \savedanchor{\savedwaves}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=4.2\pgf@circ@res@step
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
- \pgf@x=\dimexpr-\pgf@x-\wd\pgfnodeparttextbox\relax
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{waves}{\savedwaves}
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{bottom}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{south}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@antennabody
- \pgf@circ@antennawaves
- }
-}
-
-\pgfdeclareshape{bareRXantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step
- \pgf@y=2\pgf@circ@res@step
- }
- \savedanchor{\savedwaves}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/bareantenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=-4.2\pgf@circ@res@step
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/bareantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/bareantenna/label/yanchor}\pgf@y
- \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{waves}{\savedwaves}
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{bottom}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{south}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgf@circ@antennabody
- \pgftransformxshift{-5.2\pgf@circ@res@step}
- \pgf@circ@antennawaves
- }
-}
-
-%%% dynodes (see https://github.com/circuitikz/circuitikz/issues/469)
-\ctikzset{monopoles/dynode/width/.initial=0.4}
-\ctikzset{monopoles/dynode/height/.initial=0.8}
-\ctikzset{monopoles/dynode/arc pos/.initial=0.5}
-\ctikzset{monopoles/dynode/arc angle/.initial=30}
-\ctikzset{monopoles/dynode/top width/.initial=1.0}
-
-\pgfdeclareshape{dynode}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/dynode/width}\pgf@circ@scaled@Rlen
- \pgf@x=0.5\pgf@x
- \pgf@y=\ctikzvalof{monopoles/dynode/height}\pgf@circ@scaled@Rlen
- }
- \savedanchor{\arcpos}{% bottom part of the arc pos
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=0pt
- \pgf@y=\ctikzvalof{monopoles/dynode/height}\pgf@circ@scaled@Rlen
- \pgf@y=\ctikzvalof{monopoles/dynode/arc pos}\pgf@y
- }
- \savedanchor{\topright}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/dynode/width}\pgf@circ@scaled@Rlen
- \pgf@x=\ctikzvalof{monopoles/dynode/top width}\pgf@x
- \pgf@x=0.5\pgf@x
- \pgf@y=\ctikzvalof{monopoles/dynode/height}\pgf@circ@scaled@Rlen
- }
- \anchor{arc}{\arcpos}
- \anchor{top right}{\topright}
- \anchor{top left}{\topright\pgf@x=-\pgf@x}
- \anchor{text}{
- \northeast
- \advance\pgf@x by 4pt\relax
- \pgf@y=\dimexpr0.5\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \anchor{top}{\northeast\pgf@x=0pt}
- \anchor{right}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{bottom}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0.5\pgf@y}
- \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{south}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=-\pgf@x}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\northeast\pgf@y=0pt\pgf@x=-\pgf@x}
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgfsetcolor{\ctikzvalof{color}}
- \northeast
- \pgf@circ@res@right=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \arcpos
- \pgf@circ@res@step=\pgf@y
- % top
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{monopoles/dynode/top width}*\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{monopoles/dynode/top width}*\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- % arc
- \edef\@@angle{\ctikzvalof{monopoles/dynode/arc angle}}
- \ifnum90=\@@angle\else % avoid divisions by zero
- % radius
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@res@right/cos(\@@angle)}
- % start angle y position
- \pgfmathsetlength{\pgf@circ@res@step}{\pgf@circ@res@step+\pgf@circ@res@other*(1-sin(\@@angle))}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@step}}
- \pgfpatharc{-180+\@@angle}{-\@@angle}{\pgf@circ@res@other}
- \fi
- % tail
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- }
-}
-% Microstrip monopoles
-
-\pgfdeclareshape{mslstub}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\southeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
- \pgf@y=-.5\pgf@y
- }
- \savedanchor{\northwest}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{bipoles/mstline/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- }
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{east}{\southeast\pgf@y=0pt\relax}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
- \anchor{north west}{\northwest}
- %
- \anchor{center}{\northwest\pgf@y=0pt\relax}
- \anchor{left}{\northwest\pgf@y=0pt\relax}
- \anchor{right}{\southeast\pgf@y=0pt\relax}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- \behindbackgroundpath{
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@right}{\southeast}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@down}{\southeast}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{msrstub}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\southeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt\relax
- }
- \savedanchor{\northwest}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/msrstub/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- \pgf@y=\ctikzvalof{monopoles/msrstub/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- }
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{east}{\southeast\pgf@y=0pt\relax}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
- \anchor{north west}{\northwest}
- %
- \anchor{center}{\pgfpointorigin}
- \anchor{left}{\pgfpointorigin}
- \anchor{right}{\pgfpointorigin}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- \behindbackgroundpath{
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@right}{\southeast}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@down}{\southeast}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointpolar{135}{\pgf@circ@res@step}}
- \pgfpatharc{135}{45}{\pgf@circ@res@step}
- \pgfpathlineto{\pgfpointpolar{45}{\pgf@circ@res@up}}
- \pgfpatharc{45}{135}{\pgf@circ@res@up}
- \pgfclosepath
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{msport}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\southeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
- \pgf@y=-.5\pgf@y
- }
- \savedanchor{\northwest}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/msport/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- \pgf@y=\ctikzvalof{bipoles/mstline/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- }
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{east}{\southeast\pgf@y=0pt\relax}
- \anchor{south east}{\southeast}
- \anchor{south}{\southeast\pgf@x=0pt\relax}
- \anchor{south west}{\southeast\pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
- \anchor{north west}{\northwest}
- %
- \anchor{center}{\northwest\pgf@y=0pt\relax}
- \anchor{left}{\northwest\pgf@y=0pt\relax}
- \anchor{right}{\southeast\pgf@y=0pt\relax}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr-.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- }
- \behindbackgroundpath{
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@right}{\southeast}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@down}{\southeast}
- \pgfmathsetlength{\pgf@circ@res@step}{0.5*\pgf@circ@res@up}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- }
-}
-
-% Legacy antennas (with tails)
-\def\pgf@circ@shift@antenna@xy#1#2{%
- \pgf@y=\dimexpr\pgf@y+#2\pgf@circ@res@step
- \pgf@x=\dimexpr\pgf@x+#1\pgf@circ@res@step
-\relax}
-
-% Legacy antenna
-\pgfdeclareshape{antenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=4\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{2}}
- \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{0}{3}\relax}
- \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{0}{4}\relax}
- \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{3}}
- \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
- \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{2}}
- \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{0}{4}}
- \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{0}{4}}
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/antenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/antenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
-
- \pgftransformxshift{ -4\pgf@circ@res@step }
-
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
-}
-
-% Legacy TX antenna
-\pgfdeclareshape{txantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=4\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
- \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
- \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
- \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
- \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{4}{2}}
- \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
- \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
- \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/txantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/txantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/txantenna/width}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{5.5\pgf@circ@res@step}{6\pgf@circ@res@step}}
- % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{30}{-30}{2\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{7\pgf@circ@res@step}}
- \pgfpatharc{30}{-30}{4\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- }
-}
-
-% Legacy RX antenna
-\pgfdeclareshape{rxantenna}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor{\northeast}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step=\ctikzvalof{monopoles/antenna/width}\pgf@circ@scaled@Rlen
- \pgf@x=\pgf@circ@res@step%-0.5\pgflinewidth
- \pgf@y=4\pgf@circ@res@step
- }
- \anchor{north}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{2}}
- \anchor{east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@circ@shift@antenna@xy{4}{3}\relax}
- \anchor{south}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y \pgf@x=0cm\pgf@circ@shift@antenna@xy{2}{4}\relax}
- \anchor{west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=0cm\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{3}}
- \anchor{north east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@circ@shift@antenna@xy{4}{2}}
- \anchor{north west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{2}}
- \anchor{south east}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@circ@shift@antenna@xy{4}{4}}
- \anchor{south west}{\northeast\pgf@circ@res@step=\pgf@x\pgf@y=-\pgf@y\pgf@x=-\pgf@x\pgf@circ@shift@antenna@xy{1}{4}}
- \anchor{text}{
- \northeast
- \pgf@x=\ctikzvalof{monopoles/rxantenna/label/xanchor}\pgf@x
- \pgf@y=\ctikzvalof{monopoles/rxantenna/label/yanchor}\pgf@y
- }
- \behindforegroundpath{
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/rxantenna/width}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{0pt}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{5\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{4\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{3\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{4\pgf@circ@res@step-0.5\pgflinewidth}{6\pgf@circ@res@step}}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{6\pgf@circ@res@step}{7\pgf@circ@res@step}}
- % \pgfpatharc{60}{-60}{\pgf@circ@res@step and \pgf@circ@res@step}
- \pgfpatharc{150}{210}{4\pgf@circ@res@step} \pgfpathmoveto{\pgfpoint{6.5\pgf@circ@res@step}{6.75\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7\pgf@circ@res@step}{6.5\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{3\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{7.5\pgf@circ@res@step}{6.25\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2.5\pgf@circ@res@step}
- \pgfpathmoveto{\pgfpoint{8\pgf@circ@res@step}{6\pgf@circ@res@step}}
- \pgfpatharc{150}{210}{2\pgf@circ@res@step}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- }
-}
-
-% Legacy match
-\pgfdeclareshape{match}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\northeast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@scaled@Rlen
- \pgf@x=2\pgf@circ@res@step
- \pgf@circ@res@step = \ctikzvalof{monopoles/match/width} \pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@circ@res@step%
- }
- % the center is on the left side of the shape for facility of usage
- \anchor{north}{\northeast\pgf@x=0.5\pgf@x\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\northeast\pgf@y=0pt\pgf@x=0.5\pgf@x\relax}
- \anchor{west}{\pgfpointorigin}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@x=0cm\relax}
- \anchor{south east}{\northeast\pgf@y=0pt\relax}
- \anchor{south west}{\pgfpointorigin}
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{monopoles/match/width}\pgf@circ@scaled@Rlen
- \pgf@x=1.5\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \pgf@y=-1.5\ht\pgfnodeparttextbox
- }
- \behindforegroundpath{
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{monopoles/match/width}\pgf@circ@scaled@Rlen
-
- \pgfscope
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0pt}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@step}{0}}
- \pgfusepath{fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \endpgfscope
- }
-}
-
-%%%---------- close: tex/pgfcircmonopoles
-%%%%%%%%%%% Springe nach tex/pgfcircbipoles
-%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%% Generic macro for defining a bipole shape
-% #1 - additional anchors
-% #2 - lower y-size of the bipole (from the center).
-% #3 - #shape is the name of the shape
-% #4 - upper y-size of the bipole (from the center)
-% #5 - width of the bipole
-% #6 - macros drawing the bipole
-%
-\long\def\pgfcircdeclarebipole{%
- \pgfcircdeclarebipolescaled{default}}
-
-%% Generic macro for defining a bipole shape
-% #1 - scale factor
-% #2 - additional anchors
-% #3 - lower y-size of the bipole (from the center).
-% #4 - #shape is the name of the shape
-% #5 - upper y-size of the bipole (from the center)
-% #6 - width of the bipole
-% #7 - macros drawing the bipole
-%
-\long\def\pgfcircdeclarebipolescaled#1#2#3#4#5#6#7{
- \pgfdeclareshape{#4shape}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{#1}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor{\northeast}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@y=#5\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=#6\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\northeastborder}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@y=#5\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=#6\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwestborder}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@y=-#3\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{bipoles/border margin}\pgf@y
- \pgf@x=-#6\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=\ctikzvalof{bipoles/border margin}\pgf@x
- }
- \savedanchor{\southwest}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@y=-#3\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-#6\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor{\centerpoint}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@circ@res@down=-#3\pgf@circ@scaled@Rlen
- \pgf@circ@res@up=#5\pgf@circ@scaled@Rlen
- \pgfpointorigin
- \pgf@y=\pgf@circ@res@up
- \advance\pgf@y by\pgf@circ@res@down
- \pgf@y=.5\pgf@y
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{n}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{north east}{
- \northeast
- }
- \anchor{north west}{
- \northeast
- \pgf@x=-\pgf@x
- }
- \anchor{ne}{
- \northeast
- }
- \anchor{nw}{
- \northeast
- \pgf@x=-\pgf@x
- }
- \anchor{e}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{s}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{south east}{
- \southwest
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \southwest
- }
- \anchor{se}{
- \southwest
- \pgf@x=-\pgf@x
- }
- \anchor{sw}{
- \southwest
- }
- \anchor{w}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{north}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{east}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{south}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{west}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{right}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{above}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{left}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{below}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{a}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{b}{
- \southwest
- \pgf@y=0cm
- }
- \savedanchor{\textanchor}{%
- \pgf@y=\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \anchor{text}{
- \textanchor
- }
- \anchorborder{%
- \ifpgf@circuit@bipole@inverted
- \pgf@circ@res@left=-\pgf@x
- \pgf@circ@res@up=-\pgf@y
- \else
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \fi
- \ifdim\pgf@circ@res@up>0cm
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\northeastborder}
- \else
- \southwestborder
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{-\pgf@x}{-\pgf@y}}
- \fi
- }
-
- #2
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@zero = 0cm
- \pgf@circ@res@left = -\pgf@x
- \pgf@circ@res@right = \pgf@x
- \southwest
- \pgf@circ@res@down = \pgf@y
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- #7
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- }
- }
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% anchor adjustment macros
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Extend the border anchor position by the specified factors on the right-top (north east corner)
-% and the left-down (southwest border). Argument must be number (possibly decimal) without sign
-
-\def\pgfcirc@border@extend@full#1#2#3#4{% right, top, left, down
- \anchorborder{%
- \ifpgf@circuit@bipole@inverted
- \pgf@circ@res@left=-\pgf@x
- \pgf@circ@res@up=-\pgf@y
- \else
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \fi
- \ifdim\pgf@circ@res@up>0cm
- \northeastborder
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{#1\pgf@x}{#2\pgf@y}}
- \else
- \southwestborder
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{-#3\pgf@x}{-#4\pgf@y}}
- \fi
- }
-}
-
-% Just up and down (very common)
-\def\pgfcirc@border@extend@updown#1#2{\pgfcirc@border@extend@full{1}{#1}{1}{#2}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Standard bipole shapes declarations
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%
-% Resistive components
-%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% Short circuit
-
-%%% NOTICE that the short is really NOT drawn; we trust the fact that its
-%%% natural length is zero.
-\pgfcircdeclarebipole
-{% fix the anchor border to add a bit of space for voltage and labels
- % it uses the dummy width and height
- \anchorborder{%
- \ifpgf@circuit@bipole@inverted
- \pgf@circ@res@left=-\pgf@x
- \pgf@circ@res@up=-\pgf@y
- \else
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \fi
- \ifdim\pgf@circ@res@up>0cm
- \pgf@x=\ctikzvalof{bipoles/short/width}\pgf@circ@Rlen
- \pgf@y=\ctikzvalof{bipoles/short/height}\pgf@circ@Rlen
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\pgf@x}{\pgf@y}}
- \else
- \pgf@x=-\ctikzvalof{bipoles/short/width}\pgf@circ@Rlen
- \pgf@y=-\ctikzvalof{bipoles/short/height}\pgf@circ@Rlen
- \pgfpointborderrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{-\pgf@x}{-\pgf@y}}
- \fi
- }
-}
-{0}
-{short}
-{0}
-{0}
-{}
-
-%% Open circuit
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/open/height}}
-{open}
-{\ctikzvalof{bipoles/open/height}}
-{\ctikzvalof{bipoles/open/width}}
-{}
-
-% multiwire(s)
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/multiwire/height}}
-{multiwire}
-{\ctikzvalof{bipoles/multiwire/height}}
-{\ctikzvalof{bipoles/multiwire/width}}
-{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/multiwire/height}}
-{bmultiwire}
-{\ctikzvalof{bipoles/multiwire/height}}
-{\ctikzvalof{bipoles/multiwire/width}}
-{
- \pgf@circ@res@other=\ctikzvalof{bipoles/multiwire/spacing}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/multiwire/height}}
-{tmultiwire}
-{\ctikzvalof{bipoles/multiwire/height}}
-{\ctikzvalof{bipoles/multiwire/width}}
-{
- \pgf@circ@res@other=\ctikzvalof{bipoles/multiwire/spacing}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+2\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-}
-
-%
-%
-%% Generic bipole - used as resistor by some (bleah)
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/generic/height}}
-{generic}
-{\ctikzvalof{bipoles/generic/height}}
-{\ctikzvalof{bipoles/generic/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-
-%
-% generic crossed, suggested by Radvรกnyi Patrik Tamรกs <patrikradvanyi@gmail.com>
-% inherit "generic" properties
-%
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/generic/height}}
-{xgeneric}
-{\ctikzvalof{bipoles/generic/height}}
-{\ctikzvalof{bipoles/generic/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- % cross it
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-%% Generic empty tunable
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/tgeneric/height}}
-{tgeneric}
-{\ctikzvalof{bipoles/tgeneric/height}}
-{\ctikzvalof{bipoles/tgeneric/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Generic asymmetric bipole
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/ageneric/height}}
-{ageneric}
-{\ctikzvalof{bipoles/ageneric/height}}
-{\ctikzvalof{bipoles/ageneric/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-%% Memristor
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/memristor/height}}
-{memristor}
-{\ctikzvalof{bipoles/memristor/height}}
-{\ctikzvalof{bipoles/memristor/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.72*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.35*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{-\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.05*\pgf@circ@res@left}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{\ctikzvalof{bipoles/memristor/wave height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.42*\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.8*\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-%% Photoresistor
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/photoresistor/height 2}}
-{photoresistor}
-{\ctikzvalof{bipoles/photoresistor/height}}
-{\ctikzvalof{bipoles/photoresistor/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@right}{-1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Thermistor
-\pgfcircdeclarebipolescaled{resistors}
-{% anchor for labelling the type of dependency
- \anchor{label}{%
- \southwest
- \pgf@x=0.4\pgf@x
- \pgf@y=1.2\pgf@y
- }%
- \pgfcirc@border@extend@updown{1}{1.2}
-}
-{\ctikzvalof{bipoles/thermistor/height}}
-{thermistor}
-{\ctikzvalof{bipoles/thermistor/height}}
-{\ctikzvalof{bipoles/thermistor/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistor/main}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- %\pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- %\endpgfscope
-}
-
-%% Thermistor PTC
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/thermistorptc/height 2}}
-{thermistorptc}
-{\ctikzvalof{bipoles/thermistorptc/height}}
-{\ctikzvalof{bipoles/thermistorptc/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorptc/main}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Thermistor NTC
-\pgfcircdeclarebipolescaled{resistors}
-{}
-{\ctikzvalof{bipoles/thermistorntc/height 2}}
-{thermistorntc}
-{\ctikzvalof{bipoles/thermistorntc/height}}
-{\ctikzvalof{bipoles/thermistorntc/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/thermistorntc/main}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftext[top,x=.85\pgf@circ@res@left,y=.75\pgf@circ@res@down]{\pgf@circ@font@tiny$\vartheta$}
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.62\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.62\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.45\pgf@circ@res@left}{.7\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.45\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Generic tunable
-\pgfcircdeclarebipolescaled{resistors}
-{
- \savedanchor{\wiper}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@ya=\ctikzvalof{bipoles/generic potentiometer/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@ya
- \pgf@xa=\ctikzvalof{bipoles/generic potentiometer/width}\pgf@circ@scaled@Rlen
- \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/generic potentiometer/wiper pos}-0.5)*\pgf@xa}
- }
- \anchor{wiper}{\wiper}
- \anchor{W}{\wiper}
-}
-{\ctikzvalof{bipoles/generic potentiometer/height 2}}
-{genericpotentiometer}
-{\ctikzvalof{bipoles/generic potentiometer/height}}
-{\ctikzvalof{bipoles/generic potentiometer/width}}
-{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
- \pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \pgfextractx{\pgf@circ@res@other}{\wiper}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Zig zag resistores
-\def\pgf@circ@zigzag#1{%
- \divide \pgf@circ@res@step by \numexpr4*\zigs\relax
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \pgf@circ@count@a=\zigs\relax
- % first half zig
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}}
- \pgfmathloop%
- \advance\pgf@circ@count@a by -1\relax% Loop zigs -1 times
- \ifnum\pgf@circ@count@a>0
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-#1\pgf@circ@res@down}}
- \repeatpgfmathloop%
- % last zig and a half
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbeveljoin
- \pgfusepath{draw}
-}
-
-%% Resistor
-\pgfcircdeclarebipolescaled{resistors}
-{
-\savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
-}
-{\ctikzvalof{bipoles/resistor/height}}
-{resistor}
-{\ctikzvalof{bipoles/resistor/height}}
-{\ctikzvalof{bipoles/resistor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \pgf@circ@zigzag{1}
-}
-
-
-%% Variable resistor
-\pgfcircdeclarebipolescaled{resistors}
-{
-\savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
-}
-{\ctikzvalof{bipoles/vresistor/height}}
-{vresistor}
-{\ctikzvalof{bipoles/vresistor/height}}
-{\ctikzvalof{bipoles/vresistor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/vresistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \pgf@circ@zigzag{.5}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Potentiometer
-\pgfcircdeclarebipolescaled{resistors}
-{
- \savedanchor{\wiper}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen
- \pgf@ya=\ctikzvalof{bipoles/potentiometer/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@ya
- \pgf@xa=\ctikzvalof{bipoles/potentiometer/width}\pgf@circ@scaled@Rlen
- \pgfmathsetlength{\pgf@x}{(\ctikzvalof{bipoles/potentiometer/wiper pos}-0.5)*\pgf@xa}
- }
- \anchor{wiper}{\wiper}
- \anchor{W}{\wiper}
- \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
-}
-{\ctikzvalof{bipoles/potentiometer/height 2}}
-{potentiometer}
-{\ctikzvalof{bipoles/potentiometer/height}}
-{\ctikzvalof{bipoles/potentiometer/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/potentiometer/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \pgf@circ@zigzag{1}
-
- \pgfscope
- %\pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \pgfextractx{\pgf@circ@res@other}{\wiper}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Resistive sensor
-\pgfcircdeclarebipolescaled{resistors}
-{% anchor for labelling the type of dependency
- \anchor{label}{\southwest\pgf@x=0.4\pgf@x}%
- \savedmacro{\zigs}{\edef\zigs{\ctikzvalof{resistors/zigs}}}
-}
-{\ctikzvalof{bipoles/resistivesens/height}}
-{resistivesens}
-{\ctikzvalof{bipoles/resistivesens/height}}
-{\ctikzvalof{bipoles/resistivesens/width}}
-{%
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistivesens/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
- \pgf@circ@zigzag{.5}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-.9\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%%%%%%%%%%%%%%
-%% Capacitors
-%%%%%%%%%%%%%
-
-%% Plain Capacitor
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/capacitor/height}}
-{capacitor}
-{\ctikzvalof{bipoles/capacitor/height}}
-{\ctikzvalof{bipoles/capacitor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
-}
-
-%% Capacitive sensor
-\pgfcircdeclarebipolescaled{capacitors}
-{
- \anchor{label}{\southwest\pgf@x=2.6\pgf@x\pgf@y=1.2\pgf@y}%
- \pgfcirc@border@extend@full{2.6}{1}{4.4}{1.2}
-}
-{\ctikzvalof{bipoles/capacitor/height}}
-{capacitivesens}
-{\ctikzvalof{bipoles/capacitor/height}}
-{\ctikzvalof{bipoles/capacitor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{2.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-2.6\pgf@circ@res@right}{1.2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-4.4\pgf@circ@res@right}{1.2\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Polar Capacitor (DEPRECATED)
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/pcapacitor/height}}
-{polarcapacitor}
-{\ctikzvalof{bipoles/pcapacitor/height}}
-{\ctikzvalof{bipoles/pcapacitor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+ \ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgftransformrotate{-90}
- \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/pcapacitor/bend width}\pgf@circ@res@left}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-%% Curved capacitor
-% see https://tex.stackexchange.com/questions/509594/polar-capacitor-orientation-in-circuitikz-seems-wrong
-% for a rationale
-%
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/ccapacitor/height}}
-{ccapacitor}
-{\ctikzvalof{bipoles/ccapacitor/height}}
-{\ctikzvalof{bipoles/ccapacitor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+ \ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgftransformrotate{-90}
- \pgfpathsine{\pgfpoint{\pgf@circ@res@up}{-\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}}
- \pgfpathcosine{\pgfpoint{\pgf@circ@res@up}{\ctikzvalof{bipoles/ccapacitor/bend width}\pgf@circ@res@right}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-
-
-
-%% Electrolytic Capacitor
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/ecapacitor/height}}
-{ecapacitor}
-{\ctikzvalof{bipoles/ecapacitor/height}}
-{\ctikzvalof{bipoles/ecapacitor/width}}
-{
- \pgfsetrectcap
- % % % Draw plus pole
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
- % % Draw minus pole
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfsetfillcolor{\ctikzvalof{color}}
- \pgfusepath{draw,fill}
- \pgfsetfillcolor{\ctikzvalof{color}}
- % % plus pole annotation
- \pgftext[right,at=\pgfpoint{1.2\pgf@circ@res@left}{.6\pgf@circ@res@up}]
- {\ctikzvalof{bipoles/ecapacitor/font} $+$}
-}
-
-%% Variable Capacitor
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/vcapacitor/height}}
-{vcapacitor}
-{\ctikzvalof{bipoles/vcapacitor/height}}
-{\ctikzvalof{bipoles/vcapacitor/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vcapacitor/capacitor width} \pgf@circ@res@right
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfusepath{draw}
-}
-
-
-%% Piezoelectric Element
-
-\pgfcircdeclarebipolescaled{capacitors}
-{}
-{\ctikzvalof{bipoles/piezoelectric/height}}
-{piezoelectric}
-{\ctikzvalof{bipoles/piezoelectric/height}}
-{\ctikzvalof{bipoles/piezoelectric/width}}
-{
- % \pgf@circ@res@step = \ctikzvalof{bipoles/piezoelectric/width}\pgf@circ@Rlen
- % \divide \pgf@circ@res@step by 5
-
- %% Outer markings
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %% Inner Box
- \pgf@circ@res@step = \pgf@circ@res@right \divide \pgf@circ@res@step by 10
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners
- {\pgfpoint{\pgf@circ@res@left+4*\pgf@circ@res@step}{\pgf@circ@res@up-\pgf@circ@res@step}}
- {\pgfpoint{\pgf@circ@res@right-4*\pgf@circ@res@step}{\pgf@circ@res@down+\pgf@circ@res@step}}
- \pgf@circ@draworfill
- \endpgfscope
-}
-
-%%%%%%%%%%%%%%%
-%% Inductors
-%%%%%%%%%%%%%%%
-
-%% cute inductor
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
- \ctikzvalof{bipoles/cuteinductor/height} :% even
- -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
-{cuteinductor}
-{\ctikzvalof{bipoles/cuteinductor/height}}
-{\ctikzvalof{bipoles/cuteinductor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% cute inductive sensor
-\pgfcircdeclarebipolescaled{inductors}
-{% anchor for labelling the type of dependency
- \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}%
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
- \ctikzvalof{bipoles/cuteinductor/height} :% even
- -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
- \pgfcirc@border@extend@full{1}{2}{1.6}{2.6}
-}
-{\ctikzvalof{bipoles/cuteinductor/lower coil height}}
-{scuteinductor}
-{\ctikzvalof{bipoles/cuteinductor/height}}
-{\ctikzvalof{bipoles/cuteinductor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cuteinductor/coil aspect}*\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/cuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cuteinductor/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% cute choke
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
- \ctikzvalof{bipoles/cuteinductor/height} :% even
- -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/cutechoke/lower coil height}}
-{cutechoke}
-{\ctikzvalof{bipoles/cutechoke/height}}
-{\ctikzvalof{bipoles/cutechoke/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/cutechoke/coil aspect}*\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen/(\ctikzvalof{bipoles/cutechoke/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/cutechoke/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/cutechoke/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/cutechoke/coils}/2}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/cutechoke/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
- \pgfusepath{stroke}
-
- \ifpgf@circuit@bipole@twolineschoke
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth+\ctikzvalof{bipoles/cutechoke/cdist}\pgf@circ@res@up+\ctikzvalof{bipoles/cutechoke/cstep}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
- \pgfusepath{stroke}
- \fi
-}
-
-%% variable cute inductor
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/cuteinductor/coils},2) ?%
- \ctikzvalof{bipoles/cuteinductor/height} :% even
- -\ctikzvalof{bipoles/cuteinductor/lower coil height}) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/vcuteinductor/lower coil height}}
-{vcuteinductor}
-{\ctikzvalof{bipoles/vcuteinductor/height}}
-{\ctikzvalof{bipoles/vcuteinductor/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@other}%width of small coil
- {0.5*\ctikzvalof{bipoles/vcuteinductor/coil aspect}*\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen/(\ctikzvalof{bipoles/vcuteinductor/coils}-1)}
-
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf@circ@res@other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {2,...,\ctikzvalof{bipoles/vcuteinductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfpatharc{0}{-180}{\pgf@circ@res@other and -.5\pgf@circ@res@down}
- }
- \pgfpatharc{180}{0}{\pgf@circ@res@step and .5\pgf@circ@res@up}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% american inductor
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?%
- 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even
- 0) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/americaninductor/height 2}}
-{americaninductor}
-{\ctikzvalof{bipoles/americaninductor/height}}
-{\ctikzvalof{bipoles/americaninductor/width}}
-{
- \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-
-%% american inductive sensor
-\pgfcircdeclarebipolescaled{inductors}
-{% anchor for labelling the type of dependency
- \anchor{label}{\southwest\pgf@x=0.8\pgf@x\pgf@y=2.6\pgf@y}%
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/americaninductor/coils},2) ?%
- 2*\ctikzvalof{bipoles/americaninductor/coil height} :% even
- 0) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
- \pgfcirc@border@extend@full{1}{2}{1.6}{2.6}
-}
-{\ctikzvalof{bipoles/americaninductor/height 2}}
-{samericaninductor}
-{\ctikzvalof{bipoles/americaninductor/height}}
-{\ctikzvalof{bipoles/americaninductor/width}}
-{
- \pgf@circ@res@step=\ctikzvalof{bipoles/americaninductor/width}\pgf@circ@scaled@Rlen
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/americaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/americaninductor/coil height}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/americaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.8\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-1.6\pgf@circ@res@right}{2.6\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% variable american inductor
-\pgfcircdeclarebipolescaled{inductors}
-{
- \savedanchor{\midtap}{%
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@y}{%
- (mod(\ctikzvalof{bipoles/vamericaninductor/coils},2) ?%
- 2*\ctikzvalof{bipoles/vamericaninductor/coil height} :% even
- 0) %odd
- *\pgf@circ@scaled@Rlen/2
- }
- }
- \anchor{midtap}{\midtap}
-}
-{\ctikzvalof{bipoles/vamericaninductor/height 2}}
-{vamericaninductor}
-{\ctikzvalof{bipoles/vamericaninductor/height}}
-{\ctikzvalof{bipoles/vamericaninductor/width}}
-{
- \pgf@circ@res@step=\ctikzvalof{bipoles/vamericaninductor/width}\pgf@circ@scaled@Rlen
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \advance \pgf@circ@res@step by \pgfhorizontaltransformationadjustment\pgflinewidth
- \divide \pgf@circ@res@step by \ctikzvalof{bipoles/vamericaninductor/coils}
- \divide \pgf@circ@res@step by 2
- \pgf@circ@res@other = \ctikzvalof{bipoles/vamericaninductor/coil height}\pgf@circ@scaled@Rlen
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{-\pgfverticaltransformationadjustment*0.4*\pgfstartlinewidth}}%correct value would be 0.5 but arcs are not really flat, therefore 0.4 is better is (almost) all cases
- \foreach \x in {1,...,\ctikzvalof{bipoles/vamericaninductor/coils}}
- {
- \pgfpatharc{180}{0}{\pgf@circ@res@step and \pgf@circ@res@other}
- }
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Generic bipole, filled - used as inductor by some
-\pgfcircdeclarebipolescaled{inductors}
-{
- \anchor{midtap}{\northeast\pgf@x=0pt\relax}
-}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{fullgeneric}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{\ctikzvalof{bipoles/fullgeneric/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfusepath{draw,fill}
-}
-
-%% Generic sensor, filled - used as inductive sensor by some
-\pgfcircdeclarebipolescaled{inductors}
-{% anchor for labelling the type of dependency
- \anchor{label}{\southwest\pgf@x=0.4\pgf@x\pgf@y=2\pgf@y}%
- \anchor{midtap}{\northeast\pgf@x=0pt\relax}
- \pgfcirc@border@extend@full{1}{2}{1}{2}
-}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{sfullgeneric}
-{\ctikzvalof{bipoles/fullgeneric/height}}
-{\ctikzvalof{bipoles/fullgeneric/width}}
-{
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw,fill}
- %\pgfscope
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{2\pgf@circ@res@down}}
- \pgfusepath{draw}
- %\endpgfscope
-}
-
-%% Generic full tunable
-\pgfcircdeclarebipolescaled{inductors}
-{
- \anchor{midtap}{\northeast\pgf@x=0pt\relax}
-}
-{\ctikzvalof{bipoles/tfullgeneric/height}}
-{tfullgeneric}
-{\ctikzvalof{bipoles/tfullgeneric/height}}
-{\ctikzvalof{bipoles/tfullgeneric/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/resistor/width}\pgf@circ@Rlen
- \divide \pgf@circ@res@step by 14
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{.4\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw,fill}
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{.5\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-.5\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%%%%%%%%%%%
-%% Battery
-%%%%%%%%%%%
-
-%% Battery
-\pgfcircdeclarebipolescaled{batteries}
-{}
-{\ctikzvalof{bipoles/battery/height}}
-{battery}
-{\ctikzvalof{bipoles/battery/height}}
-{\ctikzvalof{bipoles/battery/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/battery/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 6
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \ifpgf@circ@fixbatteries
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-}
-
-
-%% Battery 1 % poles with equl thickness
-
-\pgfcircdeclarebipolescaled{batteries}
-{}
-{\ctikzvalof{bipoles/battery1/height}}
-{battery1}
-{\ctikzvalof{bipoles/battery1/height}}
-{\ctikzvalof{bipoles/battery1/width}}
-{
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \ifpgf@circ@fixbatteries
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-}
-
-%% Battery 2 % negative pole thicker
-
-\pgfcircdeclarebipolescaled{batteries}
-{}
-{\ctikzvalof{bipoles/battery2/height}}
-{battery2}
-{\ctikzvalof{bipoles/battery2/height}}
-{\ctikzvalof{bipoles/battery2/width}}
-{
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \ifpgf@circ@fixbatteries
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{3\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{3\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%
-%% Round and diamond sources
-%%%%%%%%%%%
-
-%% Independent voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsource/height}}
-{vsource}
-{\ctikzvalof{bipoles/vsource/height}}
-{\ctikzvalof{bipoles/vsource/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-%% To change the internal symbols of the voltage source american style
-\ctikzset{bipoles/vsourceam/inner plus/.initial={$+$}}
-\ctikzset{bipoles/vsourceam/inner minus/.initial={$-$}}
-%% Independent voltage source - American style
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsourceam/height}}
-{vsourceAM}
-{\ctikzvalof{bipoles/vsourceam/height}}
-{\ctikzvalof{bipoles/vsourceam/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfsetcolor{\ctikzvalof{color}}
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner plus}}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner minus}}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@down]{\ctikzvalof{bipoles/vsourceam/inner minus}}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/vsourceam/margin}\pgf@circ@res@up]{\ctikzvalof{bipoles/vsourceam/inner plus}}
- \fi
-}
-
-%% Independent sinusoidal voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsourcesin/height}}
-{vsourcesin}
-{\ctikzvalof{bipoles/vsourcesin/height}}
-{\ctikzvalof{bipoles/vsourcesin/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Square Voltage source - contributed by Alistair Kwan
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsourcesquare/height}}
-{vsourcesquare}
-{\ctikzvalof{bipoles/vsourcesquare/height}}
-{\ctikzvalof{bipoles/vsourcesquare/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-1\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{-1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% Triangle Voltage source - contributed by Ralf Farkas
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsourcetri/height}}
-{vsourcetri}
-{\ctikzvalof{bipoles/vsourcetri/height}}
-{\ctikzvalof{bipoles/vsourcetri/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-1\pgf@circ@res@up}{0cm}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@up}{0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@up}{-0.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1\pgf@circ@res@up}{0\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% PV Source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/pvsource/height}}
-{pvsource}
-{\ctikzvalof{bipoles/pvsource/height}}
-{\ctikzvalof{bipoles/pvsource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@left}{.4\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.15\pgf@circ@res@right}{.6\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- %Arrow Part
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{.3\pgf@circ@res@left}{0}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{2.2\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{0}{0.3\pgf@circ@res@up}}{\pgfpointpolar{-45}{1.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty Source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/esource/height}}
-{esource}
-{\ctikzvalof{bipoles/esource/height}}
-{\ctikzvalof{bipoles/esource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-}
-
-%% DC Current Source with open shape
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/dcisource/height}}
-{dcisource}
-{\ctikzvalof{bipoles/dcisource/height}}
-{\ctikzvalof{bipoles/dcisource/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@maybefill
- \edef\@@angle{\ctikzvalof{bipoles/dcisource/angle}}
- \pgfpathmoveto{\pgfpointpolar{\@@angle}{\pgf@circ@res@up}}
- \pgfpatharc{\@@angle}{-\@@angle}{\pgf@circ@res@up}
- \pgfpathmoveto{\pgfpointpolar{180-\@@angle}{\pgf@circ@res@up}}
- \pgfpatharc{180-\@@angle}{180+\@@angle}{\pgf@circ@res@up}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% DC-Voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/dcvsource/height}}
-{dcvsource}
-{\ctikzvalof{bipoles/dcvsource/height}}
-{\ctikzvalof{bipoles/dcvsource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{.5\pgf@circ@res@right}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@left}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@down}{.5\pgf@circ@res@right}}
- \pgfusepath{draw}
-}
-
-%% Independent current source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isource}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
-}
-
-%% Independent double oo source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/oosource/height}}
-{oosource}
-{\ctikzvalof{bipoles/oosource/height}}
-{\ctikzvalof{bipoles/oosource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
- \pgf@circ@maybefill
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@right}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@right}
- \pgf@circ@draworfill
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosource/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosource/circlesize}\pgf@circ@res@left}
- \pgfusepath{draw}
-}
-
-% % % winding symbols
-% triangle
-\def\pgf@circ@delta#1{
- \pgfscope
- \pgftransformscale{-.01\pgf@circ@res@left*#1}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \pgftransformrotate{-\pgfcircmathresult}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0}{.866\pgf@circ@res@up}}
- \pgfpathclose
- \pgfusepath{stroke}
- \endpgfscope
-}
-
-% star
-\def\pgf@circ@wye#1{
- \pgfscope
- \pgftransformscale{-.015\pgf@circ@res@left*#1}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \pgftransformrotate{-\pgfcircmathresult}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpointorigin}
- \pgfpathlineto{\pgfpointpolar{-30}{\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpointpolar{-150}{\pgf@circ@res@down}}
- \pgfusepath{stroke}
- \endpgfscope
-}
-
-% zigzag
-\def\pgf@circ@zig#1{
- \pgfscope
- \pgftransformscale{-.015\pgf@circ@res@left*#1}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \pgftransformrotate{-\pgfcircmathresult}
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpointpolar{90}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{60}{\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpointpolar{210}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{0}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpointpolar{330}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{-60}{\pgf@circ@res@up}}
- \pgfusepath{stroke}
- \endpgfscope
-}
-
-% % % % round three-phase transformer
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/oosourcetrans/height}}
-{oosourcetrans}
-{\ctikzvalof{bipoles/oosourcetrans/height}}
-{\ctikzvalof{bipoles/oosourcetrans/width}}
-{
-
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
- \pgf@circ@maybefill
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@right}{0}}
- {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
- \pgf@circ@draworfill
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/oosourcetrans/circleoffset}\pgf@circ@res@left}{0}}
- {\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
- \pgfusepath{draw}
-
-
-% % % % draw inner symbols
-
- %%primary winding
- \ifpgf@circ@prim@delta
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
- \pgf@circ@delta{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@prim@wye
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
- \pgf@circ@wye{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@prim@zig
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@left}
- \pgf@circ@zig{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
- \endpgfscope
- \fi\fi\fi
-
- %%secondary winding
- \ifpgf@circ@sec@delta
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
- \pgf@circ@delta{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@sec@wye
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
- \pgf@circ@wye{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@sec@zig
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/oosourcetrans/circlesize}\pgf@circ@res@right}
- \pgf@circ@zig{\ctikzvalof{bipoles/oosourcetrans/vectorgroupscale}}
- \endpgfscope
- \fi\fi\fi
-}
-
-
-% % % % ooosource for three phase transformer
-\pgfcircdeclarebipolescaled{sources}
-{
- \anchor{right}{
- \northeast
- \pgf@y=0pt
- \pgfmathparse{
- \ctikzvalof{bipoles/ooosource/circleoffset}* sin(30) +
- %%the sqrt must be > 0, the circles have to intersect
- sqrt(
- pow(\ctikzvalof{bipoles/ooosource/circlesize},2) -
- pow(\ctikzvalof{bipoles/ooosource/circleoffset}*cos(30),2)
- )
- }
- \pgf@x=\pgfmathresult\pgf@x
- }
- \anchor{east}{
- \northeast
- \pgf@y=0pt
- }
- \savedanchor{\centerprim}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen
- \pgf@y=0pt
- \pgf@x=.5\pgf@circ@scaled@Rlen
- }
- \anchor{centerprim}{
- \centerprim
- }
- \savedanchor{\centersec}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen
- \pgfpointpolar{60}{.5\pgf@circ@scaled@Rlen}
- \pgf@y=-\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{centersec}{
- \centersec
- }
- \savedanchor{\centertert}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=-\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@scaled@Rlen
- \pgfpointpolar{60}{.5\pgf@circ@scaled@Rlen}
- \pgf@y=\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{centertert}{
- \centertert
- }
-
- % add some anchors in case the are needed :)
- \anchor{prim1}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centerprim}{\pgfpointpolar{135}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{prim2}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centerprim}{\pgfpointpolar{-135}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{sec1}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centersec}{\pgfpointpolar{0}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{sec2}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centersec}{\pgfpointpolar{45}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{sec3}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centersec}{\pgfpointpolar{90}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{tert1}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centertert}{\pgfpointpolar{0}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{tert2}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centertert}{\pgfpointpolar{-45}{.5\pgf@circ@scaled@Rlen}}
- }
- \anchor{tert3}{
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/height}\pgf@circ@Rlen
- \pgf@circ@scaled@Rlen=\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@scaled@Rlen
- \pgfpointadd{\centertert}{\pgfpointpolar{-90}{.5\pgf@circ@scaled@Rlen}}
- }
-}
-{\ctikzvalof{bipoles/ooosource/height}}
-{ooosource}
-{\ctikzvalof{bipoles/ooosource/height}}
-{\ctikzvalof{bipoles/ooosource/height}}
-{
-% \pgf@circ@res@other = \ctikzvalof{bipoles/ooosource/vectorgroup} \pgf@circ@scaled@Rlen
-
-% % filling
-% left
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@left}{0}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left}
- \pgf@circ@maybefill
-
- % up
- \pgfscope
- \pgfpointorigin
- \pgfpathcircle{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}
- \pgf@circ@maybefill
- \endpgfscope
-% down
- \pgfscope
- \pgfpointorigin
- \pgfpathcircle{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}
- \pgf@circ@draworfill
- \endpgfscope
-
-% drawing
- % left
- \pgfpathcircle{\pgfpoint{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@left}{0}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left}
- \pgfusepath{draw}
-
- % up
- \pgfscope
- \pgfpointorigin
- \pgfpathcircle{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circleoffset}\pgf@circ@res@right}}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}
- \pgfusepath{draw}
- \endpgfscope
-
-% % % draw inner symbols
-
-% % primary winding
- \ifpgf@circ@prim@delta
- \pgfscope
- \pgftransformxshift{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@left}
- \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@prim@wye
- \pgfscope
- \pgftransformxshift{.6\pgf@circ@res@left}
- \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@prim@zig
- \pgfscope
- \pgftransformxshift{.6\pgf@circ@res@left}
- \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
- \fi\fi\fi
-
-% % secondary winding
- \ifpgf@circ@sec@delta
- \pgfscope
- \pgfpointorigin
- \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
- \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@sec@wye
- \pgfscope
- \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
- \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@sec@zig
- \pgfscope
- \pgftransformshift{\pgfpointpolar{60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
- \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
- \fi\fi\fi
-
-% % tertiary winding
- \ifpgf@circ@tert@delta
- \pgfscope
- \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
- \pgf@circ@delta{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@tert@wye
- \pgfscope
- \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
- \pgf@circ@wye{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
-
- \else\ifpgf@circ@tert@zig
- \pgfscope
- \pgftransformshift{\pgfpointpolar{-60}{\ctikzvalof{bipoles/ooosource/circlesize}\pgf@circ@res@right}}
- \pgf@circ@zig{\ctikzvalof{bipoles/ooosource/vectorgroupscale}}
- \endpgfscope
- \fi\fi\fi
-}
-
-%% Independent current source - American
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isourceam/height}}
-{isourceAM}
-{\ctikzvalof{bipoles/isourceam/height}}
-{\ctikzvalof{bipoles/isourceam/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% Independent sinusoidal current source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isourcesin}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty controlled source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/ecsource/height}}
-{ecsource}
-{\ctikzvalof{bipoles/ecsource/height}}
-{\ctikzvalof{bipoles/ecsource/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-}
-
-%% Controlled voltage source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsource/height}}
-{cvsource}
-{\ctikzvalof{bipoles/cvsource/height}}
-{\ctikzvalof{bipoles/cvsource/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-%% To change the internal symbols of the controlled voltage source american style
-\ctikzset{bipoles/cvsourceam/inner plus/.initial={$+$}}
-\ctikzset{bipoles/cvsourceam/inner minus/.initial={$-$}}
-%% Controlled voltage source - American
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsourceam/height}}
-{cvsourceAM}
-{\ctikzvalof{bipoles/cvsourceam/height}}
-{\ctikzvalof{bipoles/cvsourceam/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfsetcolor{\ctikzvalof{color}}
- \ifpgf@circ@oldvoltagedirection
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{\ctikzvalof{bipoles/cvsourceam/inner plus}}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{\ctikzvalof{bipoles/cvsourceam/inner minus}}
- \else
- \pgftext[bottom,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@left]{\ctikzvalof{bipoles/cvsourceam/inner minus}}
- \pgftext[top,rotate=90,y=\ctikzvalof{bipoles/cvsourceam/margin}\pgf@circ@res@right]{\ctikzvalof{bipoles/cvsourceam/inner plus}}
- \fi
-}
-
-%% Controlled sinusoidal voltage source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{cvsourcesin}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{\ctikzvalof{bipoles/cvsourcesin/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Controlled sinusoidal current source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{cisourcesin}
-{\ctikzvalof{bipoles/cvsourcesin/height}}
-{\ctikzvalof{bipoles/cvsourcesin/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgfscope
- \pgftransformrotate{90}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{.5\pgf@circ@res@up}{-.5\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Controlled current source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cisource/height}}
-{cisource}
-{\ctikzvalof{bipoles/cisource/height}}
-{\ctikzvalof{bipoles/cisource/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-%% Controlled current source - American
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cisourceam/height}}
-{cisourceAM}
-{\ctikzvalof{bipoles/cisourceam/height}}
-{\ctikzvalof{bipoles/cisourceam/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.7\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{.5\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%% Cute Independent voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsource/height}}
-{vsourceC}
-{\ctikzvalof{bipoles/vsource/height}}
-{\ctikzvalof{bipoles/vsource/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Cute Independent current source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isourceC}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Cute Controlled voltage source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cvsource/height}}
-{cvsourceC}
-{\ctikzvalof{bipoles/cvsource/height}}
-{\ctikzvalof{bipoles/cvsource/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Cute Controlled current source
-\pgfcircdeclarebipolescaled{csources}
-{}
-{\ctikzvalof{bipoles/cisource/height}}
-{cisourceC}
-{\ctikzvalof{bipoles/cisource/height}}
-{\ctikzvalof{bipoles/cisource/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@draworfill
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{.6\pgf@circ@res@down}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%% Noise voltage source
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/vsource/height}}
-{vsourceN}
-{\ctikzvalof{bipoles/vsource/height}}
-{\ctikzvalof{bipoles/vsource/width}}
-{
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- %
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax
- \edef\pgf@noise@temp{dashed}
- \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}}
- \ifx\pgf@noise@temp\pgf@noise@fill
- % fillable in this case
- \pgf@circ@draworfillandclip
- \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thinner\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- %
- \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \else
- \pgfsetfillcolor{\pgf@noise@fill}
- \pgfusepath{draw,fill}
- \fi
- \endpgfscope
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-%% Noise current source
-
-\pgfcircdeclarebipolescaled{sources}
-{}
-{\ctikzvalof{bipoles/isource/height}}
-{isourceN}
-{\ctikzvalof{bipoles/isource/height}}
-{\ctikzvalof{bipoles/isource/width}}
-{
- \pgfpointorigin
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- %
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=0.125\pgf@circ@scaled@Rlen\relax
- \edef\pgf@noise@temp{dashed}
- \edef\pgf@noise@fill{\ctikzvalof{bipoles/noise sources/fillcolor}}
- \ifx\pgf@noise@temp\pgf@noise@fill
- % fillable in this case
- \pgf@circ@draworfillandclip
- \pgfmathsetmacro{\@@thinner}{.5*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thinner\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by \pgf@circ@res@step\advance\pgf@circ@res@down by \pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- %
- \advance\pgf@circ@res@up by -4\pgf@circ@res@step \advance\pgf@circ@res@down by -4\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@up by -\pgf@circ@res@step\advance\pgf@circ@res@down by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \else
- \pgfsetfillcolor{\pgf@noise@fill}
- \pgfusepath{draw,fill}
- \fi
- \endpgfscope
- \pgfmathsetmacro{\@@thicker}{3*\ctikzvalof{bipoles/thickness}}
- \pgfsetlinewidth{\@@thicker\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{.6\pgf@circ@res@down}}
- \pgfsetroundcap\pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%%
-%% Diodes
-%%%%%%%%%%%%%%
-
-%% Black generic diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fulldiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Black Zener diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black alternative zigzag Zener diode
-\pgfcircdeclarebipolescaled{diodes}
-{% fix the anchor border
- \pgfcirc@border@extend@updown{1.3}{1.3}
-}
-{\ctikzvalof{bipoles/diode/height}}
-{fullzzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Black Schottky diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fullsdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Black tunnel diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{fulltdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%
-% draw LED arrows
-%
-\def\pgf@circ@draw@ledarrows{%
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latexslim}
- \ifpgf@led@fliparrows
- \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-0.6\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@right}{0.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{1.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \else
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
- \fi
-}
-%
-% ---and photodiode arrows
-%
-\def\pgf@circ@draw@pdarrows{%
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsstart{latexslim}
- \ifpgf@pd@fliparrows
- \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-0.6\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@right}{0.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{1.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \else
- \pgfpathmoveto{\pgfpoint{-0.4\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.2\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{1.2\pgf@circ@res@right}{1.8\pgf@circ@res@up}}
- \pgfusepath{draw}
- \fi
-}
-%% Black light emitting diode
-\pgfcircdeclarebipolescaled{diodes}
-{% fix the anchor border
- \pgfcirc@border@extend@updown{1.8}{1}
-}
-{\ctikzvalof{bipoles/diode/height}}
-{fulllediode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgf@circ@draw@ledarrows
-}
-
-%% Black photodiode
-\pgfcircdeclarebipolescaled{diodes}
-{% fix the anchor border
- \pgfcirc@border@extend@updown{1.8}{1}
-}
-{\ctikzvalof{bipoles/diode/height}}
-{fullpdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw,fill}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgf@circ@draw@pdarrows
-}
-
-%% Black varcap
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/varcap/height}}
-{fullvarcap}
-{\ctikzvalof{bipoles/varcap/height}}
-{\ctikzvalof{bipoles/varcap/width}}
-{
- \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgfsetlinewidth{\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfusepath{draw,fill}
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Code for the diode triangle
-\def\pgf@circ@basicdiodeshape{
- % \pgfscope
- \pgftransformxshift{\pgf@circ@res@left}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfscope
- % to allow filling, we need to draw explicitly the stroke here.
- \pgfsetlinewidth{\pgfstartlinewidth}
- \ifpgf@circuit@bipole@strokedsymbol
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
- % \endpgfscope
-}
-
-%% Empty generic diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptydiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty Zener diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptyzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty alternative zigzag Zener diode
-\pgfcircdeclarebipolescaled{diodes}
-{% fix the anchor border
- \pgfcirc@border@extend@updown{1.3}{1.3}
-}
-{\ctikzvalof{bipoles/diode/height}}
-{emptyzzdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-%% Empty Schottky diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptysdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{.6\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-1.4\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
-}
-
-%% Empty tunnel diode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/diode/height}}
-{emptytdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Empty light emitting diode
-\pgfcircdeclarebipolescaled{diodes}
-{% fix the anchor border
- \pgfcirc@border@extend@updown{1.8}{1}
-}
-{\ctikzvalof{bipoles/diode/height}}
-{emptylediode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgf@circ@draw@ledarrows
-}
-
-%% Empty photodiode
-\pgfcircdeclarebipolescaled{diodes}
-{% fix the anchor border
- \pgfcirc@border@extend@updown{1.8}{1}
-}
-{\ctikzvalof{bipoles/diode/height}}
-{emptypdiode}
-{\ctikzvalof{bipoles/diode/height}}
-{\ctikzvalof{bipoles/diode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope
- \pgf@circ@basicdiodeshape
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgf@circ@draw@pdarrows
-}
-
-%% Empty varcap
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/varcap/height}}
-{emptyvarcap}
-{\ctikzvalof{bipoles/varcap/height}}
-{\ctikzvalof{bipoles/varcap/width}}
-{
- \pgf@circ@res@temp=\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgfsetlinewidth{\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- % \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfscope
- % to allow filling, we need to draw explicitily the stroke here.
- \pgfsetlinewidth{\pgfstartlinewidth}
- \ifpgf@circuit@bipole@strokedsymbol
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
- %
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-2\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Empty bidirectionaldiode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{emptybidirectionaldiode}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{\ctikzvalof{bipoles/bidirectionaldiode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgf@circ@draworfill
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%% Full bidirectionaldiode
-\pgfcircdeclarebipolescaled{diodes}
-{}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{fullbidirectionaldiode}
-{\ctikzvalof{bipoles/bidirectionaldiode/height}}
-{\ctikzvalof{bipoles/bidirectionaldiode/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/bidirectionaldiode/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{bipoles/bidirectionaldiode/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw, fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%% Black thyristor
-\pgfcircdeclarebipolescaled{diodes}
-{
- \anchor{gate}{\northeast}
- \anchor{anode}{\southwest\pgf@y=0cm}
- \anchor{G}{\northeast}
- \anchor{cathode}{\northeast\pgf@y=0cm }
-}
-{\ctikzvalof{tripoles/thyristor/height 2}}
-{fullthyristor}
-{\ctikzvalof{tripoles/thyristor/height}}
-{\ctikzvalof{tripoles/thyristor/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-
-}
-
-%% Empty thyristor
-
-\pgfcircdeclarebipolescaled{diodes}
-{
- \anchor{gate}{\northeast}
- \anchor{anode}{\southwest\pgf@y=0cm}
- \anchor{G}{\northeast}
- \anchor{cathode}{\northeast\pgf@y=0cm }
-}
-{\ctikzvalof{tripoles/thyristor/height 2}}
-{emptythyristor}
-{\ctikzvalof{tripoles/thyristor/height}}
-{\ctikzvalof{tripoles/thyristor/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/thyristor/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/thyristor/diode width right}\pgf@circ@res@right
-
- \pgfscope
- \pgftransformxshift{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
-
- \pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfscope
- % to allow filling, we need to draw explicitily the stroke here.
- \pgfsetlinewidth{\pgfstartlinewidth}
- \ifpgf@circuit@bipole@strokedsymbol
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\ctikzvalof{tripoles/thyristor/diode height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{2*\pgf@circ@res@step-2*\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%% Empty triac
-\pgfcircdeclarebipolescaled{diodes}
-{
- \anchor{gate}{\northeast}
- \anchor{anode}{\southwest\pgf@y=0cm}
- \anchor{G}{\northeast}
- \anchor{cathode}{\northeast\pgf@y=0cm }
-}
-{\ctikzvalof{tripoles/triac/height}}
-{emptytriac}
-{\ctikzvalof{tripoles/triac/height}}
-{\ctikzvalof{tripoles/triac/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgf@circ@draworfill
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%% Full triac
-\pgfcircdeclarebipolescaled{diodes}
-{
- \anchor{gate}{\northeast}
- \anchor{anode}{\southwest\pgf@y=0cm}
- \anchor{G}{\northeast}
- \anchor{cathode}{\northeast\pgf@y=0cm }
-}
-{\ctikzvalof{tripoles/triac/height}}
-{fulltriac}
-{\ctikzvalof{tripoles/triac/height}}
-{\ctikzvalof{tripoles/triac/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@res@other = \ctikzvalof{tripoles/triac/diode width left}\pgf@circ@res@left
- \pgf@circ@res@step = \ctikzvalof{tripoles/triac/diode width right}\pgf@circ@res@right
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@step}{0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@other}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}}
-
- \pgfusepath{draw,fill}
-
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{-0.707*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-1.414*(\pgf@circ@res@other-\pgf@circ@res@step)}} % sqrt(1/2)
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}} % sqrt(1/2)
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%
-%% switches
-%%%%%%%%%%%%%
-
-%% (Closing) SPST
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/spst/depth}}
-{cspst}
-{\ctikzvalof{bipoles/spst/height}}
-{\ctikzvalof{bipoles/spst/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpointpolar{90}{1.2\pgf@circ@res@right}}
- \pgfpatharc{90}{-20}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfsetbeveljoin
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Opening SPST
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/spst/depth}}
-{ospst}
-{\ctikzvalof{bipoles/spst/height}}
-{\ctikzvalof{bipoles/spst/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
- \pgfpatharc{-10}{90}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfsetbeveljoin
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% Normal open Switch
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/nos/depth}}
-{nos}
-{\ctikzvalof{bipoles/nos/height}}
-{\ctikzvalof{bipoles/nos/width}}
-{
-
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{draw}
-}
-
-%% Normal closed Switch
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/ncs/depth}}
-{ncs}
-{\ctikzvalof{bipoles/ncs/height}}
-{\ctikzvalof{bipoles/ncs/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% Push Button
-\pgfcircdeclarebipolescaled{switches}
-{
- \anchor{tip}{\northeast\pgf@x=0pt\relax}
-}
-{\ctikzvalof{bipoles/pushbutton/height 2}}
-{pushbutton}
-{\ctikzvalof{bipoles/pushbutton/height}}
-{\ctikzvalof{bipoles/pushbutton/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-
-%% Normally closed Push Button
-\pgfcircdeclarebipolescaled{switches}
-{
- \anchor{tip}{\northeast\pgf@x=0pt\relax}
-}
-{\ctikzvalof{bipoles/pushbutton/height 2}}
-{ncpushbutton}
-{\ctikzvalof{bipoles/pushbutton/height}}
-{\ctikzvalof{bipoles/pushbutton/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- % Warning, if the nodes will have a class, we have to touch this.
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp}}
- \pgfpathmoveto{\pgfpoint{0}{-\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- %
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-%% Push Button (normally closed but now open :-) see
-%% https://github.com/circuitikz/circuitikz/issues/128#issuecomment-731771299
-\pgfcircdeclarebipolescaled{switches}
-{
- \anchor{tip}{
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \northeast\divide\pgf@y by 2\advance\pgf@y by \pgf@circ@res@temp
- \pgf@x=0pt\relax
- }
-}
-{\ctikzvalof{bipoles/pushbutton/height 2}}
-{pushbuttonc}
-{\ctikzvalof{bipoles/pushbutton/height}}
-{\ctikzvalof{bipoles/pushbutton/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp}}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up/2+\pgf@circ@res@temp}}
- \pgfusepath{draw}
-
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-
-%% Normally closed Push Button now open
-\pgfcircdeclarebipolescaled{switches}
-{
- \anchor{tip}{
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \northeast\divide\pgf@y by 2\advance\pgf@y by \pgf@circ@res@temp
- \pgf@x=0pt\relax
- }
-}
-{\ctikzvalof{bipoles/pushbutton/height 2}}
-{ncpushbuttono}
-{\ctikzvalof{bipoles/pushbutton/height}}
-{\ctikzvalof{bipoles/pushbutton/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- % Warning, if the nodes will have a class, we have to touch this.
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up/2}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@up/2}}
- \pgfpathmoveto{\pgfpoint{0}{-\pgf@circ@res@up/2}}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@up/2+\pgf@circ@res@temp}}
- \pgfusepath{draw}
- %
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{draw}}
-}
-%%% reed switches
-\pgfcircdeclarebipolescaled{switches}
-{}
-{\ctikzvalof{bipoles/reed/depth}}
-{reed}
-{\ctikzvalof{bipoles/reed/height}}
-{\ctikzvalof{bipoles/reed/width}}
-{
- % this is designed to be the same as a "nos".
- \pgfmathsetmacro{\@@tmpx}{0.9*\ctikzvalof{bipoles/nos/width}/\ctikzvalof{bipoles/reed/width}}
- \pgfmathsetmacro{\@@tmpy}{\ctikzvalof{bipoles/nos/height}/\ctikzvalof{bipoles/reed/height}}
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- % eclosure
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@up}{\pgf@circ@res@up}}
- \pgfpatharc{90}{-90}{\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@up}{-\pgf@circ@res@up}}
- \pgfpatharc{270}{90}{\pgf@circ@res@up}
- \pgfpathclose
- \pgf@circ@draworfill
- % switch
- \pgfpathmoveto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{\@@tmpy\pgf@circ@res@up}}
- % connection lines
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- % connection lines
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\@@tmpx\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-}
-
-% cute switch "to" shapes help function
-% #1 -> name
-% #2 -> barposition
-% #3 -> arrowcode
-\long\def\pgfcircdeclarecutesw#1#2#3{
- \pgfcircdeclarebipolescaled{switches}
- {
- \savedanchor\midlever{
- % these values are calculated when we create the definition of the shape.
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgf@circ@res@down = -.5\pgf@y
- \pgf@circ@res@up = .5\pgf@y
- \pgfextracty{\pgf@circ@res@other}{#2}
- \pgf@x=0pt
- \pgf@y=.5\pgf@circ@res@other
- }
- % radius of the connector
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- % If cnnecting nodes are scaled, we have to modify this
- \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % shape type
- \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
- % mid of the lever, to stack switches
- \anchor{mid}{\midlever}
- \anchor{cout}{\northeast \pgf@y=0cm}
- \anchor{cin}{\southwest\pgf@y=0cm}
- \anchor{out}{\northeast \pgf@y=0cm\advance\pgf@x by \radius}
- \anchor{in}{\southwest\pgf@y=0cm\advance\pgf@x by -\radius}
- }
- {\ctikzvalof{bipoles/cuteswitch/height 2}}
- {#1}
- {\ctikzvalof{bipoles/cuteswitch/height}}
- {\ctikzvalof{bipoles/cuteswitch/width}}{
- \pgfscope
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- % If cnnecting nodes are scaled, we have to modify this
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@Rlen
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgfsetlinewidth{2\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{#2}
- \pgfsetroundcap\pgfusepath{draw}
- \endpgfscope
- \pgfscope % arrow
- #3
- \endpgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{draw}}
- \pgftransformshift{\pgfpoint{2\pgf@circ@res@right}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-out}{\pgfusepath{draw}}
- }
-}
-
-%% closed cute switch
-\pgfcircdeclarecutesw{cuteclosedswitch}
- {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
- {}
-
-%% open cute switch
-\pgfcircdeclarecutesw{cuteopenswitch}
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- {}
-
-%% closing cute switch
-\pgfcircdeclarecutesw{cuteclosingswitch}
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- {
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{70}{1.2\pgf@circ@res@right}}
- \pgfpatharc{70}{-10}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
- }
-
-%% opening cute switch
-\pgfcircdeclarecutesw{cuteopeningswitch}
- {\pgfpoint{\pgf@circ@res@right}{1.5\pgf@circ@res@temp}}
- {
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{-10}{1.2\pgf@circ@res@right}}
- \pgfpatharc{-10}{60}{1.2\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
- }
-
-%%%%%%%%%%%%%%%%%
-%% Instruments
-%%%%%%%%%%%%%%%%%
-
-% % METERINGSHAPE
-\long\def\drawmeteringcircle{
- \def\pgf@circ@temp{right}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \def\pgf@circ@temp{below}
- \ifx\tikz@res@label@pos\pgf@circ@temp
- \pgf@circ@res@step=-1.2\pgf@circ@res@up
- \else
- \pgf@circ@res@step=1.2\pgf@circ@res@up
- \fi
- \fi
- %draw connections to circle
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{.9\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathmoveto{\pgfpoint{.9\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- %draw circle
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgf@circ@draworfill
- \endpgfscope
- %draw arrow
- \pgfscope
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%AMPEREMETER
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/ammeter/height}}
-{ammeter}
-{\ctikzvalof{bipoles/ammeter/height}}
-{\ctikzvalof{bipoles/ammeter/width}}
-{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\pgf@circ@font@bold{A}}{}{}
-}
-%OHMMETER
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/ohmmeter/height}}
-{ohmmeter}
-{\ctikzvalof{bipoles/ohmmeter/height}}
-{\ctikzvalof{bipoles/ohmmeter/width}}
-{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\boldmath$\Omega$}{}{}
-}
-%VOLTMETER
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/voltmeter/height}}
-{voltmeter}
-{\ctikzvalof{bipoles/voltmeter/height}}
-{\ctikzvalof{bipoles/voltmeter/width}}
-{
- \drawmeteringcircle
- \pgfnode{circle}{center}{\pgf@circ@font@bold{V}}{}{}
-
-}
-
-% oscilloscope, suggested by @nobrl https://github.com/circuitikz/circuitikz/issues/176
-\pgfcircdeclarebipolescaled{instruments}
-{
- \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
- \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/oscope/height}}
-{oscope}
-{\ctikzvalof{bipoles/oscope/height}}
-{\ctikzvalof{bipoles/oscope/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\southwest}
- \pgfextracty{\pgf@circ@res@down}{\southwest}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfscope
- \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- % this would create a round (analog?) scope...
- % \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \endpgfscope
- % get the rotation
- \ifpgf@circuit@straightinstruments
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \else
- \edef\rot{0}
- \fi
- % and unrotate the scope
- \pgfscope
- \pgftransformrotate{\rot}
- % grid
- \pgfscope
- \pgfsetlinewidth{0.5\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfpathgrid[stepx=\pgf@circ@res@step, stepy=\pgf@circ@res@step]%
- {\pgfpoint{0.75\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- {\pgfpoint{0.75\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfsetstrokeopacity{0.5}
- \pgfusepath{draw}
- \endpgfscope
- % function displayed, thanks to
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.05\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.65\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% generic round meter with always horizontal text, no arrow
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/esource/height}}
-{rmeter}
-{\ctikzvalof{bipoles/esource/height}}
-{\ctikzvalof{bipoles/esource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- % draw the text label
- % get the rotation
- \ifpgf@circuit@straightinstruments
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \else
- \edef\rot{0}
- \fi
- % and unrotate the scope
- \pgfscope
- \pgfsetcolor{\ctikzvalof{color}}
- \pgftransformrotate{\rot}
- \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
- \endpgfscope
-}
-
-% generic round meter with always horizontal text, with arrow
-\pgfcircdeclarebipolescaled{instruments}
-{}
-{\ctikzvalof{bipoles/esource/height}}
-{rmeterwa}
-{\ctikzvalof{bipoles/esource/height}}
-{\ctikzvalof{bipoles/esource/width}}
-{
- \pgfpointorigin
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- % draw the text label
- % get the rotation
- \ifpgf@circuit@straightinstruments
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \else
- \edef\rot{0}
- \fi
- % and unrotate the scope
- \pgfscope
- \pgftransformrotate{\rot}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfsetlinewidth{\pgfstartlinewidth}
- % arrow: create a center hole to have better visual
- \pgfscope
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
- {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
- % next open a circle into it
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{.6\pgf@circ@res@up}}{\pgfpoint{.6\pgf@circ@res@left}{0}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfsetarrowsend{latexslim}
- % the arrow is better if it has a bit of breath and it's not 45ยบ
- \pgfpathmoveto{\pgfpoint{.8\pgf@circ@res@left}{1.2\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.8\pgf@circ@res@right}{1.2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- \pgftext[center]{\ctikzvalof{bipoles/twoport/text}}
- \endpgfscope
-}
-
-% generic square meter with always horizontal text
-\pgfcircdeclarebipolescaled{instruments}
-{
- \anchor{in 1}{\southwest\pgf@y=0.75\pgf@y\pgf@x=0.4\pgf@x}
- \anchor{in 2}{\southwest\pgf@y=0.75\pgf@y\pgf@x=-0.4\pgf@x}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/smeter/height}}
-{smeter}
-{\ctikzvalof{bipoles/smeter/height}}
-{\ctikzvalof{bipoles/smeter/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\southwest}
- \pgfextracty{\pgf@circ@res@down}{\southwest}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfscope
- \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
- \endpgfscope
- % get the rotation
- \ifpgf@circuit@straightinstruments
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \else
- \edef\rot{0}
- \fi
- % and unrotate the scope
- \pgfscope
- \pgftransformrotate{\rot}
- % the metering window
- \pgfscope
- \def\@starta{105}\def\@stopa{75}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgftransformshift{\pgfpoint{0pt}{-1.8\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{\@starta}{2\pgf@circ@res@up}}
- \pgfpatharc{\@starta}{\@stopa}{2\pgf@circ@res@up}
- \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
- \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
- \pgfclosepath
- \pgfpathmoveto{\pgfpointpolar{80}{2\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{80}{2.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- \pgftext[center, y=0.5\pgf@circ@res@down]{\ctikzvalof{bipoles/twoport/text}}
- \endpgfscope
-}
-
-% probes qucs style:
-% #1 : name
-% #2 : extra code
-\long\def\pgfcirc@qucsprobe#1#2{
- \pgfcircdeclarebipolescaled{instruments}
- {
- \anchor{v+}{\southwest\pgf@x=0.6\pgf@x}
- \anchor{v-}{\southwest\pgf@x=-0.6\pgf@x}
- % put the node text above and centered
- \anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
- }
- {\ctikzvalof{bipoles/qmeter/depth}}
- {#1}
- {\ctikzvalof{bipoles/qmeter/height}}
- {\ctikzvalof{bipoles/qmeter/width}}
- {
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\southwest}
- \pgfextracty{\pgf@circ@res@down}{\southwest}
- \pgfmathsetlength{\pgf@circ@res@step}{0.25*\pgf@circ@res@up}
- \pgfscope
- \pgfscope
- \pgfsetcornersarced{\pgfpoint{\pgf@circ@res@step}{\pgf@circ@res@step}}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@draworfill
- \endpgfscope
- \def\@starta{103}\def\@stopa{77}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfscope
- \pgftransformshift{\pgfpoint{0pt}{-1.7\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{\@starta}{2.1\pgf@circ@res@up}}
- \pgfpatharc{\@starta}{\@stopa}{2.1\pgf@circ@res@up}
- \pgfpathlineto{\pgfpointpolar{\@stopa}{2.5\pgf@circ@res@up}}
- \pgfpatharc{\@stopa}{\@starta}{2.5\pgf@circ@res@up}
- \pgfclosepath
- \pgfpathmoveto{\pgfpointpolar{83}{2.1\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointpolar{83}{2.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgf@circ@draworfill
- \endpgfscope
- #2
- \endpgfscope
- }
-}
-
-\pgfcirc@qucsprobe{qiprobe}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- \pgfnode{currarrow}{center}{}{}{}
-}
-
-\pgfcirc@qucsprobe{qvprobe}{
- \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{0pt}}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}{\pgf@circ@res@other}
- \pgfusepath{draw}
- \pgfscope
- % "+" and "-", drawn so that they scale correctly
- \pgfsetlinewidth{2\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-1.5\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+\pgf@circ@res@other}{-3.5\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right+0\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-2.5\pgf@circ@res@other}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-\pgfcirc@qucsprobe{qpprobe}{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- \pgfnode{currarrow}{center}{}{}{}
- \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{nodes width}*\pgf@circ@scaled@Rlen}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@left}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{-4\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathcircle{\pgfpoint{.6\pgf@circ@res@right}{-3\pgf@circ@res@other}}{\pgf@circ@res@other}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right}{-4\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfscope
- % "+" and "-", drawn so that they scale correctly
- \pgfsetlinewidth{2\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-2\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+3\pgf@circ@res@other}{-4\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left+2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@left+4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@right-4\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right-2\pgf@circ@res@other}{-3\pgf@circ@res@other}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% current loop for oscope and similar: stylized
-\pgfcircdeclarebipolescaled{instruments}
-{
- \anchor{i}{\northeast\pgf@x=0pt\relax}
- \anchor{text}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/iloop/height}}
-{iloop}
-{\ctikzvalof{bipoles/iloop/height}}
-{\ctikzvalof{bipoles/iloop/width}}
-{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@down=-\pgf@circ@res@up
- \pgf@circ@res@left=-\pgf@circ@res@right
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcolor{\ctikzvalof{color}}
- % external ellipse
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
- {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
- % next the opening to the left
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
- {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathellipse{\pgfpointorigin}{
- \pgfpoint{0pt}{0.8\pgf@circ@res@up}}{
- \pgfpoint{0.4\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- \endpgfscope
- % internal wire
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % and the contact line up
- \pgfpathmoveto{\pgfpoint{0pt}{0.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% current loop for oscope and similar: real (double connection)
-\pgfcircdeclarebipolescaled{instruments}
-{
- \anchor{i+}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@step=0.4\pgf@circ@res@right
- \pgf@circ@res@other=0.8\pgf@circ@res@up
- \pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgf@y=\pgf@circ@res@up
- }
- \anchor{i-}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@step=0.4\pgf@circ@res@right
- \pgf@circ@res@other=0.8\pgf@circ@res@up
- \pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgf@y=\pgf@circ@res@up
- }
- \anchor{text}{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@left}{\northeast}
- \pgfpoint{-.5\wd\pgfnodeparttextbox+\pgf@circ@res@left}{
- \dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
- }
- }
-}
-{\ctikzvalof{bipoles/iloop/height}}
-{iloop2}
-{\ctikzvalof{bipoles/iloop/height}}
-{\ctikzvalof{bipoles/iloop/width}}
-{
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgf@circ@res@down=-\pgf@circ@res@up
- \pgf@circ@res@left=-\pgf@circ@res@right
- % must be the same than internal i+ and i- anchors definition
- \pgf@circ@res@step=0.4\pgf@circ@res@right
- \pgf@circ@res@other=0.8\pgf@circ@res@up
- \def\@plus{\pgfpointpolar{105}{\pgf@circ@res@step and \pgf@circ@res@other}}
- \def\@minus{\pgfpointpolar{75}{\pgf@circ@res@step and \pgf@circ@res@other}}
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgfsetcolor{\ctikzvalof{color}}
- % external ellipse
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- % clipping path: first a rectangle bigger then the shape
- % to avoid problems with the line thickness
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{2\pgf@circ@res@down}}
- {\pgfpoint{2\pgf@circ@res@right}{2\pgf@circ@res@up}}
- % next the opening to the left
- \pgfpathrectanglecorners{\pgfpoint{2\pgf@circ@res@left}{.1\pgf@circ@res@down}}
- {\pgfpoint{0pt}{.1\pgf@circ@res@up}}
- % do the difference and clip before drawing
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathmoveto{\@plus}
- \pgfpatharc{105}{435}{\pgf@circ@res@step and \pgf@circ@res@other}
- \pgfusepath{draw}
- \endpgfscope
- % internal wire
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{0pt}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- % and the contact line up
- % I use ...left and ---right as temporal lengths here to avoid defining more
- \pgfextractx{\pgf@circ@res@left}{\@plus}
- \pgfextractx{\pgf@circ@res@right}{\@minus}
- \pgfpathmoveto{\@plus}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathmoveto{\@minus}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-
-%% Varistor
-\pgfcircdeclarebipolescaled{resistors}
-{
- \pgfcirc@border@extend@updown{1}{1.4}
-}
-{\ctikzvalof{bipoles/varistor/height}}
-{varistor}
-{\ctikzvalof{bipoles/varistor/height}}
-{\ctikzvalof{bipoles/varistor/width}}
-{
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{-\ctikzvalof{bipoles/varistor/main}\pgf@circ@res@up}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgftext[top,x=.65\pgf@circ@res@left,y=1.2\pgf@circ@res@down]{{\pgf@circ@font@tiny\textsf{U}}}
-}
-
-%%%%%%%%%%%%%%
-%% RF bipoles
-%%%%%%%%%%%%%%
-
-% transmission line
-\pgfcircdeclarebipolescaled{RF}
-{}
-{\ctikzvalof{bipoles/tline/height}}
-{tline}
-{\ctikzvalof{bipoles/tline/height}}
-{\ctikzvalof{bipoles/tline/width}}
-{
- \pgf@circ@res@step=.2\pgf@circ@res@right % half x axis
- \begin{pgftransparencygroup}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \pgfpathellipse{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
- {\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{-\pgf@circ@res@up}}
- \pgf@circ@draworfill
- \end{pgftransparencygroup}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{stroke}
-}
-
-% microstrip transmission line
-\pgfcircdeclarebipolescaled{RF}
-{}
-{\ctikzvalof{bipoles/mstline/height}}
-{mstline}
-{\ctikzvalof{bipoles/mstline/height}}
-{\ctikzvalof{bipoles/mstline/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-
-%%%%%%%%%%%%%%%%%%%
-%% Block diagrams
-%%%%%%%%%%%%%%%%%%%
-
-%% Draw the two-port fillable box
-\def\pgf@circ@twoportbox{
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \endpgfscope
-}
-
-%% Generic two port box
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/twoport/height}}
-{twoport}
-{\ctikzvalof{bipoles/twoport/height}}
-{\ctikzvalof{bipoles/twoport/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw outer box
- \pgf@circ@twoportbox
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
-}
-
-%% twoport split
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/twoportsplit/width}}
-{twoportsplit}
-{\ctikzvalof{bipoles/twoportsplit/width}}
-{\ctikzvalof{bipoles/twoportsplit/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/twoportsplit/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- %get texts
- \def\pgfcirc@tin{\ctikzvalof{bipoles/twoport/text in}}
- \def\pgfcirc@tout{\ctikzvalof{bipoles/twoport/text out}}
-
- % rotate inner symbol
- \def\texti{\pgfcirc@tin}
- \def\textii{\pgfcirc@tout}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{\pgfcirc@tout}
- \def\textii{\pgfcirc@tin}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{\pgfcirc@tout}
- \def\textii{\pgfcirc@tin}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{\pgfcirc@tin}
- \def\textii{\pgfcirc@tout}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\texti}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textii}
-}
-
-%% voltage controled oscillator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/vco/width}}
-{vco}
-{\ctikzvalof{bipoles/twoport/width}}
-{\ctikzvalof{bipoles/vco/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vco/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
- % draw circle
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@step}
- \pgf@circ@draworfill
- \endpgfscope
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-.5\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% bandpass filter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/bandpass/width}}
-{bandpass}
-{\ctikzvalof{bipoles/bandpass/width}}
-{\ctikzvalof{bipoles/bandpass/width}}
-{
-
- \pgf@circ@res@step = \ctikzvalof{bipoles/bandpass/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% bandstop filter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/bandstop/width}}
-{bandstop}
-{\ctikzvalof{bipoles/bandstop/width}}
-{\ctikzvalof{bipoles/bandstop/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/bandstop/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225% 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt}% always draw solid line for inner symbol
- \pgfsetarrows{-}%never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% highpass filter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/highpass/width}}
-{highpass}
-{\ctikzvalof{bipoles/highpass/width}}
-{\ctikzvalof{bipoles/highpass/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/highpass/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.65\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% lowpass filter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/lowpass/width}}
-{lowpass}
-{\ctikzvalof{bipoles/lowpass/width}}
-{\ctikzvalof{bipoles/lowpass/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{0.35\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.65\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-0.15\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.15\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% allpass filter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/allpass/width}}
-{allpass}
-{\ctikzvalof{bipoles/allpass/width}}
-{\ctikzvalof{bipoles/allpass/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/allpass/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% ADC
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/adc/width}}
-{adc}
-{\ctikzvalof{bipoles/adc/width}}
-{\ctikzvalof{bipoles/adc/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/adc/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{A}
- \def\textii{D}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{D}
- \def\textii{A}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{A}
- \def\textii{D}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DAC
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/dac/width}}
-{dac}
-{\ctikzvalof{bipoles/dac/width}}
-{\ctikzvalof{bipoles/dac/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dac/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\texti{D}
- \def\textii{A}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \def\texti{A}
- \def\textii{D}
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \def\texti{D}
- \def\textii{A}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgftext[center,x=0.45\pgf@circ@res@left,y=0.45\pgf@circ@res@up]{\textsf{\texti}}
- \pgftext[center,x=0.45\pgf@circ@res@right,y=0.45\pgf@circ@res@down]{\textsf{\textii}}
-}
-
-%% DSP
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/dsp/width}}
-{dsp}
-{\ctikzvalof{bipoles/dsp/width}}
-{\ctikzvalof{bipoles/dsp/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/dsp/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{DSP}}
-}
-
-%% FFT
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/fft/width}}
-{fft}
-{\ctikzvalof{bipoles/fft/width}}
-{\ctikzvalof{bipoles/fft/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/fft/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgftext[center,x=0,y=0]{\textsf{FFT}}
-}
-
-%% Amplifier
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{amp}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \pgf@circ@draworfill
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
-
- \pgfsetarrows{-} %never draw arrows
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgf@circ@draworfill
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-}
-
-
-%% variable amplifier
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{vamp}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \ifpgf@circuit@boxed
- \ctikzvalof{bipoles/twoport/width}
- \else
- \ctikzvalof{bipoles/amp/width}
- \fi
-}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/amp/width}\pgf@circ@scaled@Rlen
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw input arrow
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \ifpgf@circuit@boxed
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetdash{}{0pt} % draw solid line for inner symbol if no box is drawn
- \pgf@circ@res@step=.7\pgf@circ@res@step % scale amp symbol when inside a box
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
-
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
-
- \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.55\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@step}{0}}
- \pgfpathlineto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.55\pgf@circ@res@step}}
-
- \pgfpathclose
- \pgf@circ@draworfill
-
- % draw inner text
- \pgftext[center,x=-0.12\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
-
- % draw arrow
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.8\pgf@circ@res@step}{-0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@step}{0.6\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-%% pi attenuator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/piattenuator/width}}
-{piattenuator}
-{\ctikzvalof{bipoles/piattenuator/width}}
-{\ctikzvalof{bipoles/piattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/piattenuator/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable pi attenuator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/vpiattenuator/width}}
-{vpiattenuator}
-{\ctikzvalof{bipoles/vpiattenuator/width}}
-{\ctikzvalof{bipoles/vpiattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vpiattenuator/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% T attenuator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/tattenuator/width}}
-{tattenuator}
-{\ctikzvalof{bipoles/tattenuator/width}}
-{\ctikzvalof{bipoles/tattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/tattenuator/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% variable T attenuator
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/vtattenuator/width}}
-{vtattenuator}
-{\ctikzvalof{bipoles/vtattenuator/width}}
-{\ctikzvalof{bipoles/vtattenuator/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vtattenuator/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0pt}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.6\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% phase shifter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{phaseshifter}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/phaseshifter/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-}
-
-%% variable phase shifter
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/phaseshifter/width}}
-{vphaseshifter}
-{\ctikzvalof{bipoles/vphaseshifter/width}}
-{\ctikzvalof{bipoles/vphaseshifter/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/vphaseshifter/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 135 \ifnum \pgfcircmathresult < 225
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % inner symbol
- \pgftext[center,x=0,y=0]{\Large$\varphi$}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0.65\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.65\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% detector
-\pgfcircdeclarebipolescaled{blocks}
-{}
-{\ctikzvalof{bipoles/detector/width}}
-{detector}
-{\ctikzvalof{bipoles/detector/width}}
-{\ctikzvalof{bipoles/detector/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/detector/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{0.8\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@fulldiode
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{fulldiodeshape}{center}{}{pgf@fulldiode}{\pgfusepath{fill}}
- \else
- \pgfmathparse{2\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width}}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{emptydiodeshape}{center}{}{pgf@emptydiode}{\pgfusepath{fill}}
- \fi
-
-}
-
-%% single phase ac/dc converter
-\pgfcircdeclarebipolescaled{blocks}
-{
- \anchor{dc1}{
- \northeast
- \pgf@y=.4\pgf@y
- }
- \anchor{dc2}{
- \northeast
- \pgf@y=-.4\pgf@y
- }
-}
-{\ctikzvalof{bipoles/sacdc/width}}
-{sacdc}
-{\ctikzvalof{bipoles/sacdc/width}}
-{\ctikzvalof{bipoles/sacdc/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/sacdc/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % draw sin wave
- \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- % draw equal sign
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.375\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.375\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.625\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.625\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-
-
-%% single phase dc/ac converter
-\pgfcircdeclarebipolescaled{blocks}
-{
- \anchor{dc1}{
- \northeast
- \pgf@y=.4\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{dc2}{
- \northeast
- \pgf@y=-.4\pgf@y
- \pgf@x=-\pgf@x
- }
-}
-{\ctikzvalof{bipoles/sdcac/width}}
-{sdcac}
-{\ctikzvalof{bipoles/sdcac/width}}
-{\ctikzvalof{bipoles/sdcac/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/sdcac/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % draw sin wave
- \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- % draw equal sign
- \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.375\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.375\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.625\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.625\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-
-%% threephase ac/dc converter
-\pgfcircdeclarebipolescaled{blocks}
-{
- \anchor{dc1}{
- \northeast
- \pgf@y=.4\pgf@y
- }
- \anchor{dc2}{
- \northeast
- \pgf@y=-.4\pgf@y
- }
- \anchor{ac1}{
- \northeast
- \pgf@y=.6\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{ac2}{
- \northeast
- \pgf@y=0\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{ac3}{
- \northeast
- \pgf@y=-.6\pgf@y
- \pgf@x=-\pgf@x
- }
-}
-{\ctikzvalof{bipoles/tacdc/width}}
-{tacdc}
-{\ctikzvalof{bipoles/tacdc/width}}
-{\ctikzvalof{bipoles/tacdc/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/tacdc/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % draw sin waves
- \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.65\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-.76\pgf@circ@res@step}{.35\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
-
-
-
-
- % draw equal sign
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.375\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.375\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@step}{-.625\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.625\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-
-%% threephase dc/ac converter
-\pgfcircdeclarebipolescaled{blocks}
-{
- \anchor{dc1}{
- \northeast
- \pgf@y=.4\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{dc2}{
- \northeast
- \pgf@y=-.4\pgf@y
- \pgf@x=-\pgf@x
- }
- \anchor{ac1}{
- \northeast
- \pgf@y=.6\pgf@y
- }
- \anchor{ac2}{
- \northeast
- \pgf@y=0\pgf@y
- }
- \anchor{ac3}{
- \northeast
- \pgf@y=-.6\pgf@y
- }
-}
-{\ctikzvalof{bipoles/tdcac/width}}
-{tdcac}
-{\ctikzvalof{bipoles/tdcac/width}}
-{\ctikzvalof{bipoles/tdcac/width}}
-{
- \pgf@circ@res@step = \ctikzvalof{bipoles/tdcac/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 225 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % draw sin waves
- \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.65\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.5\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{.14\pgf@circ@res@step}{-.35\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.17\pgf@circ@res@step}{-.17\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.17\pgf@circ@res@step}{.17\pgf@circ@res@step}}
- \pgfusepath{draw}
-
-
-
-
- % draw equal sign
- \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.375\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.375\pgf@circ@res@step}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{-.2\pgf@circ@res@step}{.625\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{0.625\pgf@circ@res@step}}
- \pgfusepath{draw}
-}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%
-%% MECHANICAL SYMBOLS
-%%%%%%%%%%%%%%%%%%%%%%%
-
-%% mechanical capacitance - stiffness/spring
-
-\pgfcircdeclarebipolescaled{mechanicals}
-{}
-{\ctikzvalof{bipoles/spring/height}}
-{spring}
-{\ctikzvalof{bipoles/spring/height}}
-{\ctikzvalof{bipoles/spring/width}}{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
-
- \pgfmathsetlength{\pgf@circ@res@step}
- {(\ctikzvalof{bipoles/spring/width}*\pgf@circ@scaled@Rlen+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth)/16}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
- \pgfsetcornersarced{\pgfpoint{.5\pgf@circ@res@up}{.5\pgf@circ@res@up}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \advance\pgf@circ@res@other by 2\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfsetbuttcap
- \pgfsetbeveljoin
- \pgfusepath{stroke}
-}
-
-%% mechanical capacitance - inerter
-\pgfcircdeclarebipolescaled{mechanicals}
-{}
-{\ctikzvalof{bipoles/inerter/height}}
-{inerter}
-{\ctikzvalof{bipoles/inerter/height}}
-{\ctikzvalof{bipoles/inerter/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-
-
-%% mechanical inductance - mass
-\pgfcircdeclarebipolescaled{mechanicals}
-{}
-{\ctikzvalof{bipoles/mass/box height}}
-{mass}
-{\ctikzvalof{bipoles/mass/height}}
-{\ctikzvalof{bipoles/mass/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgftransformationadjustments
- \pgfpathrectangle{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- {\pgfpoint{-2\pgf@circ@res@down}{-2\pgf@circ@res@down}}
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-}
-
-%% mechanical resistor - damper
-\pgfcircdeclarebipolescaled{mechanicals}
-{}
-{\ctikzvalof{bipoles/damper/height}}
-{damper}
-{\ctikzvalof{bipoles/damper/height}}
-{\ctikzvalof{bipoles/damper/width}}
-{
- \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@maybefill
-
- % line into the damper
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {\pgf@circ@res@zero}}
- \pgfusepath{stroke}
-
- % damper box
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
-
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-
- % damper vertical element
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{stroke}
-
-}
-%% mechanical viscoelastic element, suggested by @alex
-%% in https://tex.stackexchange.com/questions/484268/combined-spring-damper-in-circuitikz
-\pgfcircdeclarebipolescaled{mechanicals}
-{} % extra anchors
-{\ctikzvalof{bipoles/damper/height}} % depth (under the path line)
-{viscoe} % name
-{\ctikzvalof{bipoles/damper/height}} % height (above the path line)
-{\ctikzvalof{bipoles/damper/width}} % width
-{ % draw the bipole
- \pgfpathrectanglecorners{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgf@circ@maybefill
-
- % spring into the damper
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfsetcornersarced{\pgfpoint{.25\pgf@circ@res@up}{.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.75\pgf@circ@res@left}{.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@left}{-.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-.75\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{.75\pgf@circ@res@up}}
- \pgfusepath{stroke}
- \endpgfscope
- % damper box
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
-
- \pgfsetrectcap
- \pgfsetmiterjoin
- \pgfusepath{stroke}
-
- % damper vertical element
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}
- {.8\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{stroke}
-
-}
-
-%%%%%%%%%%%%%%%%
-%% Crossing
-%%%%%%%%%%%%%%%%
-
-%% crossing bipole (but see also nodes)
-\pgfcircdeclarebipole
-{}
-{\ctikzvalof{bipoles/crossing/size}}
-{crossing}
-{\ctikzvalof{bipoles/crossing/size}}
-{\ctikzvalof{bipoles/crossing/size}}{
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
- \pgfsetbeveljoin
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Miscellaneous bipoles
-%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% loudspeaker and microphone
-
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/loudspeaker/depth}}
-{loudspeaker}
-{\ctikzvalof{bipoles/loudspeaker/height}}
-{\ctikzvalof{bipoles/loudspeaker/width}}{
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{.4\pgf@circ@res@up}}
- \pgfpathclose
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
-}
-
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/mic/depth}}
-{mic}
-{\ctikzvalof{bipoles/mic/height}}
-{\ctikzvalof{bipoles/mic/width}}{
-
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpoint{0pt}{.6\pgf@circ@res@up}}{.4\pgf@circ@res@up}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.6\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{0pt}}
- % 0.25358 is 0.6-0.4*cos(30)
- \pgfpathlineto{\pgfpoint{-.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@up}{.25358\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@up}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-
- \pgfusepath{draw}
- \endpgfscope
-}
-
-%% european gas filled surge arrester
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
-{european gas filled surge arrester}
-{\ctikzvalof{bipoles/european gas filled surge arrester/height}}
-{\ctikzvalof{bipoles/european gas filled surge arrester/width}}
-{
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@draworfill
-
- \pgfscope
- \pgfsetarrowsend{latexslim}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/european gas filled surge arrester/inside}\pgf@circ@res@left}{0pt}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
-}
-
-%% american gas filled surge arrester
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
-{american gas filled surge arrester}
-{\ctikzvalof{bipoles/american gas filled surge arrester/height}}
-{\ctikzvalof{bipoles/american gas filled surge arrester/width}}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpointorigin \pgf@circ@res@other = \pgf@x \advance \pgf@circ@res@other by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathcircle{\pgfpointorigin}{.9\pgf@circ@res@up}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfsetarrowsend{latex}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/inside}\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
- \endpgfscope{}
-
- \pgfcircle{\pgfpoint{\ctikzvalof{bipoles/american gas filled surge arrester/dot x}\pgf@circ@res@left}{\ctikzvalof{bipoles/american gas filled surge arrester/dot y}\pgf@circ@res@down}}{\ctikzvalof{bipoles/american gas filled surge arrester/size}\pgf@circ@res@down}
- \pgfusepath{fill}
-}
-
-%% thermocouple
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/thermocouple/height 2}}
-{thermocouple}
-{\ctikzvalof{bipoles/thermocouple/height}}
-{\ctikzvalof{bipoles/thermocouple/width}}
-{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-}
-
-%% fuse
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/fuse/height}}
-{fuse}
-{\ctikzvalof{bipoles/fuse/height}}
-{\ctikzvalof{bipoles/fuse/width}}
-{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgf@circ@draworfill
-}
-
-%% asymmetric fuse
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/afuse/height}}
-{afuse}
-{\ctikzvalof{bipoles/afuse/height}}
-{\ctikzvalof{bipoles/afuse/width}}
-{
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathrectanglecorners{\pgfpoint{.7\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{stroke,fill}
-}
-
-%% SQUID added by Cor Molenaar 5 March 2010
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/squid/height}}
-{squid}
-{\ctikzvalof{bipoles/squid/height}}
-{\ctikzvalof{bipoles/squid/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{1.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.65*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.65*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{1.35*\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-}
-
-% Generic barrier added by Cor Molenaar 5 March 2010
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/barrier/height}}
-{barrier}
-{\ctikzvalof{bipoles/barrier/height}}
-{\ctikzvalof{bipoles/barrier/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
-
- \pgfusepath{draw}
-}
-
-%
-% open version of the barrier symbol
-% suggested by Radvรกnyi Patrik Tamรกs <patrikradvanyi@gmail.com>
-%
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/barrier/height}}
-{openbarrier}
-{\ctikzvalof{bipoles/barrier/height}}
-{\ctikzvalof{bipoles/barrier/width}}
-{
- % this is set with normal wire linewidth
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/openbarrier/gap}*\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/openbarrier/gap}*\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
-
- % do the cross part
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
-
- \pgfusepath{draw}
-}
-%% Lamp
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/lamp/height}}
-{lamp}
-{\ctikzvalof{bipoles/lamp/height}}
-{\ctikzvalof{bipoles/lamp/width}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{.7071*\pgf@circ@res@left}{.7071*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.7071*\pgf@circ@res@right}{.7071*\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-%% bulb
-\pgfcircdeclarebipolescaled{misc}
-{}
-{\ctikzvalof{bipoles/bulb/height}}
-{bulb}
-{\ctikzvalof{bipoles/bulb/height}}
-{\ctikzvalof{bipoles/bulb/width}}
-{%
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{0.8\pgf@circ@res@up}}{\pgfpoint{0.8\pgf@circ@res@left}{0}}
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpatharc{0}{-180}{0.4*\pgf@circ@res@left}
- \pgfsetbeveljoin
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-}
-
-
-% end of pgfcircbipoles.tex
-%%%---------- close: tex/pgfcircbipoles
-%%%%%%%%%%% Springe nach tex/pgfcirctripoles
-%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Tripoles
-
-%%%%%%%%%%%%%
-%% switches
-%%%%%%%%%%%%%
-
-% Legacy spdt
-\pgfdeclareshape{spdt}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/spdt/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out 1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{out 2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@res@other = \ctikzvalof{tripoles/spdt/margin}\pgf@circ@res@left
-
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
-
- \pgfusepath{draw}
-
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfnode{ocirc}{center}{}{spdt1}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfnode{ocirc}{center}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfnode{ocirc}{center}{}{spdt2}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfscope
- \pgfpathmoveto{\pgfpointshapeborder{spdt2}{\pgfpointorigin}}
- \pgfpathlineto{
- \pgfpointadd{\pgfpointshapeborder{spdt1}{\pgfpoint{-\pgf@circ@res@other}{-100pt}}}
- {\pgfpoint{-.05\pgf@circ@res@up}{-.05\pgf@circ@res@up}}
- }
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-
-% cute switch "node" shapes, matching with cute "to" shapes
-% #1 -> name
-% #2 -> barposition
-% #3 -> arrowcode
-\long\def\pgfcircdeclarecutespdt#1#2#3{
- \pgfdeclareshape{#1}
- {
- \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.25\pgf@x
- }
- \savedanchor\midlever{
- % these values are calculated when we create the definition of the shape.
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/cuteswitch/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=\ctikzvalof{nodes width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgf@circ@res@down = -.5\pgf@y
- \pgf@circ@res@up = .5\pgf@y
- \pgfextracty{\pgf@circ@res@other}{#2}
- \pgf@x=0pt
- \pgf@y=.5\pgf@circ@res@other
- }
- % radius of the connector
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % shape type
- \savedmacro{\cshape}{\def\cshape{\ctikzvalof{bipoles/cuteswitch/shape}}}
- % mid of the lever, to stack switches
- \anchor{mid}{\midlever}
- % center anchors
- \anchor{cin}{ \northwest \pgf@y=0pt}
- \anchor{cout 1}{ \northwest \pgf@x=-\pgf@x }
- \anchor{cout 2}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- % horizontal angles
- \anchor{in}{ \northwest \pgf@y=0pt\advance\pgf@x by -\radius}
- \anchor{out 1}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius}
- \anchor{out 2}{ \northwest \pgf@x=-\pgf@x \advance\pgf@x by \radius \pgf@y=-\pgf@y }
-
- \anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \pgf@circ@res@temp=\radius\relax
- \pgf@circ@res@temp=\ctikzvalof{bipoles/cuteswitch/thickness}\pgf@circ@res@temp
- \pgfsetlinewidth{2\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{#2}
- \pgfsetroundcap\pgfusepath{draw}
- \endpgfscope
- \pgfscope % arrow
- #3
- \endpgfscope
- % terminals
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfnode{\cshape}{center}{}{\thisshape-out 1}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfnode{\cshape}{center}{}{\thisshape-out 2}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
- \endpgfscope
-
- }
- }
-}
-
-\pgfcircdeclarecutespdt{cute spdt up}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
-{}
-
-\pgfcircdeclarecutespdt{cute spdt mid}
-{\pgfpoint{\pgf@circ@res@right}{0pt}}
-{}
-
-\pgfcircdeclarecutespdt{cute spdt down}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
-{}
-
-\pgfcircdeclarecutespdt{cute spdt up arrow}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up-1.5\pgf@circ@res@temp}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{70}{1.5\pgf@circ@res@right}}
- \pgfpatharc{70}{-50}{1.5\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclarecutespdt{cute spdt mid arrow}
-{\pgfpoint{\pgf@circ@res@right}{0pt}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfsetarrowsstart{latexslim}
- \pgfpathmoveto{\pgfpointpolar{-60}{1.5\pgf@circ@res@right}}
- \pgfpatharc{-60}{60}{1.5\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclarecutespdt{cute spdt down arrow}
-{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down+1.5\pgf@circ@res@temp}}
-{
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % in node
- \pgfpathmoveto{\pgfpointpolar{-50}{1.5\pgf@circ@res@right}}
- \pgfpatharc{-50}{70}{1.5\pgf@circ@res@right}
- \pgfsetarrowsend{latexslim}
- \pgfusepath{draw}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% Logic ports
-%%
-%% Code from John Kormylo at tex.stackexchange.com
-%% See https://tex.stackexchange.com/questions/372993/is-it-possible-to-implement-multiple-input-logic-ports-with-circuitikz
-%% Integration and fixes from Romano Giannetti and TheTeXnician <38565529+TheTeXnician@users.noreply.github.com>
-%%
-
-\newcount\pgf@circ@res@count% reserve global register
-
-\def\pgf@circ@logicport@input#1% #1 = \pgfmathcounter
-{%
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
-}%
-
-% #1 = \pgfmathcounter #2=type #3 specificic port
-% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor, 4 for european.
-\def\pgf@circ@logicport@baseinput#1#2#3%
-{%
- % and and nand
- \ifnum #2=1\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@x=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@left
- \fi
- % or and nor
- \ifnum #2=2\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american #3 port/angle}}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\pgf@y
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgf@x=\pgf@circ@res@other
- \fi
- % xor and xnor
- \ifnum #2=3\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american #3 port/angle}{\pgf@circ@math@angle}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american #3 port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\ctikzvalof{tripoles/american #3 port/distance}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
- % this compensates for the effect of the line width on the gap between the arcs
- \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
- \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
-
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@circ@res@temp=\pgf@y
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \advance\pgf@circ@res@other by -\pgf@circ@math@distance
- \pgf@x=\pgf@circ@res@other
- \fi
- % european
- \ifnum #2=4\relax
- \pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@other}{\left}%
- \step
- \pgf@circ@res@step=\dimexpr 2\pgf@y -2\pgf@circ@res@up\relax
- \advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@x=\pgf@circ@res@other
- \fi
-}%
-
-%%% american
-\long\def\pgfcircdeclarelogicport#1#2#3{%
- \pgfdeclareshape{american #1 port}%
- {%
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro\resize{% automatic
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@up = \ctikzvalof{tripoles/american #1 port/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgf@circ@res@down = -\pgf@circ@res@up
- \pgf@circ@res@right = \ctikzvalof{tripoles/american #1 port/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right = .5\pgf@circ@res@right
- \pgf@circ@res@left = -\pgf@circ@res@right
- }%
- \savedmacro\inputs{% get number of inputs
- \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
- \ifnum\pgf@circ@res@count=0
- \pgf@circ@res@count=\ctikzvalof{tripoles/american #1 port/inputs}\relax%
- \fi
- \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
- \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
- \def\inputs{\the\pgf@circ@res@count}%
- }%
- \savedanchor\step{% 1/2 gap at edges
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step = \ctikzvalof{tripoles/american #1 port/height}\pgf@circ@scaled@Rlen
- \divide\pgf@circ@res@step by \pgf@circ@res@count
- \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
- }%
- \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \savedanchor\left{\pgfpoint{\ctikzvalof{tripoles/american #1 port/port width}\pgf@circ@res@left}{0pt}}
- \savedanchor\right{\pgfpoint{\ctikzvalof{tripoles/american #1 port/port width}\pgf@circ@res@right}{0pt}}
- \savedanchor\origin{\pgfpoint{\ctikzvalof{tripoles/american #1 port/origin}\pgf@circ@res@right}{0pt}}
-
- \anchor{center}{\origin}% for backwards compatibility
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
- % create input anchors
- \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@american #1 port\endcsname{%
- \pgfmathloop%
- \ifnum\pgfmathcounter>\pgf@circ@res@count%
- \else%
- %\pgfutil@ifundefined{pgf@anchor@american #1 port@in \pgfmathcounter}{%
- \expandafter\xdef\csname pgf@anchor@american #1 port@in \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
- }%
- \expandafter\xdef\csname pgf@anchor@american #1 port@bin \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{#2}{#1}% defined above
- }%
- %}{}%
- \repeatpgfmathloop%
- }
-
- \anchor{out}{\northeast\pgf@y=0pt}
- \anchor{bout}{\right\pgf@y=0pt}
-
-
- \anchor{left}{\left}% edges of component minus leads
- \anchor{right}{\right}
-
- \anchor{north east}{\northeast}% see \Compass macro
- \anchor{south west}{\southwest}
- \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfpoint{0cm}{\pgf@circ@res@up}}
- \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{0cm}}
- \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfpoint{0cm}{\pgf@circ@res@down}}
- \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{0cm}}
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- #3
- }
-}
-}
-%%% american and %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{and}{1}{
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@input@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@temp}}
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
- % output lead
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@right} {0pt}}
- \pgfusepath{draw}
- \fi
-
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgf@circ@res@other=\ctikzvalof{tripoles/american and port/port width}\pgf@circ@res@left
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpatharc{-90}{90}{-2\pgf@circ@res@other and \pgf@circ@res@up}
- \pgfpathclose
- \pgf@circ@draworfill
- }
-%%% american nand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \pgfcircdeclarelogicport{nand}{1}{
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@input@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@left}
- {\pgf@circ@res@temp}}
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@right} {0pt}}
- \pgfusepath{draw}
- \fi
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgf@circ@res@step = \ctikzvalof{tripoles/american nand port/circle width}\pgf@circ@res@right
- \pgf@circ@res@other = \ctikzvalof{tripoles/american nand port/port width}\pgf@circ@res@right
- \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{\pgf@circ@res@down}}
- \pgfpatharc{-90}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}
- \pgfpathclose
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other-.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgf@circ@draworfill
-}
-%%% american nor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{nor}{2}{
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american nor port/angle}}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@input@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american nor port/port width}\pgf@circ@res@right
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \fi
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american nor port/angle}}%
- \pgf@circ@res@step = \ctikzvalof{tripoles/american nor port/circle width}\pgf@circ@res@right
- \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
- \advance\pgf@circ@res@other by -\pgf@circ@res@step
-
- % main shape
- \ifpgfcirc@roundy@or@shapes
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpathclose
- \else
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathclose
- \fi
-
- % not dot
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
-
- \pgf@circ@draworfill
-}
-%%% american or %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{or}{2}{
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american or port/angle}}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up /sin(\pgf@circ@math@angle)}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@input@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp/\pgf@circ@math@yradius)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american or port/port width}\pgf@circ@res@right
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \fi
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american or port/angle}}%
-
- % main shape
- \ifpgfcirc@roundy@or@shapes
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpathclose
- \else
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathclose
- \fi
-
- \pgf@circ@draworfill
-}
-%%% american xor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{xor}{3}{
- \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xor port/angle}{\pgf@circ@math@angle}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\ctikzvalof{tripoles/american xor port/distance}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
- % this compensates for the effect of the line width on the gap between the arcs
- \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
- \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@input@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \advance\pgf@circ@res@other by -\pgf@circ@math@distance
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xor port/port width}\pgf@circ@res@right
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \fi
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american xor port/angle}}%
-
- % main shape
- \ifpgfcirc@roundy@or@shapes
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{2\pgf@circ@res@other and \pgf@circ@res@up}%
- \pgfpathclose
- \else
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathclose
- \fi
- \pgf@circ@draworfill
-
- \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
-
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
-
- \pgfusepath{draw}
-}
-%%% american xnor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfcircdeclarelogicport{xnor}{3}{
- \pgfkeysgetvalue{/tikz/circuitikz/tripoles/american xnor port/angle}{\pgf@circ@math@angle}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/inner}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xradius}{\pgf@circ@res@other /(1 - cos(\pgf@circ@math@angle)}%
- \pgfmathsetlengthmacro{\pgf@circ@math@yradius}{\pgf@circ@res@up / sin(\pgf@circ@math@angle))}%
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@xorigin}{\pgf@circ@res@other + \pgf@circ@math@xradius*cos(\pgf@circ@math@angle)}%
- \pgf@circ@res@temp=\ctikzvalof{tripoles/american xor port/distance}\pgf@circ@res@right
- \pgfmathsetlengthmacro{\pgf@circ@math@distance}{\pgf@circ@res@temp}
- % this compensates for the effect of the line width on the gap between the arcs
- \pgfmathsetlengthmacro{\pgf@circ@math@yradiusA}{\pgf@circ@math@yradius -2\pgflinewidth}%
- \pgfmathsetlengthmacro{\pgf@circ@math@xradiusA}{\pgf@circ@math@xradius -2\pgflinewidth}%
-
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- \pgf@circ@res@count = \inputs\relax
- \ifpgfcirc@draw@input@leads
- %input leads
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfmathsetmacro{\pgf@circ@math@angle}{asin(\pgf@circ@res@temp / \pgf@circ@math@yradiusA)}%
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@math@xradiusA*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \advance\pgf@circ@res@other by -\pgf@circ@math@distance
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@right
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \fi
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \edef\pgf@circ@math@angle{\ctikzvalof{tripoles/american xnor port/angle}}%
- \pgf@circ@res@step = \ctikzvalof{tripoles/american xnor port/circle width}\pgf@circ@res@right
- \pgf@circ@res@temp = \dimexpr 2\pgf@circ@res@other - \pgf@circ@res@step\relax
- \advance\pgf@circ@res@other by -\pgf@circ@res@step
-
- % main shape
- \ifpgfcirc@roundy@or@shapes
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}}% for symmetry
- \pgfpatharc{0}{90}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpatharc{-90}{0}{\pgf@circ@res@temp and \pgf@circ@res@up}%
- \pgfpathclose
- \else
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@math@xradius*cos(\pgf@circ@math@angle)-\pgf@circ@math@xorigin}%
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradius and \pgf@circ@math@yradius}%
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@down}}{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@down}}{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfpathcurveto{\pgfpoint{0.3\pgf@circ@res@right}{0.5\pgf@circ@res@up}}{\pgfpoint{0.3\pgf@circ@res@right}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@up}}
- \pgfpathclose
- \fi
-
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@other+.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@step}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@step}}
- \pgf@circ@draworfill
-
- \pgf@circ@res@other=\ctikzvalof{tripoles/american xnor port/port width}\pgf@circ@res@left
- \pgfmathsetlength{\pgf@circ@res@temp}{(\pgf@circ@math@yradiusA)*sin(\pgf@circ@math@angle)}%
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other-\pgf@circ@math@distance}{\pgf@circ@res@temp}}% first arc
- \pgfpatharc{\pgf@circ@math@angle}{-\pgf@circ@math@angle}{\pgf@circ@math@xradiusA and \pgf@circ@math@yradiusA}%
-
- \pgfusepath{draw}
-}
-
-%%% Original one-input ports
-
-\pgfdeclareshape{american not port}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{left}{
- \northwest
- \pgf@x=0.7\pgf@x
- \pgf@y=0pt
- }
- \anchor{bin}{
- \northwest
- \pgf@x=0.7\pgf@x
- \pgf@y=0pt
- }
- \anchor{bin 1}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{right}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchorborder{% this is used when the node is used as a path element
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
- {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- }
- \anchor{text}{%
- % centered and a bit to the left (it's a triangle)!
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgf@circ@draworfill
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgf@circ@draworfill
- \endpgfscope
-
- \ifpgfcirc@draw@input@leads
- %input leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
- \fi
-
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \fi
-
- \pgfusepath{draw}
- }
-}
-
-\pgfdeclareshape{american buffer port}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{left}{
- \northwest
- \pgf@x=0.7\pgf@x
- \pgf@y=0pt
- }
- \anchor{bin}{
- \northwest
- \pgf@x=0.7\pgf@x
- \pgf@y=0pt
- }
- \anchor{bin 1}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{right}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchorborder{% this is used when the node is used as a path element
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
- {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- }
- \anchor{text}{%
- % centered and a bit to the left (it's a triangle)!
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgf@circ@draworfill
- \endpgfscope
-
- \ifpgfcirc@draw@input@leads
- %input leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
- \fi
-
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \fi
-
- \pgfusepath{draw}
- }
-}
-\pgfdeclareshape{invschmitt}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{left}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{bin}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{bin 1}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{right}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchorborder{% this is used when the node is used as a path element
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
- {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- }
- \anchor{text}{%
- % centered and a bit to the left (it's a triangle)!
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@other = \ctikzvalof{bipoles/not port/circle width}\pgf@circ@res@right
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step-\pgf@circ@res@other}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfpathellipse
- {\pgfpoint{\pgf@circ@res@step-.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{.5\pgf@circ@res@other}{0pt}}
- {\pgfpoint{0pt}{.5\pgf@circ@res@other}}
- \pgf@circ@draworfill
- \endpgfscope
-
- \ifpgfcirc@draw@input@leads
- %input leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
- \fi
-
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \fi
- \pgfusepath{draw}
- %draw inner shape
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- }
-}
-
-\pgfdeclareshape{schmitt}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/not port/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/not port/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{left}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{bin}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{bin 1}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{right}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-.7\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-.7\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchorborder{% this is used when the node is used as a path element
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
- {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- }
- \anchor{text}{%
- % centered and a bit to the left (it's a triangle)!
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \ifpgfcirc@draw@input@leads
- %input leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
- \fi
-
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right-\pgf@circ@res@other}{0pt}}
- \fi
- \pgfusepath{draw}
- %draw inner shape
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
-
- \pgfpathmoveto{\pgfpoint{.6\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.05\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{.4\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.3\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- }
-}
-
-
-%%% start european logic ports, from John Kormylo
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-
-% #1 - name
-% #2 - text inside
-% #3 - number of inputs
-% #4 = is it a not?
-%
-% option to add a circle for not-output, see
-% https://github.com/circuitikz/circuitikz/issues/385
-%
-\newif\ifpgf@circ@european@port@circle\pgf@circ@european@port@circlefalse
-\newif\ifpgf@circ@european@port@circle@ieee\pgf@circ@european@port@circle@ieeefalse
-\ctikzset{tripoles/european not shape/.initial=ocirc}
-\ctikzset{tripoles/european not symbol/.is choice}
-\ctikzset{tripoles/european not symbol/triangle/.code={\pgf@circ@european@port@circlefalse}}
-\ctikzset{tripoles/european not symbol/circle/.code={%
-\pgf@circ@european@port@circletrue\pgf@circ@european@port@circle@ieeefalse\ctikzset{tripoles/european not shape=ocirc}}}
-\ctikzset{tripoles/european not symbol/ieee circle/.code={%
-\pgf@circ@european@port@circletrue\pgf@circ@european@port@circle@ieeetrue\ctikzset{tripoles/european not shape=notcirc}}}
-
-\long\def\pgfcircdeclareeurologicport#1#2#3#4{
- \pgfdeclareshape{european #1 port}
- {
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \saveddimen{\boutshift}{%
- \edef\pgf@temp{not}
- \edef\pgf@circ@temp{#4}
- \ifx\pgf@temp\pgf@circ@temp % is a not
- \ifpgf@circ@european@port@circle
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \edef\pgf@temp{ocirc}
- \edef\pgf@circ@temp{\ctikzvalof{tripoles/european not shape}}
- \ifx\pgf@temp\pgf@circ@temp % it's ocirc
- \pgfmathsetlength{\pgf@x}{2*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \else % it's ieee not circ
- \pgf@circ@notradius % defined together with ieeestd ports
- \pgf@x=2\pgf@circ@res@temp
- \fi
- \else
- \pgf@x=0pt
- \fi
- \else
- \pgf@x=0pt
- \fi
- }
- \savedmacro\resize{% automatic
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@up = \ctikzvalof{tripoles/european #1 port/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up = .5\pgf@circ@res@up
- \pgf@circ@res@down = -\pgf@circ@res@up
- \pgf@circ@res@right = \ctikzvalof{tripoles/european #1 port/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right = .5\pgf@circ@res@right
- \pgf@circ@res@left = -\pgf@circ@res@right
- }%
- \savedmacro\inputs{% get number of inputs
- \pgf@circ@res@count=\pgfkeysvalueof{/tikz/number inputs}\relax%
- \ifnum\pgf@circ@res@count=0
- \pgf@circ@res@count=\ctikzvalof{tripoles/european #1 port/inputs}\relax%
- \fi
- \ifnum\pgf@circ@res@count<2 \pgf@circ@res@count=2\fi
- \ifnum\pgf@circ@res@count>16 \pgf@circ@res@count=16\fi
- \def\inputs{\the\pgf@circ@res@count}%
- }%
- \savedanchor\step{% 1/2 gap at edges
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@step = \ctikzvalof{tripoles/european #1 port/height}\pgf@circ@scaled@Rlen
- \divide\pgf@circ@res@step by #3
- \pgfpoint{\pgf@circ@res@left}{\dimexpr\pgf@circ@res@up+0.5\pgf@circ@res@step}%
- }%
- \savedanchor\northeast{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}%
- \savedanchor\southwest{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}%
- \savedanchor\left{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
- \savedanchor\right{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}%
- \savedanchor\origin{\pgfpoint{\ctikzvalof{tripoles/european #1 port/origin}\pgf@circ@res@right}{0pt}}%
-
- \anchor{center}{\origin}% for backwards compatibility
- % the text anchor overlaps the logic symbol
- \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}%
- % create input anchors
- \ifnum#3=1\relax
- \anchor{in}{\southwest\pgfpoint{\pgf@x}{0pt}}% or \step
- \anchor{in 1}{\southwest\pgfpoint{\pgf@x}{0pt}}% or \step
- \anchor{bin}{\left\pgfpoint{\pgf@x}{0pt}}% or \step
- \anchor{bin 1}{\left\pgfpoint{\pgf@x}{0pt}}% or \step
- \else
- \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@european #1 port\endcsname{%
- \pgfmathloop%
- \ifnum\pgfmathcounter>#3%
- \else%
- %\pgfutil@ifundefined{pgf@anchor@european #1 port@in \pgfmathcounter}{% redundant
- \expandafter\xdef\csname pgf@anchor@european #1 port@in \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@input{\pgfmathcounter}% defined above
- }%
- \expandafter\xdef\csname pgf@anchor@european #1 port@bin \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@logicport@baseinput{\pgfmathcounter}{4}{#1}% defined above
- }%
- %}{}%
- \repeatpgfmathloop%
- }
- \fi
- \anchor{out}{\northeast\pgf@y=0pt}
- \anchor{bout}{\right\advance\pgf@x by \boutshift\pgf@y=0pt}
-
- \anchor{left}{\left}% edges of component minus leads
- \anchor{right}{\right\advance\pgf@x by \boutshift\pgf@y=0pt}
-
- \anchor{north east}{\northeast}% see \Compass macro
- \anchor{south west}{\southwest}
- \anchor{north}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfpoint{0cm}{\pgf@circ@res@up}}
- \anchor{north west}{\pgfextracty{\pgf@circ@res@up}{\northeast}%
- \pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \anchor{west}{\pgfextractx{\pgf@circ@res@left}{\southwest}%
- \pgfpoint{\pgf@circ@res@left}{0cm}}
- \anchor{south}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfpoint{0cm}{\pgf@circ@res@down}}
- \anchor{south east}{\pgfextracty{\pgf@circ@res@down}{\southwest}%
- \pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \anchor{east}{\pgfextractx{\pgf@circ@res@right}{\northeast}%
- \pgfpoint{\pgf@circ@res@right}{0cm}}
-
- \anchorborder{% this is used when the node is used as a path element
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\northeast}
- \pgfextractx{\pgf@circ@res@right}{\northeast}
- \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfstartlinewidth=\pgflinewidth
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathrectanglecorners
- {\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
- \endpgfscope
- \ifpgfcirc@draw@input@leads
- %input leads
- \ifnum#3=1\relax
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}%
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}{0pt}}%
- \else
- \pgfextracty{\pgf@circ@res@temp}{\step}%
- \pgf@circ@res@step = \dimexpr 2\pgf@circ@res@temp -2\pgf@circ@res@up\relax
- %\pgf@circ@res@count = #3\relax% redundant
- \loop\ifnum\pgf@circ@res@count>0
- \advance\pgf@circ@res@temp by -\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@left}
- {\pgf@circ@res@temp}}
- \advance\pgf@circ@res@count by -1
- \repeat
- \fi
- \pgfusepath{draw}
- \fi
- %
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{ \pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}{0pt}}
- \pgfusepath{draw}
- \fi
- %
- \edef\pgf@temp{not}
- \edef\pgf@circ@temp{#4}
- \ifx\pgf@temp\pgf@circ@temp % is a not
- \ifpgf@circ@european@port@circle
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}
- % reset linewidth for IEEE ports, otherwise they will multiply...
- \ifpgf@circ@european@port@circle@ieee\pgfsetlinewidth{\pgfstartlinewidth}\fi
- \pgfnode{\ctikzvalof{tripoles/european not shape}}{west}{}{NOT}{\pgfusepath{stroke}}
- \endpgfscope
- \else
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/not width}\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/european #1 port/reserved}\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/european #1 port/not height}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \fi
- \fi
- %
- \pgfpathmoveto{\pgfpointorigin}
- \pgftext{#2}
- }
- }
-}
-\pgfcircdeclareeurologicport{and}{\&}{\pgf@circ@res@count}{}
-\pgfcircdeclareeurologicport{or}{$\ge 1$}{\pgf@circ@res@count}{}
-\pgfcircdeclareeurologicport{xor}{$=1$}{\pgf@circ@res@count}{}
-\pgfcircdeclareeurologicport{not}{$1$}{1}{not}
-\pgfcircdeclareeurologicport{buffer}{$1$}{1}{}
-\pgfcircdeclareeurologicport{nand}{\&}{\pgf@circ@res@count}{not}
-\pgfcircdeclareeurologicport{nor}{$\ge 1$}{\pgf@circ@res@count}{not}
-\pgfcircdeclareeurologicport{xnor}{$=1$}{\pgf@circ@res@count}{not}
-
-%% end european logic ports
-
-%%%%%%%%%%%%%%%%%%%%%%%%
-%% Transistors
-%%%%%%%%%%%%%%%%%%%%%%%%
-
-%
-% definitions for transistor circles
-%
-\ctikzset{transistor circle/.is family}
-\ctikzset{transistor circle/relative thickness/.initial=1}
-\ctikzset{transistor circle/color/.initial=default}
-\ctikzset{transistor circle/dash/.initial=none}
-\ctikzset{transistor circle/scale circle radius/.initial=1}
-\ctikzset{transistor circle/default base in/.initial=0.9}
-\ctikzset{transistor circle/njfet base in/.initial=1.05}
-\ctikzset{transistor circle/pjfet base in/.initial=1.05}
-\ctikzset{transistor circle/isfet base in/.initial=0.65}
-
-\newif\ifpgf@circ@trcircle\pgf@circ@trcirclefalse
-\ctikzset{tr circle/.is if=pgf@circ@trcircle}
-\tikzset{tr circle/.is if=pgf@circ@trcircle}
-%
-% add a circle to the transistor:
-%
-\def\pgfcirc@transistorcircle{
- \ifpgf@circ@trcircle
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfsetlinewidth{\ctikzvalof{transistor circle/relative thickness}\pgflinewidth}
- \edef\@@none{none}\edef\@@default{default}
- \edef\@@tmp{\ctikzvalof{transistor circle/color}}
- \ifx\@@tmp\@@default\else
- \pgfsetcolor{\@@tmp}
- \fi
- \edef\@@tmp{\ctikzvalof{transistor circle/dash}}
- \ifx\@@tmp\@@none\else
- \expandafter\pgfsetdash\expandafter{\@@tmp}{0cm}
- \fi
- % radius of the circle
- % \pgfmathsetlength{\pgf@circ@res@temp}{((#2+\extrabodydiodelen)-(#1)+(#3)*(#3)/((#2+\extrabodydiodelen)-(#1)))/2}
- % \pgfpathcircle{\pgfpoint{#1+\pgf@circ@res@temp}{0pt}}{\pgf@circ@res@temp}
- \pgfpathcircle{\pgfpoint{\circleleft+\circleradius}{0pt}}{\circleradius}
- \pgf@circ@draworfill
- \endpgfscope
- \fi
-}
-
-\long\def\pgfcircdeclaretransistor#1#2#3{
- \pgfdeclareshape{#1}
- {
- \savedmacro{\ctikzclass}{\edef\ctikzclass{transistors}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\circlebase}{
- \pgfkeysifdefined{\circuitikzbasekey/transistor circle/#1 base in}%
- {% yes, we have it
- \edef\circlebase{\ctikzvalof{transistor circle/#1 base in}}%
- }{% no, use default
- \edef\circlebase{\ctikzvalof{transistor circle/default base in}}
- }}
- % \savedmacro{\thistypeoftr}{\edef\thistypeoftr{#1}}
- \saveddimen{\extrabodydiodelen}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@fet@bodydiode
- % try to put the text to the right of the flyback diode
- \pgfmathsetlength{\pgf@x}{(
- \ctikzvalof{tripoles/#1/bodydiode distance}*
- \ctikzvalof{tripoles/#1/width} +
- \ctikzvalof{tripoles/#1/bodydiode scale}*
- \ctikzvalof{bipoles/diode/height}/2
- )*\pgf@circ@scaled@Rlen}
- \else
- \pgf@x=0pt\relax
- \fi
- }
- \savedmacro{\scaecircleradius}{
- \edef\scalecircleradius{\ctikzvalof{transistor circle/scale circle radius}}
- }
- \saveddimen{\circleradius}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- % repeat the extrabodydiodelen (grrr)
- \ifpgf@circuit@fet@bodydiode
- % try to put the text to the right of the flyback diode
- \pgfmathsetlength{\pgf@circ@res@other}{(
- \ctikzvalof{tripoles/#1/bodydiode distance}*
- \ctikzvalof{tripoles/#1/width} +
- \ctikzvalof{tripoles/#1/bodydiode scale}*
- \ctikzvalof{bipoles/diode/height}/2
- )*\pgf@circ@scaled@Rlen}
- \else
- \pgf@circ@res@other=0pt\relax
- \fi
- % left
- \pgf@xa=-\ctikzvalof{tripoles/#1/width}\pgf@circ@scaled@Rlen
- \pgf@xa=\circlebase\pgf@xa % this is the base point of the circle
- % northeast
- \pgf@yb=\ctikzvalof{tripoles/#1/height}\pgf@circ@scaled@Rlen % y of the left point of circle
- \pgf@yb=.5\pgf@yb
- \pgf@xb=\pgf@circ@res@other % this is the x of the right points of the circle
- %
- \pgf@yb=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@yb %this is #3 of the circle
- % find the radius of the circle
- \pgfmathsetlength{\pgf@x}{((\pgf@xb)-(\pgf@xa)+(\pgf@yb)*(\pgf@yb)/((\pgf@xb)-(\pgf@xa)))/2*\scalecircleradius}
- }
- \saveddimen{\circleleft}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@xa=-\ctikzvalof{tripoles/#1/width}\pgf@circ@scaled@Rlen
- \pgf@x=\circlebase\pgf@xa
- }
- \anchor{circle center}{
- \pgf@y=0pt\pgf@x=\circleleft\advance\pgf@x by\circleradius
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northeast{% upper right
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/#1/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=0pt
- }
- \savedanchor\left{%center left
- \pgf@y=0pt
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/#1/width}\pgf@circ@scaled@Rlen
- }
- \savedanchor\right{%center right -- added by Burak Kelleci % this is really 0,0
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{text}{
- \northeast
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@transisors@fixlabels
- \ifpgf@circuit@fet@bodydiode
- \advance \pgf@x by \extrabodydiodelen
- \fi
- \ifpgf@circ@trcircle
- \left\pgf@xa=\pgf@x
- \pgfmathsetlength{\pgf@x}{\circleleft+2*\circleradius}
- % \advance \pgf@x by \circleradius
- \fi
- % add a bit of space to avoid central (substrate) terminal if drawn
- \advance\pgf@x by 0.05\pgf@circ@scaled@Rlen\relax
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- \else
- \pgf@y=.7\pgf@y
- \pgf@x= \pgf@circ@scaled@Rlen
- \pgf@x=0.1\pgf@x
- \fi
- }
- \anchor{pathstart}{ % south
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{pathend}{
- \northeast
- }
- \anchor{north}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \northeast
- \pgf@y=0pt
- }
- \anchor{south}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- \pgf@x=.5\pgf@x
- }
- \anchor{south west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=-\pgf@circ@res@step
- }
- \anchor{north east}{
- \northeast
- }
- \anchor{north west}{
- \northeast
- \pgf@circ@res@step=\pgf@y
- \left
- \pgf@y=\pgf@circ@res@step
- }
- \anchor{south east}{
- \northeast
- \pgf@y=-\pgf@y
- }
- \anchor{B}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{base}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{bulk}{ %added by Burak Kelleci
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \right
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{nobulk}{ %added by Burak Kelleci
- \left
- \pgf@x=\ctikzvalof{tripoles/#1/base width}\pgf@x
- }
- \anchor{G}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{gate}{
- \northeast
- \pgf@circ@res@step=\ctikzvalof{tripoles/#1/conn height}\pgf@y
- \left
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@circ@res@step
- }
- \anchor{nobase}{
- \left
- \pgf@x=\ctikzvalof{tripoles/#1/base width}\pgf@x
- }
- \anchor{circle base}{
- \left
- \pgf@x=\circlebase\pgf@x
- }
- \anchor{nogate}{
- \left
- \pgf@x=\ctikzvalof{tripoles/#1/gate width}\pgf@x
- }
- \anchor{E}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{emitter}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{C}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{collector}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{S}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{source}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{D}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{drain}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- }
- \anchor{body C in}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- \pgf@y=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y
- }
- \anchor{circle C}{
- \left
- \pgf@xa=\circlebase\pgf@x % this is #1 of the circle
- \northeast
- \pgf@xb=\pgf@x %this is #2 of the circle
- \pgf@yb=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y %this is #3 of the circle
- % the base of the triangle is x_2 - x_1 - r
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@xb-\pgf@xa-\circleradius}
- % so let's go with the height
- \pgfmathsetlength{\pgf@ya}{sqrt(abs(\circleradius*\circleradius-\pgf@circ@res@other*\pgf@circ@res@other))}
- % finally, direction
- \pgf@y=\ctikzvalof{tripoles/#1/curr direction}\pgf@ya
- }
- \anchor{circle E}{
- \left
- \pgf@xa=\circlebase\pgf@x % this is #1 of the circle
- \northeast
- \pgf@xb=\pgf@x %this is #2 of the circle
- \pgf@yb=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y %this is #3 of the circle
- % the base of the triangle is x_2 - x_1 - r
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@xb-\pgf@xa-\circleradius}
- % so let's go with the height
- \pgfmathsetlength{\pgf@ya}{sqrt(abs(\circleradius*\circleradius-\pgf@circ@res@other*\pgf@circ@res@other))}
- % finally, direction
- % finally, direction
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@ya
- }
- \anchor{body E in}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- \pgf@y=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@y
- }
- \anchor{body C out}{
- \northeast
- \pgf@ya=\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- \pgf@ya=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@ya
- \pgf@y=\pgf@ya
- \left
- \pgf@x=-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@x
- \pgf@y=\pgf@ya
- }
- \anchor{body E out}{
- \northeast
- \pgf@ya=-\ctikzvalof{tripoles/#1/curr direction}\pgf@y
- \pgf@ya=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@ya
- \pgf@y=\pgf@ya
- \left
- \pgf@x=-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@x
- \pgf@y=\pgf@ya
- }
- #2
- \backgroundpath{
- \pgftransformationadjustments
- \pgfsetcolor{\ctikzvalof{color}}
- %
- \ifnum \ctikzvalof{tripoles/#1/curr direction} > 0
- \pgf@circuit@trans@ntypetrue
- \else
- \pgf@circuit@trans@ntypefalse
- \fi
- \northeast
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = \pgf@x
- \left
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- %
- #3
- % BODY DIODE
- \ifpgf@circuit@fet@bodydiode
- \drawbodydiode{#1}
- \fi
- %
- }
-}
-}
-
-\long\def\drawbodydiode#1{
- \pgfscope
- \pgftransformshift{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgftransformrotate{90}
- % diode scale and bodydiode scale interacts. We want the size of the diode
- % proportional to the transistor, so we will:
- % 1) undo diode scale 2) apply transistor scale (using the current class) 3) apply bodydiode scale
- \pgfmathsetmacro{\@@BDscale}{\ctikzvalof{tripoles/#1/bodydiode scale}* \ctikzvalof{\ctikzclass/scale}/\ctikzvalof{diodes/scale}}
- \pgftransformscale{\@@BDscale}
- \ifpgf@circuit@fulldiode
- \pgfnode{fulldiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \else
- \pgfnode{emptydiodeshape}{center}{}{pgf@bodydiode}{\pgfusepath{fill}}
- \fi
- \endpgfscope
- % Draw stroke line
- \ifpgf@circuit@strokediode
- \pgfpathmoveto{\pgfpointanchor{pgf@bodydiode}{west}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
- \pgfusepath{stroke}
- \fi
- %Draw upper connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{east}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@up}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope{}
- %Draw lower connection to body diode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\ctikzvalof{tripoles/#1/bodydiode distance}\pgf@circ@res@left}{\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpointanchor{pgf@bodydiode}{west}}
- \pgfusepath{draw}
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right} {\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@circ@res@down}}
- \pgftransformscale{0.5}
- \pgfnode{circ}{center}{}{}{\pgfusepath{fill}}
- \endpgfscope
-}
-
-\long\def\declarebpt#1{
- \pgfcircdeclaretransistor{#1}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/base height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/base height}\pgf@y
- }
- }{
-
- % add the circle if requested (before everything else, so we can fill it)
- \pgfcirc@transistorcircle
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % drawing base
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \ifpgf@circuit@bpt@schottky
- % upper
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
- % % lower
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transistor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \edef\@@anchor{center}
- \ifpgf@circuit@trans@ntype
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{btip}
- \pgftransformlineattime{1.0}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{\ctikzvalof{tripoles/#1/arrow pos}}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}%
- }
- \fi
- \else % p-type
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{tip}
- \pgftransformlineattime{1.0}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}%
- }
- \else
- \pgftransformlineattime{\ctikzvalof{tripoles/#1/arrow pos}}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/base height 2}\pgf@circ@res@up}%
- }
- \fi
- \fi
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \ifpgf@circuit@bpt@drawphoto
- \pgfscope
- \pgfsetarrowsstart{latexslim}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.3\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpointadd{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.05\pgf@circ@res@left}{-0.1\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- {\pgfpoint{0.5\pgf@circ@res@left}{0.1\pgf@circ@res@up}}}
- \pgfusepath{draw}
- \endpgfscope
- \else
- \ifpgf@circuit@bpt@drawbase
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
- \fi
- }
-}
-
-\declarebpt{npn}
-\declarebpt{pnp}
-%
-% multi-emitter and multi-collector BJTs by Romano Giannetti
-%
-\def\pgf@circ@bjt@C@anchor#1{% #1: collector number
- \pgfextractx{\pgf@circ@res@temp}{\basedimension}
- \pgfextracty{\pgf@circ@res@other}{\basedimension}
- \ifnum\cdir>0 % NPN, above
- \pgfpoint{\pgf@circ@res@temp}{%
- \pgf@circ@res@other+\pgfverticaltransformationadjustment*.5*\pgflinewidth+(#1-1)*\multistep}
- \else % PNP, below
- \pgfpoint{\pgf@circ@res@temp}{%
- -\pgf@circ@res@other-\pgfverticaltransformationadjustment*.5*\pgflinewidth-(#1-1)*\multistep}
- \fi
-}
-\def\pgf@circ@bjt@E@anchor#1{% #1: collector number
- \pgfextractx{\pgf@circ@res@temp}{\basedimension}
- \pgfextracty{\pgf@circ@res@other}{\basedimension}
- \ifnum\cdir<0 % PNP, above
- \pgfpoint{\pgf@circ@res@temp}{%
- \pgf@circ@res@other+\pgfverticaltransformationadjustment*.5*\pgflinewidth+(#1-1)*\multistep}
- \else % PNP, below
- \pgfpoint{\pgf@circ@res@temp}{%
- -\pgf@circ@res@other-\pgfverticaltransformationadjustment*.5*\pgflinewidth-(#1-1)*\multistep}
- \fi
-}
-
-\long\def\declarebjt#1{
- \pgfdeclareshape{bjt#1}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{transistors}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- % \cdir is 1 for npn, -1 for pnp
- \savedmacro{\cdir}{\edef\cdir{\ctikzvalof{tripoles/bjt/#1/curr direction}}}
- \savedmacro{\numE}{\edef\numE{\ctikzvalof{tripoles/bjt/emitters}}}
- \savedmacro{\numC}{\edef\numC{\ctikzvalof{tripoles/bjt/collectors}}}
- % step up or down for the additional C/Es
- \saveddimen{\multistep}{\pgfmathsetlength{\pgf@x}{%
- \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
- \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}}
- \saveddimen{\external}{\pgfmathsetlength{\pgf@x}{%
- \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}}
- \savedanchor\basedimension{% these are the dimensions if nC=1 y nE=1
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\northeast{% upper right
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@step}{%
- \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
- \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \ifnum\cdir> 0
- \edef\numup{\numC}\edef\numdown{\numE}
- \else
- \edef\numup{\numE}\edef\numdown{\numC}
- \fi
- \pgfmathsetlength{\pgf@y}{0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
- + (\numup-1)*\pgf@circ@res@step+\pgfverticaltransformationadjustment*.5*\pgflinewidth
- + \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\southeast{% lower right
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@step}{%
- \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
- \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \ifnum\cdir> 0
- \edef\numup{\numC}\edef\numdown{\numE}
- \else
- \edef\numup{\numE}\edef\numdown{\numC}
- \fi
- \pgfmathsetlength{\pgf@y}{-0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
- - (\numdown-1)*\pgf@circ@res@step-\pgfverticaltransformationadjustment*.5*\pgflinewidth
- - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgf@x=\ctikzvalof{tripoles/bjt/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\southwest{% lower left
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@step}{%
- \ctikzvalof{tripoles/bjt/height}*\ctikzvalof{tripoles/bjt/multi height}*
- \ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \ifnum\cdir> 0
- \edef\numup{\numC}\edef\numdown{\numE}
- \else
- \edef\numup{\numE}\edef\numdown{\numC}
- \fi
- \pgfmathsetlength{\pgf@y}{-0.5*\ctikzvalof{tripoles/bjt/height}\pgf@circ@scaled@Rlen
- - (\numdown-1)*\pgf@circ@res@step-\pgfverticaltransformationadjustment*.5*\pgflinewidth
- - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{tripoles/bjt/width}*\pgf@circ@scaled@Rlen
- - \ctikzvalof{tripoles/bjt/pins width}*\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{north}{\northeast\pgf@x=0cm\relax}
- \anchor{east}{\northeast\pgf@y=0cm\relax}
- \anchor{south}{\southwest\pgf@x=0cm\relax}
- \anchor{west}{\southwest\pgf@y=0cm}
- \anchor{north east}{\northeast}
- \anchor{north west}{\northeast\pgf@ya=\pgf@y\southwest\pgf@y=\pgf@ya}
- \anchor{south west}{\southwest}
- \anchor{south east}{\southeast}
-
- \anchor{text}{\northeast\pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax}
- \anchor{B}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x\advance\pgf@x by -\external}
- \anchor{base}{\basedimension\pgf@y=0cm\pgf@x=-\pgf@x\advance\pgf@x by -\external}
- \anchor{nobase}{\basedimension\pgf@y=0cm\pgf@x=-\pgf@x}
- % center of the base "bar"
- \anchor{cbase}{\basedimension\pgf@x=-\pgf@x
- \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
- }
- % geometrical centers
- \anchor{vcenter}{\pgf@x=0cm\relax
- \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
- }
- \anchor{gcenter}{%
- \northeast\pgf@xa=0.5\pgf@x
- \southwest\advance\pgf@xa by 0.5\pgf@x
- \pgf@x=\pgf@xa
- \pgfmathsetlength{\pgf@y}{\cdir*(\numC-\numE)*\multistep/2}%
- }
- % external connections
- \anchor{E}{
- \ifnum\cdir>0% npn, emitter down
- \southeast
- \else
- \northeast
- \fi
- }% first emitter
- \anchor{emitter}{\ifnum\cdir>0\southeast\else\northeast\fi}% first emitter
- \anchor{C}{\ifnum\cdir<0\southeast\else\northeast\fi}
- \anchor{collector}{\ifnum\cdir<0\southeast\else\northeast\fi}
-
- \backgroundpath{
- \pgftransformationadjustments
- \pgfsetcolor{\ctikzvalof{color}}
- %
- % set the type and up and down number of connections
- %
- \ifnum\cdir> 0
- \pgf@circuit@trans@ntypetrue
- \edef\numup{\numC}
- \edef\numdown{\numE}
- \else
- \pgf@circuit@trans@ntypefalse
- \edef\numup{\numE}
- \edef\numdown{\numC}
- \fi
- \basedimension
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = \pgf@x
- \pgf@circ@res@left = -\pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\multistep
- %
- % set arrow positions options
- %
- \edef\@@anchor{center}\edef\@@pos{\ctikzvalof{tripoles/#1/arrow pos}}
- \ifpgf@circuit@trans@arrowatend
- \edef\@@pos{1.0}
- \ifpgf@circuit@trans@ntype % arrow is toward outside, push it a bit
- \edef\@@anchor{btip}
- \else
- \edef\@@anchor{tip}
- \fi
- \fi
- %
- % Drawing upper connections
- %
- \pgfscope
- \pgf@circ@count@a=\numup\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \advance\pgf@circ@count@a-1\relax
- \pgfmathsetlength{\pgf@circ@res@other}{\the\pgf@circ@count@a*\multistep}%
- \ifnum\pgf@circ@count@a=\numexpr\numup-1\relax % draw the external pin connection
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\external+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
- \pgfpathlineto{\pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
- \else
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}}%
- \fi
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@up+\pgf@circ@res@other}}%
- \pgfsetroundcap % better when connecting to sloped lines
- \pgfusepath{draw}
- \ifpgf@circuit@trans@ntype\else % it's a PNP; draw arrow
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth+\pgf@circ@res@other}%
- }{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@up+\pgf@circ@res@other}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
- \repeatpgfmathloop
- \endpgfscope
- %
- % Drawing base
- %
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \ifpgf@circuit@bpt@schottky
- % upper
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left+
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@up+(\numup-1)*\multistep}}
- % lower
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-
- \ctikzvalof{tripoles/schottky base size}\pgf@circ@scaled@Rlen}
- {\ctikzvalof{tripoles/bjt/base height}\pgf@circ@res@down-(\numdown-1)*\multistep}}
- \fi
- \pgfsetroundcap % I like it more...
- \pgfusepath{draw}
- \endpgfscope
- %
- % draw base external connection
- %
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left-\external}{0pt}}
- \pgfusepath{draw}
- %
- % Drawing lower connections
- %
- \pgfscope
- \pgf@circ@count@a=\numdown\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \advance\pgf@circ@count@a-1\relax
- \pgfmathsetlength{\pgf@circ@res@other}{\the\pgf@circ@count@a*\multistep}%
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint
- {\pgf@circ@res@right}
- {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other}}
- \ifnum\pgf@circ@count@a=\numexpr\numdown-1\relax % draw the external pin connection
- \pgfpathlineto{\pgfpoint
- {\pgf@circ@res@right}
- {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other-\external}}
- \fi
- \pgfsetroundcap % better when connecting to sloped lines
- \pgfusepath{draw}
- \ifpgf@circuit@trans@ntype % it's a NPN; draw arrow
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint
- {\ctikzvalof{tripoles/bjt/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/bjt/base height 2}\pgf@circ@res@down-\pgf@circ@res@other}%
- }{\pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth-\pgf@circ@res@other}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \fi
- \repeatpgfmathloop
- \endpgfscope
- }
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@bjt#1\endcsname{%
- % Start with the maximum collector number and go backwards.
- \pgf@circ@count@a=\numC\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@bjt#1@C\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@bjt@C@anchor{\the\pgf@circ@count@a}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- % and emitters
- \pgf@circ@count@a=\numE\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@bjt#1@E\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@bjt@E@anchor{\the\pgf@circ@count@a}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
- }
-}
-
-\declarebjt{npn}
-\declarebjt{pnp}
-
-% end of multi-bjts
-
-\long\def\declareigbt#1{
- \pgfcircdeclaretransistor{#1}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/gate height}\pgf@y
- }
- }
- {
- % add the circle if requested (before everything else, so we can fill it)
- \pgfcirc@transistorcircle
- %draw upper connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- %draw thicker gate lines
- \pgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/outer base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/outer base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- % set the normal thickness
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \edef\@@extrat{\ctikzvalof{tripoles/#1/outer base thickness}}
- \pgfsetlinewidth{\@@extrat\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %draw lower connection
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
- %draw arrow depending on type of transistor
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \ifpgf@circuit@trans@ntype
- \edef\@@anchor{btip}\edef\@@pos{1.0}
- \else
- \edef\@@anchor{tip}\edef\@@pos{1.0}
- \fi
- \else
- \edef\@@anchor{center}\edef\@@pos{0.5}
- \fi
- \ifpgf@circuit@trans@ntype
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}%
- }
- \else
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint{\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}%
- }
- \fi
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- %draw gate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}%
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}}
- \fi
- \pgfusepath{draw}
- }
-}
-
-\declareigbt{pigbt}
-\declareigbt{nigbt}
-\declareigbt{Lnigbt}
-\declareigbt{Lpigbt}
-
-\pgfcircdeclaretransistor{nmos}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/nmos/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/nmos/gate height}\pgf@y
- }
- }{%
- % add the circle if requested (before everything else, so we can fill it)
- \pgfcirc@transistorcircle
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \ifpgf@circuit@trans@arrowatend
- \pgftransformshift{\pgfpoint
- {\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{trarrow}{btip}{}{}{\pgfusepath{stroke}}
- \else
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\ctikzvalof{tripoles/nmos/arrow pos}}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/nmos/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \fi
- \endpgfscope
- \fi
-
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-
- \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/nmos/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-}
-
-\pgfcircdeclaretransistor{pmos}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/pmos/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/pmos/gate height}\pgf@y
- }
- }{%
- % add the circle if requested (before everything else, so we can fill it)
- \pgfcirc@transistorcircle
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \ifpgf@circuit@trans@arrowatend
- \pgftransformshift{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
- }
- \pgftransformrotate{180}
- \pgfnode{trarrow}{tip}{}{}{\pgfusepath{stroke}}
- \else
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\ctikzvalof{tripoles/pmos/arrow pos}}{%
- \pgfpoint%
- {\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \fi
- \endpgfscope
- \fi
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pmos/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
-
-
- \pgfusepath{draw}
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-
- \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/pmos/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-
- \ifpgf@circuit@pmos@nocircle\else
- % we are not scaling the circle with the MOS --- I think it's better to have it
- % coherent with the poles/nodes of the rest of the circuit.
- \pgfpathcircle{\pgfpoint
- {\ctikzvalof{tripoles/pmos/gate width}\pgf@circ@res@left - \ctikzvalof{nodes width}*\pgf@circ@Rlen}
- {\pgf@circ@res@up+\pgf@circ@res@down}}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \ifpgf@circuit@pmos@emptycircle
- \pgfsetfillcolor{white}
- \fi
- \pgfusepath{draw,fill}
- \fi
-}
-
-%%% depletion MOSFET (simplified symbols)
-
-\long\def\pgfcirc@filldraw@depletion#1{%
- \ifx\tikz@fillcolor\pgfutil@empty
- % if there is no explicit fill check the specific key
- \edef\@@tmp{\ctikzvalof{tripoles/#1/depletion color}}\edef\@@none{none}%
- \ifx\@@tmp\@@none % if it's none
- \pgfusepath{draw}%
- \else
- \edef\@@default{default}%
- \ifx\@@tmp\@@default % fill with the pen color
- \pgfusepath{draw, fill}%
- \else
- \pgfsetfillcolor{\@@tmp}%
- \pgfusepath{draw, fill}%
- \fi
- \fi
- \else
- \pgfsetfillcolor{\tikz@fillcolor}%
- \pgfusepath{draw, fill}%
- \fi
-}
-
-\pgfcircdeclaretransistor{nmosd}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/nmosd/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/nmosd/gate height}\pgf@y
- }
- \anchor{nobulk}{ %override
- \left
- \pgf@circ@res@temp=\ctikzvalof{tripoles/nmosd/depletion width}\pgf@x
- \pgf@x=\ctikzvalof{tripoles/nmosd/base width}\pgf@x
- \advance\pgf@x by -\pgf@circ@res@temp
- }
- }{%
- % draw depletion channel
- % add the circle if requested (before everything else, so we can fill it)
- \pgfcirc@transistorcircle
- \pgfscope
- \pgfpathrectanglecorners
- {\pgfpoint
- {\ctikzvalof{tripoles/nmosd/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@up}}
- {\pgfpoint
- {(\ctikzvalof{tripoles/nmosd/base width} - \ctikzvalof{tripoles/nmosd/depletion width})*\pgf@circ@res@left}
- {-\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@up}}
- \pgfcirc@filldraw@depletion{nmosd}
- \endpgfscope
- % draw drain and source terminals
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/nmosd/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmosd/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmosd/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmosd/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/nmosd/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmosd/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmosd/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/nmosd/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \ifpgf@circuit@trans@arrowatend
- \pgftransformshift{\pgfpoint
- {\pgf@circ@res@right}%
- {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{trarrow}{btip}{}{}{\pgfusepath{stroke}}
- \else
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\ctikzvalof{tripoles/nmosd/arrow pos}}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/nmosd/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\pgf@circ@res@right-\ctikzvalof{tripoles/nmosd/depletion width}*\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/nmosd/gate height}\pgf@circ@res@down}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \fi
- \endpgfscope
- \fi
-
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/nmosd/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-
- \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/nmosd/base width}\pgf@circ@res@left-\ctikzvalof{tripoles/nmosd/depletion width}*\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-}
-
-\pgfcircdeclaretransistor{pmosd}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/pmosd/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/pmosd/gate height}\pgf@y
- }
- \anchor{nobulk}{ %override
- \left
- \pgf@circ@res@temp=\ctikzvalof{tripoles/pmosd/depletion width}\pgf@x
- \pgf@x=\ctikzvalof{tripoles/pmosd/base width}\pgf@x
- \advance\pgf@x by -\pgf@circ@res@temp
- }
- }{%
- % add the circle if requested (before everything else, so we can fill it)
- \pgfcirc@transistorcircle
- % draw depletion channel
- \pgfscope
- \pgfpathrectanglecorners
- {\pgfpoint
- {\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}}
- {\pgfpoint
- {(\ctikzvalof{tripoles/pmosd/base width} - \ctikzvalof{tripoles/pmosd/depletion width})*\pgf@circ@res@left}
- {-\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}}
- \pgfcirc@filldraw@depletion{pmosd}
- \endpgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \ifpgf@circuit@mos@arrows
- \pgfscope
- \ifpgf@circuit@trans@arrowatend
- \pgftransformshift{\pgfpoint
- {\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left-\ctikzvalof{tripoles/nmosd/depletion width}*\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}%
- }
- \pgftransformrotate{180}
- \pgfnode{trarrow}{tip}{}{}{\pgfusepath{stroke}}
- \else
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \pgftransformlineattime{\ctikzvalof{tripoles/pmosd/arrow pos}}{%
- \pgfpoint%
- {\pgf@circ@res@right-\ctikzvalof{tripoles/nmosd/depletion width}*\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\ctikzvalof{tripoles/pmosd/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}%
- }
- \pgfnode{currarrow}{center}{}{}{\pgfusepath{stroke}}
- \fi
- \endpgfscope
- \fi
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmosd/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmosd/base height}\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmosd/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pmosd/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pmosd/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
-
-
- \pgfusepath{draw}
- \ifpgf@circuit@bpt@drawgate
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pmosd/gate width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-
- \ifpgf@circuit@bpt@drawbulk % added by Burak Kelleci
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/pmosd/base width}\pgf@circ@res@left-\ctikzvalof{tripoles/nmosd/depletion width}*\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
- \fi
-
- \ifpgf@circuit@pmos@nocircle\else
- % we are not scaling the circle with the MOS --- I think it's better to have it
- % coherent with the poles/nodes of the rest of the circuit.
- \pgfpathcircle{\pgfpoint
- {\ctikzvalof{tripoles/pmosd/gate width}\pgf@circ@res@left - \ctikzvalof{nodes width}*\pgf@circ@Rlen}
- {\pgf@circ@res@up+\pgf@circ@res@down}}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
- \ifpgf@circuit@pmos@emptycircle
- \pgfsetfillcolor{white}
- \fi
- \pgfusepath{draw,fill}
- \fi
-}
-%% HEMT FET Transistor
-\pgfcircdeclaretransistor{hemt}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/hemt/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/hemt/gate height}\pgf@y
- }
- }{%
- % add the circle if requested (before everything else, so we can fill it)
- \pgfcirc@transistorcircle
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/hemt/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/hemt/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/hemt/base height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/hemt/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-\long\def\drawfetcore#1{
- \pgftransformationadjustments
- % add the circle if requested (before everything else, so we can fill it)
- \pgfcirc@transistorcircle
-
- %top connection
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up}}
- \ifpgf@circuit@trans@depletiontype
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \else
-
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up*0.45}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up*0.25}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down*0.25}}
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/nfet/base height}\pgf@circ@res@down*0.45}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down}}
- \fi
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
- %Bulk connection line
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- %bottom connection
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- %draw thick gate line
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- % arrows
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \ifpgf@circuit@trans@ntype
- \edef\@@anchor{tip}
- \edef\@@pos{1.0}
- \else
- \edef\@@anchor{btip}
- \edef\@@pos{0.0}
- \fi
- \else
- \edef\@@anchor{center}\edef\@@pos{0.6}
- \fi
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \ifpgf@circuit@trans@ntype
- \else
- \pgftransformrotate{180}
- \fi
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
-% GATE CONNECTION
-\ifpgf@circuit@bpt@drawgate
- \ifpgf@circuit@trans@ntype
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \else
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left}
- {-\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}}
- \fi
- \pgfusepath{draw}
-\fi
-
-}
-
-\long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3
-{\pgfcircdeclaretransistor{#1}{
- \anchor{bulk}{\left\pgf@x=0pt}
- \anchor{B}{\left\pgf@x=0pt}%override Base anchor from npn&igbt
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/#1/gate height}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/#1/gate height}\pgf@y
- }
- #2
- }
- {#3}
-}
-
-\pgfdeclaretransistorwrapperaddbulk{nfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nfet}
-}
-
-\pgfdeclaretransistorwrapperaddbulk{pfet}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pfet}
-}
-
-\pgfdeclaretransistorwrapperaddbulk{nfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{nfetd}
-}
-
-\pgfdeclaretransistorwrapperaddbulk{pfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{pfetd}
-}
-% N-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfete}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
-\fi
-}
-
-% N-CHANNEL IGFET ENHANCEMENT TYPE with Bulk connector
-\pgfdeclaretransistorwrapperaddbulk{nigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{nigfetebulk}
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfetebulk/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-% N-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{nigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{nigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfete}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfete}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/pigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope
- \fi
-}
-
-% P-CHANNEL IGFET ENHANCEMENT TYPE with bulk connector
-\pgfdeclaretransistorwrapperaddbulk{pigfetebulk}{}{%
- \pgf@circuit@trans@depletiontypefalse
- \drawfetcore{pigfetebulk}
-}
-
-% P-CHANNEL IGFET DEPLETION TYPE
-\pgfdeclaretransistorwrapperaddbulk{pigfetd}{}{%
- \pgf@circuit@trans@depletiontypetrue
- \drawfetcore{pigfetd}
-
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@up}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
-}
-
-\pgfcircdeclaretransistor{njfet}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/njfet/gate height 2}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/njfet/gate height 2}\pgf@y
- }
- }{%
- % add the circle if requested (before everything else, so we can fill it)
- \pgfcirc@transistorcircle
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- % arrow
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{tip}\edef\@@pos{1.0}
- \else
- \edef\@@anchor{center}\edef\@@pos{0.6}
- \fi
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint{\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/njfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\ctikzvalof{tripoles/njfet/gate height 2}\pgf@circ@res@down}}
- \pgfusepath{draw}
-}
-
-\pgfcircdeclaretransistor{pjfet}{
- \anchor{inner up}{
- \northeast
- \pgf@y=\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@y
- }
- \anchor{inner down}{
- \northeast
- \pgf@y=-\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@y
- }
- }{%
- % add the circle if requested (before everything else, so we can fill it)
- \pgfcirc@transistorcircle
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{btip}\edef\@@pos{1.0}
- \else
- \edef\@@anchor{center}\edef\@@pos{0.4}
- \fi
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint%
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }{%
- \pgfpoint{\pgf@circ@res@left}%
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/pjfet/gate width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}
- {\ctikzvalof{tripoles/pjfet/gate height 2}\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-\pgfdeclaretransistorwrapperaddbulk{isfet}{
- }{%
- % add the circle if requested (before everything else, so we can fill it)
- \pgfcirc@transistorcircle
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- % DRAIN CONNECTION
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@up}}
- % DRAIN
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- % GATE, DEPLETION TYPE
- \pgfscope %% added
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/isfet/base height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/isfet/base height}\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth} %% added
- \pgfusepath{draw} %% added
- \endpgfscope %% added
-
- % BULK
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+.5\pgflinewidth}
- {\pgf@circ@res@up+\pgf@circ@res@down}}
-
- % SOURCE
- \pgfpathmoveto{\pgfpoint
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}
- {\ctikzvalof{tripoles/isfet/gate height}\pgf@circ@res@down}}
- % SOURCE CONNECTION
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
- \pgfusepath{draw}
-
- % SOLDER DOT at source-bulk connection
- \ifpgf@circuit@fet@solderdot
- \pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{
- \ctikzvalof{tripoles/nigfete/gate height}\pgf@circ@res@down}}
- \pgfnode{circ}{center}{}{}{}
- \endpgfscope{}
- \fi
- % ARROW
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgfresetnontranslationattimefalse
- \ifpgf@circuit@trans@arrowatend
- \edef\@@anchor{tip}\edef\@@pos{1.0}
- \else
- \edef\@@anchor{center}\edef\@@pos{0.6}
- \fi
- \pgftransformlineattime{\@@pos}{%
- \pgfpoint
- {\pgf@circ@res@right}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }{%
- \pgfpoint%
- {\ctikzvalof{tripoles/isfet/base width}\pgf@circ@res@left}%
- {\pgf@circ@res@up+\pgf@circ@res@down}%
- }
- \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfusepath{draw}
-
- % Wavy lines
- \pgfscope
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{0cm}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tripoles/isfet/waves x sep}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/waves y sep}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathsine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfpathcosine{\pgfpoint{-\ctikzvalof{tripoles/isfet/wave width}\pgf@circ@res@up}{-\ctikzvalof{tripoles/isfet/wave amp}\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% end of transistors
-
-%%%%%%%%%%%%%
-%% Switches
-%%%%%%%%%%%%%
-
-\pgfcircdeclarebipole{
- \anchor{out 1}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{out 2}{
- \northeast
- \pgf@y=.8\pgf@y
- }
-}
-{\ctikzvalof{tripoles/toggleswitch/height 2}}
-{toggleswitch}
-{\ctikzvalof{tripoles/toggleswitch/height}}
-{\ctikzvalof{tripoles/toggleswitch/width}}
-{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgfusepath{draw}
- \pgfscope
- \pgfpathmoveto{\pgfpoint{.3\pgf@circ@res@left}{0pt}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{0}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.5\pgf@circ@res@right}{.15\pgf@circ@res@up}}
- \pgfusepath{draw}
-
-
- \pgfpathmoveto{\pgfpoint{.2\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfsetdash{{.08\pgf@circ@res@up}{.04\pgf@circ@res@up}{.7\pgf@circ@res@up}{.04\pgf@circ@res@up}{.8\pgf@circ@res@up}}{0cm}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.8\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{.2\pgf@circ@res@left}{.6\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.2\pgf@circ@res@up}}
- \pgfusepath{draw}
- \pgfsetdash{}{0cm}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% operational and instrumentation amplifiers
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{op amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\left{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/op amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/op amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
-
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- % Triangle
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/op amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Output terminal
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf@circ@res@right}{0pt}}
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-% Op amp shape as in european standard EN 60617
-\pgfdeclareshape{en amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\left{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/en amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/en amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{up}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{down}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/en amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/en amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/en amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/en amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
- \pgfsetrectcap
- \pgfusepath{draw}
-
-
- \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\hbox{\ctikzvalof{tripoles/en amp/font2}\ctikzvalof{tripoles/en amp/text}}}
- % \pgftext[top, y=-.5ex, at=\pgfpoint{0pt}{\pgf@circ@res@up}]{\ctikzvalof{tripoles/en amp/font2}$\mathstrut{\triangleright}\,\mathrm{A}$}
- }
-}
-
-% Fully differential output op amp
-% Contributed by Kristofer M. Monisit
-\pgfdeclareshape{fd op amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \savedanchor\outline{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y\pgf@x=0pt\relax
- }
- \anchor{north}{
- \northwest\pgf@x=0pt\relax
- }
- \savedanchor\left{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd op amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd op amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd op amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/fd op amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out up}{
- \northwest
- \pgf@y=\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{out down}{
- \northwest
- \pgf@y=-\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{out +}{
- \outline
- \pgf@y=\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{out -}{
- \outline
- \pgf@y=-\ctikzvalof{tripoles/fd op amp/output height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bout +}{
- \outline
- \pgf@xa=\pgf@x\pgf@ya=\pgf@y
- \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
- {\pgfpoint{\pgf@xa}{0pt}}
- {\pgfpoint{0pt}{\pgf@ya}}
- }
- \anchor{bout -}{
- \outline
- \pgf@xa=\pgf@x\pgf@ya=\pgf@y
- \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
- {\pgfpoint{\pgf@xa}{0pt}}
- {\pgfpoint{0pt}{\pgf@ya}}
- \pgf@y=-\pgf@y
- }
- \anchor{bout up}{
- \northwest
- \pgf@xa=\pgf@x\pgf@ya=\pgf@y
- \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
- {\pgfpoint{\pgf@xa}{0pt}}
- {\pgfpoint{0pt}{\pgf@ya}}
- }
- \anchor{bout down}{
- \northwest
- \pgf@xa=\pgf@x\pgf@ya=\pgf@y
- \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
- {\pgfpoint{\pgf@xa}{0pt}}
- {\pgfpoint{0pt}{\pgf@ya}}
- \pgf@y=-\pgf@y
- }
- % end border anchors
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{out}{% should not be used
- \left
- \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf@x \pgf@y=-\pgf@y }
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- % Triangle
- % Includes output terminals in the traingular shape
- % to ensure that diagonal joins are properly displayed
- % we first draw the main triangle and the leads with normal thickness,
- % and the redraw the main triangle with the component shape
- \pgfscope
- % shift origin a bit to ease calculations
- \pgftransformxshift{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@step
-
- % Initial point (right vertex)
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
-
- % Negative output terminal
- \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@up}}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\ctikzvalof{tripoles/fd op amp/output height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@up}}}
-
- % Top vertex
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
-
- % Bottom vertex
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
-
- % Positive output terminal
- \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@down}}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\ctikzvalof{tripoles/fd op amp/output height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}{\pgfpoint{\pgf@circ@res@step}{0pt}}{\pgfpoint{0pt}{\pgf@circ@res@down}}}
-
- % Right vertex
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
-
- \pgfpathclose
- \pgfusepath{stroke}
-
- % ok, now we'll redraw the triangle with the class specific
- % thickness and optionally fill
-
- \pgfscope
- \pgf@circ@setlinewidth{quadpoles}{\pgflinewidth}
-
- % Initial point (right vertex)
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- % Top vertex
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- % Bottom vertex
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
-
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope % thick and fill
- \endpgfscope % shift
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Negative output terminal label
- \pgftext[right, bottom, x=3pt, y=1pt, at=\pgfpoint{0pt}{0.425\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@oplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Positive output terminal label
- \pgftext[right, top, x=3pt, y=-1pt, at=\pgfpoint{0pt}{0.425\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf@circuit@oa@oplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-
-% Instrumentation amplifier with differential output
-\pgfdeclareshape{fd inst amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- % when tikz calls the anchor it wants the relative position in the lengths
- % \pgf@x \pgf@y
- % \pgfpoint* functions set that variables
- % anchors are visible outside and run on use
- \anchor{center}{\pgfpointorigin}
- % savedanchors are internals and run on node creation (not use)
- % bounding-box top left
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{nw}{
- \northwest
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y\pgf@x=0pt\relax
- }
- \anchor{north}{
- \northwest\pgf@x=0pt\relax
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \ctikzvalof{tripoles/fd inst amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/fd inst amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- % reference voltage input anchors.
- \savedanchor\refv{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/fd inst amp/refv pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
- }
- % we need both because they are normally drawn under the amp, and if you
- % mirror it vertically you need them
- \anchor{refv up}{
- \refv
- }
- \anchor{refv down}{
- \refv
- \pgf@y=-\pgf@y
- }
- \savedanchor\outport{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- \ifpgf@circuit@oa@oplusup\else\pgf@y=-\pgf@y\fi
- }
- \anchor{out}{
- \outport
- \pgf@y=0pt
- }
- \anchor{out +}{
- \outport
- }
- \anchor{out -}{
- \outport
- \pgf@y=-\pgf@y
- }
- \savedanchor\outportfixed{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/fd inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=-.5\pgf@x
- }
- \anchor{out up}{
- \outportfixed
- }
- \anchor{out down}{
- \outportfixed
- \pgf@y=-\pgf@y
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/fd inst amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@x=-\pgf@x \pgf@y=0pt
- }
- \anchor{bout +}{
- \outport
- \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
- }
- \anchor{bout -}{
- \outport
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
- }
- \anchor{bout up}{
- \outportfixed
- \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
- }
- \anchor{bout down}{
- \outportfixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@x=-\pgf@x \pgf@y=\pgf@ya
- }
- % end border anchors
- %
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- % let's start drawing the component
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- %
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- % main component, normally in thicker lines
- \pgfscope
- \newdimen\pgf@circ@res@right@double
- \pgf@circ@res@right@double=2\pgf@circ@res@right
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@step
- %first point (near output)
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{0}}
- %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@up}}
- % and then to the input "front up", "down", to the output short side "down"
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/fd inst amp/height 2}\pgf@circ@res@down}}
- % ...and close
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- % input terminal up
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}}
- %
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % input terminal down
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % output leads down and up
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}} %
- \pgftext[right, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$-\;$\else$+\;$\fi}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}} %
- \pgftext[right, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/fd inst amp/font}\ifpgf@circuit@oa@oplusup$+\;$\else$-\;$\fi}
- %
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-% Transconductance amplifier (Transkonduktanzverstรคrker)
-\pgfdeclareshape{gm amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/gm amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/gm amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/gm amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/gm amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/gm amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/gm amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgfscope
- \newdimen\pgf@circ@res@right@double
- \pgf@circ@res@right@double=2\pgf@circ@res@right
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@step
- %Umrandung:
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{0}} %geรคndert startpunkt neu am ausgangsstrich
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@up}}%vom Ausgang nach oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}} %neu ecke links oben nach rechts oben
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}} %bei deneigรคngen runter
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/gm amp/height 2}\pgf@circ@res@down}}%ecke links unten nach rechts unten
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/gm amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf@circ@res@right}{0pt}} %
- \pgfsetrectcap
- \pgfusepath{draw}
-
- }
-}
-
-% Instrumentation amplifier
-\pgfdeclareshape{inst amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- % when tikz calls the anchor it wants the relative position in the lengths
- % \pgf@x \pgf@y
- % \pgfpoint* functions set that variables
- % anchors are visible outside and run on use
- \anchor{center}{\pgfpointorigin}
- % savedanchors are internals and run on node creation (not use)
- % bounding-box top left
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{nw}{
- \northwest
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/inst amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/inst amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- % reference voltage input anchors.
- \savedanchor\refv{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/inst amp/refv pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
- }
- % we need both because they are normally drawn under the amp, and if you
- % mirror it vertically you need them
- \anchor{refv up}{
- \refv
- }
- \anchor{refv down}{
- \refv
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/inst amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/inst amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- % let's start drawing the component
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- %
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- % main component, normally in thicker lines
- \pgfscope
- \newdimen\pgf@circ@res@right@double
- \pgf@circ@res@right@double=2\pgf@circ@res@right
-
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@step
- %first point (near output)
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{0}}
- %from the exit to the top (short side)... (note that the .6 must be copied in \up and \refv anchors
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@up}}
- % and then to the input "front up", "down", to the output short side "down"
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp/height 2}\pgf@circ@res@down}}
- % ...and close
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}}
- %
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Output terminal
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf@circ@res@right}{0pt}} %
- %
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-% Instrumentation amplifier with terminals for gain resistance between inputs
-\pgfdeclareshape{inst amp ra}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- % bounding-box top left
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{nw}{
- \northwest
- }
- \anchor{south}{
- \northwest
- \pgf@y=-\pgf@y\pgf@x=0pt\relax
- }
- \anchor{north}{
- \northwest\pgf@x=0pt\relax
- }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{leftedge}
- {\left
- \pgf@x = \ctikzvalof{tripoles/op amp/port width}\pgf@x
- }
- % inputs (+-)
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- % R ampli anchors. They are by default at 20% more than R-length distance
- % you can change that with the `ra pos` key (use 0.5 for one-R).
- \savedanchor\raOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\pgf@circ@scaled@Rlen
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{ra up}{
- \raOneFixed
- }
- \anchor{ra down}{
- \raOneFixed
- \pgf@y=-\pgf@y
- }
- \savedanchor\raOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\pgf@circ@scaled@Rlen
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \anchor{ra-}{
- \raOne
- }
- \anchor{ra+}{
- \raOne
- \pgf@y=-\pgf@y
- }
- % power supplies
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/inst amp ra/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- % reference voltage input anchors.
- \savedanchor\refv{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/inst amp ra/height}\pgf@circ@scaled@Rlen
- \pgf@y=0.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=0.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/inst amp ra/refv pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
- }
- % we need both because they are normally drawn under the amp, and if you
- % mirror it vertically you need them
- \anchor{refv up}{
- \refv
- }
- \anchor{refv down}{
- \refv
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/inst amp ra/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bra up}{
- \raOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bra down}{
- \raOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bra-}{
- \raOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bra+}{
- \raOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \anchor{west}{
- \left
- }
- \anchor{east}{
- \left
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- % drawing of the component
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \newdimen\pgf@circ@res@right@double
- \pgf@circ@res@right@double=2\pgf@circ@res@right
-
- % main component, normally in thicker lines
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@step
- %primer punto: la linea de salida (lado componente)
- \pgfpathmoveto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{0}}
- %from the exit to the top (short side)... (note that the .6 must be copied in \up anchor
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@up}}
- % and then to the input "front up", "down", to the output short side "down"
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right@double}{\ctikzvalof{tripoles/inst amp ra/height 2}\pgf@circ@res@down}}
- % ...and close
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- % ra terminal -
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
- % ra terminal +
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {-\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {-\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf@circ@Rlen}}
-
- % Negative input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}}
- %
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@up}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@plus\else\pgf@circ@ampli@minus\fi}
-
- % Positive input terminal
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}}
- %
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}}
- \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf@circ@res@down}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf@circuit@oa@iplusup\pgf@circ@ampli@minus\else\pgf@circ@ampli@plus\fi}
-
- % Output terminal
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf@circ@res@right}{0pt}} %
- %
- \pgfsetrectcap
- \pgfusepath{draw}
- }
-}
-
-% Buffer
-% Contributed by Danilo Piazzalunga
-\pgfdeclareshape{buffer}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{bipoles/buffer/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/buffer/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{bin}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0.7\pgf@x
- }
- \anchor{bout}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-0.7\pgf@x
- }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \northwest
- \pgfmathsetlength{\pgf@x}{0.7*\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{.7\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=.7\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@left}{0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{.7\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
- }
-}
-
-% plain amplifier, no symbols
-\pgfdeclareshape{plain amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/plain amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \ifpgf@circuit@oa@iplusup\pgf@y=-\pgf@y\fi
- }
- \savedanchor\inOneFixed{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@y=\ctikzvalof{tripoles/plain amp/input height}\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{-}{
- \inOne
- }
- \anchor{+}{
- \inOne
- \pgf@y=-\pgf@y
- }
- \anchor{in up}{
- \inOneFixed
- }
- \anchor{in down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/plain amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin up}{
- \inOneFixed
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bin down}{
- \inOneFixed
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b-}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{b+}{
- \inOne
- \pgf@y=-\pgf@y
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/plain amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@up}}
-
-
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {\ctikzvalof{tripoles/plain amp/input height}\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
- }
-}
-
-% plain amplifier, no symbols, one input
-\pgfdeclareshape{plain mono amp}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{north}{ \northwest \pgf@x=0pt }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \savedanchor\left{%
- \pgf@y=0pt
- }
- \savedanchor\inOne{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@y=0pt\relax
- }
- \anchor{in}{
- \inOne
- }
- % support for border anchors
- \savedanchor\leftedge{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x = \ctikzvalof{tripoles/plain amp/port width}\pgf@x
- \pgf@y=0pt
- }
- \anchor{leftedge}{\leftedge}
- \anchor{rightedge}{\leftedge \pgf@x =-\pgf@x }
- \anchor{bin}{
- \inOne
- \pgf@ya=\pgf@y \leftedge \pgf@y=\pgf@ya
- }
- \anchor{bout}{
- \leftedge
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- % end border anchors
- \savedanchor\up{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/plain amp/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/plain amp/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfpointlineattime{
- \ctikzvalof{tripoles/plain amp/up pos}}{
- \pgfpoint{
- \ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {\pgf@circ@res@up}}
- {\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
- }
- \anchor{up}{
- \up
- }
- \anchor{down}{
- \up
- \pgf@y=-\pgf@y
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
-
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgf@x=\dimexpr -.6\wd\pgfnodeparttextbox\relax
- \else
- \leftedge
- \pgfmathsetlength{\pgf@x}{\pgf@x + \ctikzvalof{left text distance}}
- \fi
- \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgftransformxshift{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- \pgf@circ@res@step=\pgf@circ@res@right
- \advance\pgf@circ@res@step by -\pgf@circ@res@left
- \pgf@circ@res@step=\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@step
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- \pgfpathmoveto{\pgfpoint
- {\pgf@circ@res@left}
- {0pt}}
- \pgfpathlineto{\pgfpoint
- {\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@left}
- {0pt}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf@circ@res@right}{0pt}}
-
- \pgfusepath{draw}
- }
-}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% electromechanical device (motor/generator)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{elmech}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{electromechanicals}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/elmech/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/elmech/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{text}{
- \pgfpointorigin
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -.5\ht\pgfnodeparttextbox
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{%
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{top}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathstart}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathend}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{bottom}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \anchorborder{%
- \@tempdima=\pgf@x\@tempdimb=\pgf@y
- \northwest\pgf@circ@res@other=-\pgf@x
- \pgfpointborderellipse{\pgfqpoint{\@tempdima}{\@tempdimb}}{\pgfqpoint{\pgf@circ@res@other}{\pgf@circ@res@other}}
- }
- \anchor{block north west}{\northwest\pgf@x=0.5\pgf@x}
- \anchor{block south west}{\northwest\pgf@x=0.5\pgf@x\pgf@y=-\pgf@y}
- \anchor{block north east}{\northwest\pgf@x=-0.5\pgf@x}
- \anchor{block south east}{\northwest\pgf@x=-0.5\pgf@x\pgf@y=-\pgf@y}
- \anchor{block up right}{
- \northwest
- % remember that pgf@x is negative
- % center of the block is at 0.5*H+W*cos(30)/2
- \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
- \pgf@x=-0.5\pgf@x
- }
- \anchor{block up left}{
- \northwest
- % remember that pgf@x is negative
- % center of the block is at 0.5*H+W*cos(30)/2
- \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
- \pgf@x=0.5\pgf@x
- }
- \anchor{block down right}{
- \northwest
- % remember that pgf@x is negative
- % center of the block is at 0.5*H+W*cos(30)/2
- \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
- \pgf@y=-\pgf@y
- \pgf@x=-0.5\pgf@x
- }
- \anchor{block down left}{
- \northwest
- % remember that pgf@x is negative
- % center of the block is at 0.5*H+W*cos(30)/2
- \pgf@y=\dimexpr0.5\pgf@y - 0.433\pgf@x\relax
- \pgf@y=-\pgf@y
- \pgf@x=0.5\pgf@x
- }
- \behindbackgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{tripoles/elmech/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up=\ctikzvalof{tripoles/elmech/height}\pgf@circ@scaled@Rlen
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfscope % clip the bar: whole size minus the circle
- \pgfpathrectanglecorners{\pgfpoint{-.5\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{.5\pgf@circ@res@up}}
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgfseteorule
- \pgfusepath{clip}
- \pgfpathrectangle{\pgfpoint{-.25\pgf@circ@res@step}{-.5\pgf@circ@res@up}}{\pgfpoint{.5\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfsetfillcolor{\ctikzvalof{color}}
- \pgfusepath{fill, draw}
- \endpgfscope
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{white}
- % ...but override it if the class is defined!
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \pgfusepath{draw, fill}
- \fi
- \endpgfscope
- }
-}
-
-%%%%%%%%%%%%%%%%%%%
-%% Magnetron
-%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{magnetron}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}} % class of these components
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{anode}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{cathode1}{
- \northwest
- \pgf@circ@res@step=\pgf@y
- \pgfmathparse{cos(105)}
- \pgf@x=\pgfmathresult\pgf@circ@res@step
- \pgfmathparse{sin(105)}
- \pgf@y=\pgfmathresult\pgf@circ@res@step
- %\pgfpointorigin
- %\pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
- }
- \anchor{cathode2}{
- \northwest
- \pgf@circ@res@step=\pgf@y
- \pgfmathparse{cos(75)}
- \pgf@x=\pgfmathresult\pgf@circ@res@step
- \pgfmathparse{sin(75)}
- \pgf@y=\pgfmathresult\pgf@circ@res@step
- %\pgfpointorigin
- %\pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@step}}%not working in a scaled tikzpicture
- }
- \anchor{text}{
- \pgfpointorigin
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -.5\ht\pgfnodeparttextbox
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{%
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{top}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathstart}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{pathend}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{bottom}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northwest \pgf@x=-\pgf@x }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step=\ctikzvalof{tripoles/magnetron/width}\pgf@circ@scaled@Rlen
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgfmathsetlength{\pgf@circ@res@other}{sin(15)*\pgf@circ@res@up}
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- %create outer circle
- \pgfpathcircle{\pgfpoint{0}{0}} {\pgf@circ@res@right}
- \pgf@circ@draworfill
- %create chambers
- \foreach \angle in {45,135,225,315}{
- \pgfpathmoveto{ \pgfpointpolar{\angle}{0.6\pgf@circ@res@right}}
- \pgfpathlineto{ \pgfpointpolar{\angle}{\pgf@circ@res@right}}
- }
- \pgfsetroundcap
- \pgfusepath{draw}
- \pgfscope
- %draw connection from outside
- %anode
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0\pgf@circ@res@right}{.5\pgf@circ@res@down}}
- %cathodes
- \pgfpathmoveto{\pgfpointpolar{105}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpointpolar{75}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- %create cathode
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0}{.15\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@other}{.5\pgf@circ@res@up}}
- \pgfusepath{draw}
- %create anode
- \pgfpathmoveto{\pgfpoint{0.3\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@right}{.5\pgf@circ@res@down}}
-
- \pgfsetbuttcap
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Electronic tubes, submitted by J. op den Brouw
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Draw tube outline
-\def\pgf@circ@tubes@drawtube{%
- \ifdim\ctikzvalof{tubes/width}pt>\ctikzvalof{tubes/height}pt\relax
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfutil@tempdima=\pgf@circ@res@right
- \advance\pgfutil@tempdima by -\pgf@circ@res@up
- \pgfpathlineto{\pgfpoint{\pgfutil@tempdima}{\pgf@circ@res@up}}
- \pgfpatharc{90}{-90}{\pgf@circ@res@up}
- \pgfpathlineto{\pgfpoint{-\pgfutil@tempdima}{-\pgf@circ@res@up}}
- \pgfpatharc{270}{90}{\pgf@circ@res@up}
- \else
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{0pt}}
- \pgfutil@tempdima=\pgf@circ@res@up
- \advance\pgfutil@tempdima by -\pgf@circ@res@right
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
- \pgfpatharc{180}{0}{\pgf@circ@res@right}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgfutil@tempdima}}
- \pgfpatharc{180}{0}{-\pgf@circ@res@right}
- \fi
- \pgfpathclose
-}
-
-%% The diode (tube), triode, tetrode and pentode only differ in the
-%% number of grids. So we construct a generic declare function in
-%% which we can put code for the grid anchors and grid drawing code
-%% \pgfcircdeclaretube{tube name}{grid anchors}{grid drawing code}
-\long\def\pgfcircdeclaretube#1#2#3{%
- \pgfdeclareshape{#1}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{tubes}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{
- \pgfpointorigin
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
- % x and y should be half the Rlen
- \pgf@y=\pgf@circ@res@up
- \pgf@y=.5\pgf@y
- \pgf@x=-\pgf@circ@res@right
- \pgf@x=.5\pgf@x
- }
- \anchor{north} {%
- \northwest
- \pgf@x=0pt
- }
- \anchor{east}{%
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0pt
- }
- \anchor{south}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{west}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{north west}{%
- \northwest
- }
- \anchor{north east}{%
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{anode} {%
- \northwest
- \pgf@x=0pt
- }
- \anchor{cathode}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
- }
- \anchor{cathode 1}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=\ctikzvalof{tubes/cathode width}\pgf@x
- }
- \anchor{cathode 2}{%
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=-\ctikzvalof{tubes/cathode width}\pgf@x
- }
- \anchor{filament 1}{%
- \northwest
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
- \pgf@x=\pgfmathresult\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{filament 2}{%
- \northwest
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
- \pgf@x=-\pgfmathresult\pgf@x
- \pgf@y=-\pgf@y
- }
-
- % Extra anchors
- #2
-
- \backgroundpath{
- \pgfscope
- % Line width for tripoles
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- % Setup to draw tube
- \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up=\ctikzvalof{tubes/tube radius}\pgf@circ@res@up
- \pgf@circ@res@right=\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
-
- % Tube outline
- \pgf@circ@tubes@drawtube
-
- % Setup to draw grid, filament, anode and cathode
- \pgf@circ@res@up=\ctikzvalof{tubes/height}\pgf@circ@scaled@Rlen
- \pgf@circ@res@right=\ctikzvalof{tubes/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@up=0.5\pgf@circ@res@up
- \pgf@circ@res@right=0.5\pgf@circ@res@right
-
- % Tube fill color (if any)
- \pgf@circ@draworfill
-
- % Grid drawing
- #3
-
- % Filament (is not drawn by default)
- \ifpgf@circuit@tubes@filament
- \pgf@circ@res@temp=-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up
- \advance\pgf@circ@res@temp by -\ctikzvalof{tubes/filament distance}\pgf@circ@res@up
- \pgfmathparse{(\ctikzvalof{tubes/tube radius}*sin(\ctikzvalof{tubes/filament angle})}
- \pgf@xa=\pgfmathresult\pgf@circ@res@right
- \pgfmathparse{\ctikzvalof{tubes/tube radius}+\ctikzvalof{tubes/tube radius}*cos(\ctikzvalof{tubes/filament angle}}
- \pgf@ya=\pgfmathresult\pgf@circ@res@up
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@ya}}
- \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@ya}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@circ@res@up}}
- \pgf@circuit@tubes@filamentfalse
- \fi
-
- % Anode (or plate)
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}} % north
- \pgfpathlineto{\pgfpoint{0pt}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/anode width}\pgf@circ@res@right}{\ctikzvalof{tubes/anode distance}\pgf@circ@res@up}}
-
- % Cathode
- \ifpgf@circuit@tubes@nocathode
- \pgf@circuit@tubes@nocathodefalse
- \else
- \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up}}
- \ifpgf@circuit@tubes@fullcathode
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\pgf@circ@res@up}}
- \pgf@circuit@tubes@fullcathodefalse
- \else
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-\ctikzvalof{tubes/cathode right extend}\pgf@circ@res@up}}
- \fi
- \fi
-
- % Draw the background
- \pgfusepath{draw}
- \endpgfscope
- }
- }
-}
-
-\pgfcircdeclaretube{diodetube}{}{} % shape diode already exists
-
-\pgfcircdeclaretube{triode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
- \anchor{control} {%
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
-}
-{
- % Grid protrusion
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\ctikzvalof{tubes/grid shift}\pgf@circ@res@up}}
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
-}
-
-\pgfcircdeclaretube{tetrode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \pgf@y=0.5\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{control} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \pgf@y=0.5\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{screen} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
- \pgf@y=0.5\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
-}
-{
- % Grid x/y points
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
- \pgfutil@tempdimb=-\pgfutil@tempdima
- \pgfutil@tempdima=0.5\pgfutil@tempdima
- \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \pgfutil@tempdimb=0.5\pgfutil@tempdimb
- \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- % Grid protrusion
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
-}
-
-\pgfcircdeclaretube{pentode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{control} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{screen} {%
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
- \anchor{suppressor} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
-}
-{
- % Grid x/y points
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
- \pgfutil@tempdimb=-\pgfutil@tempdima
- \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- % Grid protrusion
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdima}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
-}
-
-\pgfcircdeclaretube{pentode suppressor to cathode}
-{
- \anchor{grid} {% should not be used
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{control} {%
- \northwest
- \pgfutil@tempdima=\pgf@y
- \pgf@y=-\ctikzvalof{tubes/grid separation}\pgf@y
- \advance\pgf@y by \ctikzvalof{tubes/grid shift}\pgfutil@tempdima
- }
- \anchor{screen} {%
- \northwest
- \pgf@y=\ctikzvalof{tubes/grid shift}\pgf@y
- }
-}
-{
- % Grid x/y points
- \pgf@xa=-\ctikzvalof{tubes/tube radius}\pgf@circ@res@right
- \advance\pgf@xa by -\ctikzvalof{tubes/grid protrusion}\pgf@circ@res@right
- \pgfutil@tempdima=\ctikzvalof{tubes/grid separation}\pgf@circ@res@up
- \pgfutil@tempdimb=-\pgfutil@tempdima
- \advance\pgfutil@tempdima by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \advance\pgfutil@tempdimb by \ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- \pgf@circ@res@other=\ctikzvalof{tubes/grid shift}\pgf@circ@res@up
- % Grid protrusion
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@circ@res@other}}
- % Grid dashes: calculations
- \pgf@xb=2\pgf@circ@res@right
- \pgf@circ@res@step=\ctikzvalof{tubes/tube radius}\pgf@xb
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes} % dashes*2+1
- \multiply\pgf@circ@count@a by 2\relax
- \advance\pgf@circ@count@a by 1\relax
- \advance\pgf@circ@res@step by -\pgf@xa
- \divide\pgf@circ@res@step by \pgf@circ@count@a
- % Grid dashes: draw
- \pgf@circ@res@temp=\pgf@xa
- \pgf@circ@count@a=\ctikzvalof{tubes/grid dashes}
- \loop
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \ifnum\pgf@circ@count@a>1\relax
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdimb}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdimb}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgf@circ@res@other}}
- \fi
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@step}{\pgfutil@tempdima}}
- \advance\pgf@circ@res@temp by\pgf@circ@res@step
- \advance\pgf@circ@count@a by-1
- \ifnum\pgf@circ@count@a>0\relax
- \repeat
- % Grid: connection from suppressor to cathode
- \pgfsetcornersarced{\pgfpoint{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}{\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp}{\pgfutil@tempdima-2*\ctikzvalof{tubes/grid separation}\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\ctikzvalof{tubes/cathode width}\pgf@circ@res@right-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@right}{-\ctikzvalof{tubes/cathode distance}\pgf@circ@res@up-0.4142136*\ctikzvalof{tubes/cathode corners}\pgf@circ@res@up}}
-
-}
-
-%%%---------- close: tex/pgfcirctripoles
-%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
-%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Quadripoles
-
-\long\def\pgfcircdeclarequadpole#1#2#3{
- \pgfdeclareshape{#1}
- {
- \savedmacro{\ctikzclass}{\edef\ctikzclass{inductors}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedmacro{\stretto}{\def\stretto{\ctikzvalof{quadpoles/#1/inner}}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{quadpoles/#1/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=.5\pgf@circ@scaled@Rlen
- \pgf@x=-\ctikzvalof{quadpoles/#1/width}\pgf@x
- }
- %% we define the upper right (positive coord) dot (which is B1)
- \savedanchor{\innerdot}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@xa=.5\pgf@circ@scaled@Rlen
- \pgf@xa=-\ctikzvalof{quadpoles/#1/width}\pgf@xa
- % by default use the cute inductor size
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@scaled@Rlen/2}
- % check if it's american
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}
- \edef\pgf@temp{american}
- \ifx\pgf@circ@temp\pgf@temp
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/americaninductor/height}*\pgf@circ@scaled@Rlen/2}
- \fi
- % check if it's european
- \edef\pgf@temp{european}
- \ifx\pgf@circ@temp\pgf@temp
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa-\ctikzvalof{bipoles/fullgeneric/height}*\pgf@circ@scaled@Rlen/2}
- \fi
- \pgfmathsetlength\pgf@y{0.5*\pgf@circ@scaled@Rlen}
- }
- \savedanchor{\outerdot}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@xa=.5\pgf@circ@scaled@Rlen
- \pgf@xa=-\ctikzvalof{quadpoles/#1/width}\pgf@xa
- % by default use the cute inductor size
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/cuteinductor/height}*\pgf@circ@scaled@Rlen/2}
- % check if it's american
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}
- \edef\pgf@temp{american}
- \ifx\pgf@circ@temp\pgf@temp
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/americaninductor/height}*\pgf@circ@scaled@Rlen/2}
- \fi
- % check if it's european
- \edef\pgf@temp{european}
- \ifx\pgf@circ@temp\pgf@temp
- \pgfmathsetlength\pgf@x{-\stretto*\pgf@xa+\ctikzvalof{bipoles/fullgeneric/height}*\pgf@circ@scaled@Rlen/2}
- \fi
- \pgfmathsetlength\pgf@y{0.5*\pgf@circ@scaled@Rlen}
- }
- \anchor{A2}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{B1}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{A1}{
- \northwest
- }
- \anchor{B2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- %% dot's anchors
- \anchor{inner dot A1}{\innerdot\pgf@x=-\pgf@x}
- \anchor{outer dot A1}{\outerdot\pgf@x=-\pgf@x}
- \anchor{inner dot A2}{\innerdot\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{outer dot A2}{\outerdot\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{inner dot B1}{\innerdot}
- \anchor{outer dot B1}{\outerdot}
- \anchor{inner dot B2}{\innerdot\pgf@y=-\pgf@y}
- \anchor{outer dot B2}{\outerdot\pgf@y=-\pgf@y}
- % geographical
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{base}{
- \northwest
- \pgf@x=0pt
- }
- #3
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- #2
- }
- }
-}
-
-
-\def\pgf@circ@drawtransformerbasicanchor{
- \ctikzvalof{quadpoles/trans/height}
- \anchor{AA2}{
- \northwest
- \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
- }
- \anchor{AA1}{
- \northwest
- \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
- }
- \anchor{BB2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@x=\ctikzvalof{quadpoles/transformer/width1}\pgf@x
- \pgf@x=.7\pgf@x
- \pgf@y=-\pgf@y
- \pgf@y=\ctikzvalof{quadpoles/transformer/height1}\pgf@y
- }
-}
-
-%% Null styles that can be used to change individually the L1 and L2
-%% inductors of the transformer.
-
-\ctikzset{transformer L1/.style={}}
-\ctikzset{transformer L2/.style={}}
-
-\def\pgf@circ@drawtransformerbasicbody{
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@up}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@left}%
- {\pgf@circ@res@down}%
- }
-
- \pgfkeys{\circuitikzbasekey/.cd, transformer L1}
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{\thisshape-L1}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
-
- \endpgfscope
- \pgfscope
- \pgfslopedattimetrue
- \pgfallowupsidedownattimetrue
- \pgftransformlineattime{.5}{%
- \pgfpoint%
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@down}%
- }{%
- \pgfpoint
- {\stretto\pgf@circ@res@right}%
- {\pgf@circ@res@up}%
- }
-
- \pgfkeys{\circuitikzbasekey/.cd, transformer L2}
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{fullgenericshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
- \else%
- \def\pgf@temp{cute}
- \ifx\pgf@temp\pgf@circ@temp%
- \pgfnode{cuteinductorshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
- \else%
- \pgfnode{americaninductorshape}{center}{}{\thisshape-L2}{\pgfusepath{stroke}}
- \fi%
- \fi%
-
- \endpgfscope
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{\thisshape-L1}{b}}
-
- \pgfpathmoveto{\pgfpointanchor{\thisshape-L1}{a}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{\thisshape-L2}{a}}
-
- \pgfpathmoveto{\pgfpointanchor{\thisshape-L2}{b}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
-}
-
-
-\pgfcircdeclarequadpole{transformer}{
- \pgf@circ@drawtransformerbasicbody
-}{\pgf@circ@drawtransformerbasicanchor}
-
-\pgfcircdeclarequadpole{transformer core}{
-
- \pgf@circ@drawtransformerbasicbody
-
- % use the chocke line thickness
- \pgfsetlinewidth{\ctikzvalof{bipoles/cutechoke/cthick}\pgflinewidth}
-
- % Find the distance from center for the lines representing the core
- % the 2.5 is for backward compatibility --- the distance was calculated as a fraction
- % of the whole component, now as a fraction of the distance between coils, to be
- % compatible with the quadpoles "inner" style.
- \pgfmathsetlength{\pgf@circ@res@other}{2.5*\stretto*\ctikzvalof{quadpoles/transformer core/core width}*\pgf@circ@res@right}
-
- \pgfmoveto{\pgfpoint%
- {\pgf@circ@res@other}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint%
- {\pgf@circ@res@other}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- %% this should be just -\pgf@circ@res@other, but in case someone define an asymmetric trafo someday...
- \pgfmathsetlength{\pgf@circ@res@other}{2.5*\stretto*\ctikzvalof{quadpoles/transformer core/core width}*\pgf@circ@res@left}
- \pgfmoveto{\pgfpoint%
- {\pgf@circ@res@other}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@down}%
- }
- \pgflineto{
- \pgfpoint%
- {\pgf@circ@res@other}%
- {\ctikzvalof{quadpoles/transformer core/core height}\pgf@circ@res@up}%
- }
-
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgfusepath{draw}
-}{\pgf@circ@drawtransformerbasicanchor}
-
-
-\pgfcircdeclarequadpole{gyrator}{
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgf@circ@setlinewidth{quadpoles}{\pgflinewidth}
- \pgfmathsetlength{\pgf@circ@res@other}{min(.7*\stretto*\pgf@circ@res@up, .8*\pgf@circ@res@right)} % radius
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@left}{-\pgf@circ@res@other}}
- \pgfpatharc{-90}{90}{\pgf@circ@res@other}
- \pgfpathclose
- \pgf@circ@draworfill
-
- \pgfpathmoveto{\pgfpoint{\stretto\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpatharc{90}{270}{\pgf@circ@res@other}
- \pgfpathclose
- \pgf@circ@draworfill
-}{}
-
-%%%%%%%%%%%%%%%%%%%%
-%% Block elements
-%%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{mixer}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@boxed
- \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{e}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{w}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{s}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{n}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{down}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{up}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{\ctikzvalof{tripoles/mixer/width}*\scaledRlen/2}{\ctikzvalof{tripoles/mixer/width}*\scaledRlen/2}}
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/mixer/width}\pgf@circ@scaled@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{135}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-45}{0.5\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{45}{0.5\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{-135}{0.5\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{adder}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@boxed
- \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{3}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{4}{
- \northwest
- \pgf@y=\pgf@y
- \pgf@x=0pt
- }
- \anchor{in 1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{in 2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{in2}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{center}{
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{e}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{w}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{s}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{n}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{down}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{up}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{\ctikzvalof{tripoles/adder/width}*\scaledRlen/2}{\ctikzvalof{tripoles/adder/width}*\scaledRlen/2}}
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/adder/width}\pgf@circ@scaled@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{0}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{180}{0.3\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathmoveto{\pgfpointpolar{90}{0.3\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpointpolar{270}{0.3\pgf@circ@res@step}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{oscillator}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@boxed
- \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \else
- \pgf@y=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{north}{
- \northwest
- \pgf@x=.5\pgf@x
- }
- \anchor{south}{
- \northwest
- \pgf@x=.5\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{up}{
- \northwest
- \pgf@x=.5\pgf@x
- }
- \anchor{down}{
- \northwest
- \pgf@x=.5\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{n}{
- \northwest
- \pgf@x=.5\pgf@x
- }
- \anchor{s}{
- \northwest
- \pgf@x=.5\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{e}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{w}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{up}{
- \northwest
- \pgf@x=.5\pgf@x
- }
- \anchor{down}{
- \northwest
- \pgf@x=.5\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{right}{
- \northwest
- \pgf@y=0pt
- \pgf@x=0pt
- }
- \anchor{left}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y}
- \anchor{north east}{ \northwest \pgf@x=0pt\relax}
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
- \anchor{text}{
- \pgf@x=-2\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{\ctikzvalof{tripoles/oscillator/width}*\scaledRlen/2}{\ctikzvalof{tripoles/oscillator/width}*\scaledRlen/2}}
- \pgfmathsetlength{\pgf@x}{\pgf@x-\ctikzvalof{tripoles/oscillator/width}*\scaledRlen/2}
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/oscillator/width}\pgf@circ@scaled@Rlen{}
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- \pgftransformxshift{-0.5\pgf@circ@res@step} % The oscillator is shifted to the left, so a connection comes out of the anchor "east"
-
- % draw outer box
- \ifpgf@circuit@boxed{}
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % draw inner sine waves
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathsine{\pgfpoint{.15\pgf@circ@res@step}{-.15\pgf@circ@res@step}}
- \pgfpathcosine{\pgfpoint{.15\pgf@circ@res@step}{.15\pgf@circ@res@step}}
-
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{circulator}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circuit@boxed
- \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \else
- \pgf@y=\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \fi
- }
- \anchor{center}{
- \pgfpointorigin
- }
- \anchor{left}{%
- \northwest
- \pgf@y=0pt
- }
- \anchor{right}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{1}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{2}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{3}{
- \northwest
- \pgf@y=-\pgf@y
- \pgf@x=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{e}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{w}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{s}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{n}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{down}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{up}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
- }{\pgfpoint{\ctikzvalof{tripoles/circulator/width}*\scaledRlen/2}{\ctikzvalof{tripoles/circulator/width}*\scaledRlen/2}}
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{tripoles/circulator/width}\pgf@circ@scaled@Rlen
-
- \pgfscope
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \ifpgf@circuit@boxed
- \pgfnode{blockbox}{center}{}{pgf@box}{\pgfusepath{draw}}
- \fi
-
- % draw outer circle
- \ifpgf@circuit@boxed{}
- \pgf@circ@res@step=.7\pgf@circ@res@step{}
- \pgfsetdash{}{0pt} % draw solid circle if boxed
- \else
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \fi
- \pgfpathcircle{\pgfpoint{0}{0}} {0.5\pgf@circ@res@step}
- \pgf@circ@draworfill
-
- % inner arrow
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetlinewidth{\pgfstartlinewidth}
-
- \pgfsetarrowsend{latex}
- \pgfpathmoveto{\pgfpoint{-0.25\pgf@circ@res@step}{0}}
- \pgfpatharc{180}{-90} {0.25\pgf@circ@res@step}
- \pgfpathlineto{\pgfpoint{-5pt}{-0.2\pgf@circ@res@step}}
- \pgfusepath{draw}
-
- \endpgfscope
- }
-}
-
-%% gridnode
-\pgfdeclareshape{gridnode}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=-\ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- }
- \anchor{center}{
- \pgfpointorigin
- }
-
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{up}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{down}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{right}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{left}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- \relax
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{text}{
- \pgf@x=-2\pgf@x
- \advance \pgf@x by -.5\wd\pgfnodeparttextbox
- \advance \pgf@y by -1.5\ht\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgf@circ@res@step=\ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgf@circ@res@step = \ctikzvalof{quadpoles/gridnode/width}\pgf@circ@scaled@Rlen
- \divide \pgf@circ@res@step by 2
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgf@circ@res@other = \pgf@circ@res@left
- \advance\pgf@circ@res@other by \pgf@circ@res@step
-
- \ifpgf@circuit@dashed
- \pgfsetdash{{0.1cm}{0.1cm}}{0cm}
- \fi
-
- % draw outer box
- \pgf@circ@twoportbox
-
-
- \ifpgf@circuit@inputarrow
- {
- \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}}
- }
- \fi
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{0.05mm}
-
- % draw grid
- \foreach \line in {-1,-.5,...,1}
- {
- \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\line\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\line\pgf@circ@res@down}}
- }
-
- %prevent from draw the inner cross twice
- \foreach \line in {-.5,0,...,.5}
- {
- \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\line\pgf@circ@res@up}}
-
- \pgfpathmoveto{\pgfpoint{\line\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\line\pgf@circ@res@down}}
- }
- \pgfusepath{draw}
- }
-}
-
-
-% Wilkinson divider
-\pgfdeclareshape{wilkinson}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/wilkinson/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x= \pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=-\ctikzvalof{tripoles/wilkinson/width}\pgf@x
- }
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{out2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgf@circ@twoportbox
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- % draw inner resisitor - european or american style is recognised
- {
- \pgftransformshift{\pgfpoint{0.5\pgf@circ@res@right}{0pt}}
- \pgftransformrotate{90}
-
- % calculate size of resistor
- \ifpgf@circuit@europeanresistor
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{genericshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
- \else
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{resistorshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
- \fi
- }
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpointanchor{wilk@int@R}{right}}
-
- \pgfpathmoveto{\pgfpointanchor{wilk@int@R}{left}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- }
-}
-
-%% resistive splitter
-\pgfdeclareshape{splitter}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/wilkinson/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x= \pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=-\ctikzvalof{tripoles/wilkinson/width}\pgf@x
- }
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{out1}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{out2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgf@circ@twoportbox
-
- % draw inner stuff
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{0pt}}
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
-
- \pgfusepath{draw}
-
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- % draw inner resisitors - european or american style is recognised
- \foreach \respt/\resang/\linepta/\lineptb in %
- { \pgfpoint{0.5\pgf@circ@res@right}{0pt}/90/%
- \pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}/\pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down},%
- \pgfpoint{0}{0.25\pgf@circ@res@up}/25/%
- \pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@up}/\pgfpoint{0.5\pgf@circ@res@left}{0},%
- \pgfpoint{0}{0.25\pgf@circ@res@down}/-25/%
- \pgfpoint{0.5\pgf@circ@res@right}{0.5\pgf@circ@res@down}/\pgfpoint{0.5\pgf@circ@res@left}{0}}
- {
- {
- \pgftransformshift{\respt}
- \pgftransformrotate{\resang}
-
- % calculate size of resistor
- \ifpgf@circuit@europeanresistor
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/generic/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{genericshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
- \else
- \pgfmathparse{\pgf@circ@res@up / \pgf@circ@scaled@Rlen / \ctikzvalof{bipoles/resistor/width} / 2}
- \pgftransformscale{\pgfmathresult}
- \pgfnode{resistorshape}{center}{}{wilk@int@R}{\pgfusepath{fill}}
- \fi
- }
-
- \pgfpathmoveto{\linepta}
- \pgfpathlineto{\pgfpointanchor{wilk@int@R}{right}}
-
- \pgfpathmoveto{\pgfpointanchor{wilk@int@R}{left}}
- \pgfpathlineto{\lineptb}
- \pgfusepath{draw}
- }
- }
-}
-
-%% couplers generics
-\long\def\pgfcircdeclarefourport#1#2{
-
- \pgfdeclareshape{#1}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{quadpoles/#1/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x=.5\pgf@circ@scaled@Rlen
- \pgf@x=-\ctikzvalof{quadpoles/#1/width}\pgf@x
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{port1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{port3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{port4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
- \anchor{left down}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{right down}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{right up}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{left up}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
- \anchor{1}{
- \northwest
- \pgf@y=-0.5\pgf@y
- }
- \anchor{2}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-0.5\pgf@y
- }
- \anchor{3}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0.5\pgf@y
- }
- \anchor{4}{
- \northwest
- \pgf@y=0.5\pgf@y
- }
-
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
- \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- \pgf@circ@draworfill
-
- % draw inner stuff
- #2
-
- % draw inner text
- \pgftext[center,x=-0.15\pgf@circ@res@step,y=0]{\ctikzvalof{bipoles/twoport/text}}
- }
- }
-}
-
-% four-port
-\pgfcircdeclarefourport{fourport}{}
-
-% straight coupler
-\pgfcircdeclarefourport{coupler}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@up}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.4\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.4\pgf@circ@res@down}}
- \pgfsetarrows{latex-latex}
- \pgfusepath{draw}
-}
-
-% "bended" coupler
-\pgfcircdeclarefourport{coupler2}{
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0.5\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@left}{0pt}}
- \pgfpatharc{0}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{180}{90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
- \pgfscope
- \pgfpathmoveto{\pgfpoint{0.1\pgf@circ@res@right}{0pt}}
- \pgfpatharc{-180}{-90} {0.4\pgf@circ@res@up}
- \pgfsetarrowsend{latex}
- \pgfusepath{draw}
- \endpgfscope
-}
-
-% mach zehnder modulator
-\pgfdeclareshape{mzm}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{blocks}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@y=\ctikzvalof{tripoles/mzm/height}\pgf@circ@scaled@Rlen
- \pgf@y=.5\pgf@y
- \pgf@x= \pgf@circ@scaled@Rlen
- \pgf@x=.5\pgf@x
- \pgf@x=-\ctikzvalof{tripoles/mzm/width}\pgf@x
- }
- \anchor{center}{
- \northwest
- \pgf@x=0pt
- \pgf@y=0pt
- }
- \anchor{north}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{south}{
- \northwest
- \pgf@x=0pt
- \pgf@y=-\pgf@y
- }
- \anchor{west}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{east}{
- \northwest
- \pgf@y=0pt
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \northwest
- \pgf@y=-\pgf@y
- }
- \anchor{north east}{
- \northwest
- \pgf@x=-\pgf@x
- }
- \anchor{north west}{
- \northwest
- }
- \anchor{south east}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=-\pgf@y
- }
- \anchor{in}{
- \northwest
- \pgf@y=0pt
- }
- \anchor{mod}{
- \northwest
- \pgf@x=0pt
- }
- \anchor{out}{
- \northwest
- \pgf@x=-\pgf@x
- \pgf@y=0pt
- }
- \anchor{text}{
- \northwest
- \advance \pgf@y by 0.5\ht\pgfnodeparttextbox
- \pgf@x=-.5\wd\pgfnodeparttextbox
- }
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@scaled@Rlen=\scaledRlen
-
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
-
- \pgfstartlinewidth=\pgflinewidth
-
- % draw outer box
- \pgf@circ@twoportbox
-
- % draw inner stuff
- % rotate inner symbol
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135
- \pgftransformrotate{270}
- \fi\fi
- \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible
- \pgftransformrotate{180}
- \fi\fi
- \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315
- \pgftransformrotate{90}
- \fi\fi
-
- % draw inner symbol
- \pgfsetdash{}{0pt} % always draw solid line for inner symbol
- \pgfsetarrows{-} %never draw arrows
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0.25\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@left}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.75\pgf@circ@res@right}{\pgf@circ@res@zero}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0.25\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@right}{0.25\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@left}{0.25\pgf@circ@res@down}}
- \pgfusepath{draw}
-
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@zero}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@zero}{0.35\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.25\pgf@circ@res@right}{0.1\pgf@circ@res@up}}
- \pgfusepath{draw}
-
- }
-}
-%%%---------- close: tex/pgfcircquadpoles
-%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
-%%%---------- open: tex/pgfcircmultipoles.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Multipoles by Romano Giannetti
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%
-%% Chips
-%%%%%%%%%
-
-% let's use the same shifts everywhere, no magic numbers
-\def\pgf@circ@dip@pin@shift{0.5}
-\def\pgf@circ@qfp@pin@shift{0.25}
-
-% derived from https://tex.stackexchange.com/a/146753/38080
-% original author Mark Wibrow
-% Thanks also to John Kormylo https://tex.stackexchange.com/a/372996/38080
-% a lot of thanks to @marmot for the un-rotation hint
-% https://tex.stackexchange.com/a/473571/38080
-
-% DIP (dual in line package) chips
-
-\pgfdeclareshape{dipchip}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{chips}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro\numpins{%
- \pgf@circ@count@a=\ctikzvalof{multipoles/dipchip/num pins}%
- \def\numpins{\the\pgf@circ@count@a}
- }
- \savedanchor\centerpoint{%
- \pgf@x=-.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \savedanchor\origin{\pgfpoint{0pt}{0pt}}
- \anchor{center}{\origin}
- \anchor{text}{\centerpoint}% to adjust text
- \saveddimen\height{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{((\numpins)
- *\ctikzvalof{multipoles/dipchip/pin spacing})*\pgf@circ@scaled@Rlen/2}%
- }%
- \saveddimen{\chipspacing}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/pin spacing}}}
- \saveddimen{\width}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/width}}}
- \saveddimen{\extshift}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
- % standard anchors
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{0.5*((\numpins)
- *\ctikzvalof{multipoles/dipchip/pin spacing})*\pgf@circ@scaled@Rlen/2}%
- \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/dipchip/width}}
- }
- \anchor{dot}{\northwest
- \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
- \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- % start drawing
- \backgroundpath{%
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step = \ctikzvalof{multipoles/dipchip/pin spacing}\pgf@circ@scaled@Rlen
- \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
- \pgfscope% (for the line width)
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
- \pgf@circ@draworfill
- %% upside mark
- \ifpgf@circuit@chip@topmark
- \pgfpathmoveto{\pgfpoint{0.2*\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpatharc{0}{180}{0.2*\pgf@circ@res@left}
- \fi
- \pgfusepath{stroke}%
- \pgfsetcolor{\ctikzvalof{color}}
- % Adding the pin number
- \ifpgf@circuit@chip@shownumbers
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
- \ifpgf@circuit@chip@straightnumbers
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
- \else
- \pgfmathsetmacro{\rot}{0}
- \pgfmathsetmacro{\quadrant}{0}
- \fi
- \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
- \def\mytext{\ctikzvalof{multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \ifcase\quadrant % rotation 0
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation -90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or %rotation 180
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation +90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \fi
- \endpgfscope
- \ifdim\pgf@circ@res@other>0pt
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \edef\padfrac{\ctikzvalof{multipoles/external pad fraction}}
- \ifnum\padfrac>0
- \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
- % left side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % right side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \else
- % left side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % right side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
- \pgfusepath{stroke}
- \endpgfscope
- \fi
- }%
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@dipchip{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\numpins\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@dipchip@pin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@dipchip@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
- }
-
-% QFP (quad flat package) chips
-
-\pgfdeclareshape{qfpchip}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{chips}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro\numpins{%
- \pgf@circ@count@a=\ctikzvalof{multipoles/qfpchip/num pins}%
- \def\numpins{\the\pgf@circ@count@a}
- }
- \savedanchor\centerpoint{%
- \pgf@x=-.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \savedanchor\origin{\pgfpoint{0pt}{0pt}}
- \anchor{center}{\origin}
- \anchor{text}{\centerpoint}% to adjust text
- \saveddimen\height{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{((\numpins+2)
- *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
- }%
- \saveddimen\width{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{((\numpins+2)
- *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
- }%
- \saveddimen{\chipspacing}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/qfpchip/pin spacing}}}
- \saveddimen{\extshift}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
- % standard anchors
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{0.5*((\numpins+2)
- *\ctikzvalof{multipoles/qfpchip/pin spacing})*\pgf@circ@scaled@Rlen/4}%
- \pgf@x=-\pgf@y
- }
- \anchor{dot}{\northwest
- \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
- \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- % start drawing
- \backgroundpath{%
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step = \ctikzvalof{multipoles/qfpchip/pin spacing}\pgf@circ@scaled@Rlen
- \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
- \pgfscope% (for the line width)
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- %% upside mark
- \ifpgf@circuit@chip@topmark
- \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2-\pgf@circ@res@step/2}}
- \pgfpathlineto{\pgfpoint{-\width/2+\pgf@circ@res@step/2}{\height/2}}
- \else
- \pgfpathmoveto{\pgfpoint{-\width/2}{\height/2}}
- \fi
- %% rest of the shape
- \pgfpathlineto{\pgfpoint{\width/2}{\height/2}}
- \pgfpathlineto{\pgfpoint{\width/2}{-\height/2}}
- \pgfpathlineto{\pgfpoint{-\width/2}{-\height/2}}
- \pgfpathclose
- \pgf@circ@draworfill
- % Adding the pin number
- \pgfsetcolor{\ctikzvalof{color}}
- \ifpgf@circuit@chip@shownumbers
- \pgf@circ@count@a=\numpins%
- \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
- % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
- \ifpgf@circuit@chip@straightnumbers
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
- \else
- \pgfmathsetmacro{\rot}{0}
- \pgfmathsetmacro{\quadrant}{0}
- \fi
- \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
- \def\mytext{\ctikzvalof{multipoles/font}\space\pgf@circ@strut\the\pgf@circ@count@c\space}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \ifcase\quadrant % rotation 0
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \or % rotation -90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \or %rotation 180
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \or % rotation +90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % bottom
- \pgf@circ@count@c=\numexpr\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % top
- \pgf@circ@count@c=\numexpr3*\pgf@circ@count@b+\pgf@circ@count@a\relax
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up},
- rotate=\rot]{\mytext}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \fi
- \endpgfscope
- \ifdim\pgf@circ@res@other>0pt
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins%
- \divide\pgf@circ@count@a by 4 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \edef\padfrac{\ctikzvalof{multipoles/external pad fraction}}
- \ifnum\padfrac>0
- \pgf@circ@res@temp=\pgf@circ@res@step\divide\pgf@circ@res@temp by \padfrac
- % left side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % bottom side pads
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
- % right side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@temp+\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % top side pads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@temp+\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
- \else
- % left side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % bottom side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@down-\pgf@circ@res@other}}
- % right side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- % top side pins
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+(\pgf@circ@qfp@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- \pgfusepath{stroke}
- \endpgfscope
- \fi
- }%
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@qfpchip{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\numpins%
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- \expandafter\xdef\csname pgf@anchor@qfpchip@pin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@qfpchip@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@qfppinanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop%
- }%
- }
-
-%% anchors for DIP
-\def\pgf@circ@dippinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \c@pgf@countc=\numpins\relax
- \divide\c@pgf@countc by 2
- \ifnum #1 > \the\c@pgf@countc
- % right side
- \pgfpoint{\width/2+#2*\extshift}{-\height/2+(\pgf@circ@dip@pin@shift-\c@pgf@countc+#1-1)*\chipspacing}
- \else
- \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@dip@pin@shift-#1)*\chipspacing}
-\fi
-}
-
-%% anchors for QFP
-\def\pgf@circ@qfppinanchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \c@pgf@countc=\numpins\relax
- \divide\c@pgf@countc by 4
- \ifnum #1 > \the\c@pgf@countc
- \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 2
- \ifnum #1 > \the\c@pgf@countb
- \c@pgf@countb=\c@pgf@countc \multiply \c@pgf@countb by 3
- \ifnum #1 > \the\c@pgf@countb
- % 3*npins/4 < pin, top side
- \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift+\c@pgf@countb-#1)*\chipspacing}{\height/2+#2*\extshift}%
- \else
- % 2*npins/4 < pin <= 3*npins/4, right side
- \pgfpoint{\width/2+#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}%
- \fi
- \else
- % npins/4 < pin <= 2*npins/4, bottom side
- \pgfpoint{\width/2+(\pgf@circ@qfp@pin@shift-\c@pgf@countb+#1-1)*\chipspacing}{-\height/2-#2*\extshift}%
- \fi
- \else
- % <= npins/4, left side
- \pgfpoint{-\width/2-#2*\extshift}{\height/2+(\pgf@circ@qfp@pin@shift-#1)*\chipspacing}%
- \fi
-}
-
-%%%%%%%%%%%%%%%%%
-%% Rotary Switch
-%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{rotaryswitch}
-{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{switches}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedanchor\northeast{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- % the magic number is 0.25/cos(35)
- % try to recalculate it for the actual switch
- \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=.3052\pgf@circ@res@temp
- \edef\a{\ctikzvalof{multipoles/rotary/angle}}
- \edef\r{\ctikzvalof{nodes width}}
- \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@x}{\r*\pgf@circ@scaled@Rlen + \pgf@circ@res@temp}
- }
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- % the magic number is 0.25/cos(35)
- % try to recalculate it for the actual switch
- \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=.3052\pgf@circ@res@temp
- \edef\a{\ctikzvalof{multipoles/rotary/angle}}
- \edef\r{\ctikzvalof{nodes width}}
- \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@x}{-\r*\pgf@circ@scaled@Rlen - (\a<90 ? 1 : 1-2*cos(\a))*\pgf@circ@res@temp}
- }
- \savedanchor\central{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- % the magic number is 0.25/cos(35)
- % try to recalculate it for the actual switch
- \pgf@circ@res@temp=\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- \pgf@circ@res@temp=.3052\pgf@circ@res@temp
- \edef\a{\ctikzvalof{multipoles/rotary/angle}}
- \edef\r{\ctikzvalof{nodes width}}
- \pgfmathsetlength{\pgf@y}{\r*\pgf@circ@scaled@Rlen +(\a>90 ? 2 : 2*sin(\a))*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@x}{(\a<90 ? 0 : cos(\a))*\pgf@circ@res@temp}
- }
- % external square limits
- \savedanchor\extnorthwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgf@x=-\ctikzvalof{tripoles/spdt/width}\pgf@circ@scaled@Rlen
- % this strange value makes the 2-pole rotary switch equal to the 2 poles cute spdt
- \pgf@x=.3052\pgf@x % the magic number is 0.25/cos(35)
- \pgf@x=2.5\pgf@x % external square size
- \pgf@y=-\pgf@x %square thing when angle=180?
- }
- \saveddimen{\width}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{0.3052*\pgf@circ@scaled@Rlen*\ctikzvalof{tripoles/spdt/width}}}
- % radius of the connector
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \saveddimen{\radius}{\pgfmathsetlength\pgf@x{\pgf@circ@Rlen*\ctikzvalof{nodes width}}}
- % shapename
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % shape type
- \savedmacro{\cshape}{\def\cshape{\ctikzvalof{multipoles/rotary/shape}}}
- \savedmacro{\channels}{\def\channels{\ctikzvalof{multipoles/rotary/channels}}}
- \savedmacro{\angle}{\def\angle{\ctikzvalof{multipoles/rotary/angle}}}
- \savedmacro{\wiper}{\def\wiper{\ctikzvalof{multipoles/rotary/wiper}}}
- \savedmacro{\stepa}{\pgfmathsetmacro{\stepa}{2*\ctikzvalof{multipoles/rotary/angle}/(\ctikzvalof{multipoles/rotary/channels}-1)}}
- % mid of the lever, to stack switches
- %\anchor{mid}{\midlever}
- \anchor{mid}{\northwest
- \pgf@circ@res@temp=-\pgf@x
- \pgfmathsetlength{\pgf@x}{\pgf@circ@res@temp*(-1+cos(\wiper))}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp*sin(\wiper)}
- }
- % center anchors
- \anchor{cin}{ \northwest \pgf@y=0pt\advance\pgf@x by \radius}
- % horizontal angles
- \anchor{in}{ \northwest \pgf@y=0pt}
- \anchor{ain}{ \northwest \pgf@y=0pt}
-
- \anchor{center}{ \central \pgf@y=0pt }
- \anchor{east}{ \northeast \pgf@y=0pt }
- \anchor{west}{ \northwest \pgf@y=0pt }
- \anchor{south}{ \central \pgf@y=-\pgf@y }
- \anchor{north}{ \central }
- \anchor{south west}{ \northwest \pgf@y=-\pgf@y }
- \anchor{north east}{ \northeast }
- \anchor{north west}{ \northwest }
- \anchor{south east}{ \northeast \pgf@y=-\pgf@y }
-
- \anchor{ext center}{ \pgf@y=0pt \pgf@x=0pt \advance\pgf@x by -\width}
- \anchor{ext east}{ \extnorthwest \pgf@y=0pt \pgf@x=-\pgf@x \advance\pgf@x by -\width}
- \anchor{ext west}{ \extnorthwest \pgf@y=0pt \advance\pgf@x by -\width}
- \anchor{ext south}{ \extnorthwest \pgf@x=0pt \pgf@y=-\pgf@y \advance\pgf@x by -\width}
- \anchor{ext north}{ \extnorthwest \pgf@x=0pt \advance\pgf@x by -\width}
- \anchor{ext south west}{ \extnorthwest \pgf@y=-\pgf@y \advance\pgf@x by -\width}
- \anchor{ext north east}{ \extnorthwest \pgf@x=-\pgf@x \advance\pgf@x by -\width}
- \anchor{ext north west}{ \extnorthwest \advance\pgf@x by -\width}
- \anchor{ext south east}{ \extnorthwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y \advance\pgf@x by -\width}
-
- \backgroundpath{
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@res@right = \width
- \pgf@circ@res@left = -\width
-
- \pgfscope %wiper
- % This is the radius of the "ocirc" shape (see pgfcircshapes.tex)
- \pgf@circ@res@temp=\radius\relax
- \pgf@circ@res@temp=\ctikzvalof{multipoles/rotary/thickness}\pgf@circ@res@temp
- \pgfsetlinewidth{2\pgf@circ@res@temp}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\wiper}{2\pgf@circ@res@right}}}
- \pgfsetroundcap\pgfusepath{draw}
- \endpgfscope
-
- \ifpgf@circ@rotaryarrow
- \pgfscope % arrow
- \ifpgf@circ@rotaryarrow@ccw\pgfsetarrowsstart{latexslim}\fi
- \pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} % center of cin node
- \pgftransformrotate{\wiper}
- \pgfpathmoveto{\pgfpointpolar{50}{1.0\pgf@circ@res@right}}
- \pgfpatharc{50}{-50}{1.0\pgf@circ@res@right}
- \ifpgf@circ@rotaryarrow@cw\pgfsetarrowsend{latexslim}\fi
- \pgfusepath{draw}
- \endpgfscope
- \fi
-
- % \typeout{CHANNELS\space\channels\space ANGLE\space\angle STEPA\space\stepa}
- \pgf@circ@count@a=\channels\relax
- \pgfmathsetmacro{\currenta}{-\angle}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % \typeout{LOOPIN\space\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
- \pgfscope
- \pgftransformshift{\pgfpointadd{\pgfpoint{\pgf@circ@res@left}{0pt}}{\pgfpointpolar{\currenta}{2\pgf@circ@res@right}}}
- \pgfnode{\cshape}{center}{}{\thisshape-out \the\pgf@circ@count@a}{\pgfusepath{stroke}}
- \endpgfscope
- \pgfmathsetmacro{\currenta}{\currenta+\stepa}
- % \typeout{LOOPOUT\space\the\pgf@circ@count@a\space CURRENTA\space\currenta\space RIGHT\space\the\pgf@circ@res@right}
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
-
- \pgfscope % input
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfnode{\cshape}{center}{}{\thisshape-in}{\pgfusepath{stroke}}
- \endpgfscope
- }
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@rotaryswitch{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\channels\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@out\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{1}{0}%
- }
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@cout\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{0}%
- }
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@aout\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotaryanchor{\the\pgf@circ@count@a}{0}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@rotaryswitch@sqout\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@rotarysqanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
-}
-
-\def\pgf@circ@rotaryanchor#1#2#3{% #1: numero del pin; #2: 1 - x pos, 0 - center; #3 0: inner, 1 outer
- \pgf@circ@res@temp=\width
- \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
- \pgfmathsetlength{\pgf@x}{2*(\pgf@circ@res@temp+#3*\radius/2)*cos(\myangle))+#2*\radius}
- \pgfmathsetlength{\pgf@y}{2*(\pgf@circ@res@temp+#3*\radius/2)*sin(\myangle)}
- \advance\pgf@x by -\pgf@circ@res@temp
-}
-
-\def\pgf@circ@rotarysqanchor#1{% external square anchors
- \pgf@circ@res@temp=\width
- \pgfmathsetmacro{\myangle}{\angle-(#1-1)*\stepa}
- \pgfpointborderrectangle{\pgfpointpolar{\myangle}{1pt}}{\pgfpoint{2.5\pgf@circ@res@temp}{2.5\pgf@circ@res@temp}}
- \advance\pgf@x by -\pgf@circ@res@temp
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Seven segments displays
-%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\pgfdeclareshape{bare7seg}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{displays}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\dotstatus}{\edef\dotstatus{\pgf@circ@sevenseg@dotstate}}
- \saveddimen{\dotspace}{% the dot is on the right, and occupy the same as the thickness
- \ifpgf@circ@sevenseg@dot
- \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/thickness}}
- \else
- \pgf@x=0pt
- \fi
- }
- % The object extension is more or less (-width/2,-width) to (width/2,width)
- % and adjusted for line thickness (both sides) and eventually the dot
- \saveddimen{\width}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}}
- \saveddimen{\gap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/segment sep}}}
- \saveddimen{\boxgap}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{seven seg/box sep}}}
- \savedanchor{\southwest}{% both negative
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@x}{-0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
- -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
- \pgfmathsetlength{\pgf@y}{-\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
- -0.5*\ctikzvalof{seven seg/thickness}-\ctikzvalof{seven seg/box sep}}
- }
- \savedanchor{\northeast}{% both positive
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \ifpgf@circ@sevenseg@dot
- \pgfmathsetlength{\pgf@circ@res@other}{\ctikzvalof{seven seg/thickness}}
- \else
- \pgf@circ@res@other=0pt
- \fi
- \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
- +0.5*\ctikzvalof{seven seg/thickness}+\pgf@circ@res@other+\ctikzvalof{seven seg/box sep}}
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen
- +0.5*\ctikzvalof{seven seg/thickness}+\ctikzvalof{seven seg/box sep}}
- }
- \savedanchor{\topright}{% anchor without the box sep and the thickness
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@x}{0.5*\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}
- \pgfmathsetlength{\pgf@y}{\ctikzvalof{seven seg/width}*\pgf@circ@scaled@Rlen}
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{north west}{\southwest\pgf@y=-\pgf@y}
- \anchor{north east}{\northeast}
- \anchor{south east}{\northeast\pgf@y=-\pgf@y}
- \anchor{south west}{\southwest}
- \anchor{north}{\northeast\pgf@x=0pt}
- \anchor{east}{\northeast\pgf@y=0pt}
- \anchor{south}{\southwest\pgf@x=0pt}
- \anchor{west}{\southwest\pgf@y=0pt}
- \anchor{a}{\topright\pgf@x=0pt}
- \anchor{b}{\topright\pgf@y=0.5\pgf@y}
- \anchor{c}{\topright\pgf@y=-0.5\pgf@y}
- \anchor{d}{\topright\pgf@y=-\pgf@y\pgf@x=0pt}
- \anchor{e}{\topright\pgf@x=-\pgf@x\pgf@y=-0.5\pgf@y}
- \anchor{f}{\topright\pgf@x=-\pgf@x\pgf@y=0.5\pgf@y}
- \anchor{g}{\pgfpointorigin}
- \anchor{dot}{\topright\pgf@y=-\pgf@y\advance\pgf@x by \dotspace}
- \behindbackgroundpath{%
- \southwest % I do not want the dot here, it will stick out
- \pgf@circ@res@up = -\pgf@y
- \pgf@circ@res@down = \pgf@y
- \pgf@circ@res@right = \pgf@x
- \pgf@circ@res@left = -\pgf@x
- \pgfscope
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfpathrectanglecorners%
- {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
- {\pgfpoint{\pgf@circ@res@left+\dotspace}{\pgf@circ@res@up}}
- \ifpgf@circ@sevenseg@box
- \pgf@circ@draworfill
- \else
- \pgf@circ@maybefill
- \fi
- \endpgfscope
- \edef\bits{\ctikzvalof{seven seg/bits}}
- \pgfscope
- \pfg@circ@sseg@drawbits{\bits}
- \endpgfscope
- \pgfscope
- \ifpgf@circ@sevenseg@dot
- \pgf@circ@sseg@drawdots
- \fi
- \endpgfscope
- }
-}
-
-\def\pgf@circ@sseg@splitbits#1#2#3#4#5#6#7\relax{%split the seven bits
- \edef\@@a{#1}\edef\@@b{#2}\edef\@@c{#3}\edef\@@d{#4}\edef\@@e{#5}\edef\@@f{#6}\edef\@@g{#7}%
-}
-\def\pgf@circ@sseg@drawone#1#2#3#4#5{% #1 on off the x1, y1, x2 , y2
- \ifnum #1 > 0\relax
- \pgfsetcolor{\ctikzvalof{seven seg/color on}}
- \else
- \pgfsetcolor{\ctikzvalof{seven seg/color off}}
- \fi
- \pgfpathmoveto{\pgfpoint{#2}{#3}}
- \pgfpathlineto{\pgfpoint{#4}{#5}}
- \pgfusepath{draw}
-}
-\def\pfg@circ@sseg@drawbits#1{% #1 must be 7 bits
- \expandafter\pgf@circ@sseg@splitbits#1\relax% a bit of magic...
- \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
- \pgfsetlinewidth{\ctikzvalof{seven seg/thickness}}
- % \pgfsetroundcap
- \pgfsetarrowsstart{Triangle Cap[]}
- \pgfsetarrowsend{Triangle Cap[]}
- % segments
- \pgf@circ@sseg@drawone{\@@a}{-\width/2+\gap}{\width}{\width/2-\gap}{\width}
- \pgf@circ@sseg@drawone{\@@b}{\width/2}{\width-\gap}{\width/2}{0pt+\gap}
- \pgf@circ@sseg@drawone{\@@c}{\width/2}{0pt-\gap}{\width/2}{-\width+\gap}
- \pgf@circ@sseg@drawone{\@@d}{\width/2-\gap}{-\width}{-\width/2+\gap}{-\width}
- \pgf@circ@sseg@drawone{\@@e}{-\width/2}{-\width+\gap}{-\width/2}{0pt-\gap}
- \pgf@circ@sseg@drawone{\@@f}{-\width/2}{0pt+\gap}{-\width/2}{\width-\gap}
- \pgf@circ@sseg@drawone{\@@g}{-\width/2+\gap}{0pt}{\width/2-\gap}{0pt}
-}
-\def\pgf@circ@sseg@drawdots{% dots
- \edef\what{empty}
- \ifx\what\pgf@circ@sevenseg@dotstate
- % do nothing
- \else
- \pgfmathsetlength{\pgf@circ@res@other}{0.5*\ctikzvalof{seven seg/thickness}}
- \edef\what{off}
- \ifx\what\pgf@circ@sevenseg@dotstate
- % dot off
- \pgfsetfillcolor{\ctikzvalof{seven seg/color off}}
- \pgfsetcolor{\ctikzvalof{seven seg/color off}}
- \else
- % dot on
- \pgfsetfillcolor{\ctikzvalof{seven seg/color on}}
- \pgfsetcolor{\ctikzvalof{seven seg/color on}}
- \fi
- \pgfpathcircle{\pgfpoint{\width/2+2*\pgf@circ@res@other}{-\width}}{\pgf@circ@res@other}
- \pgfusepath{draw,fill}
- \fi
-}
-
-
-%%%%%%
-%%%%%% Flip-flops
-%%%%%%
-
-% Flip flops are a specialized kind of dipchip.
-% they have a class by themselves
-
-%% flip flop definitions --- by default empty
-%% pin texts
-\ctikzset{multipoles/flipflop/t1/.initial={}}
-\ctikzset{multipoles/flipflop/t2/.initial={}}
-\ctikzset{multipoles/flipflop/t3/.initial={}}
-\ctikzset{multipoles/flipflop/t4/.initial={}}
-\ctikzset{multipoles/flipflop/t5/.initial={}}
-\ctikzset{multipoles/flipflop/t6/.initial={}}
-\ctikzset{multipoles/flipflop/tu/.initial={}}
-\ctikzset{multipoles/flipflop/td/.initial={}}
-% pin clock wedge flags
-\ctikzset{multipoles/flipflop/c1/.initial={0}}
-\ctikzset{multipoles/flipflop/c2/.initial={0}}
-\ctikzset{multipoles/flipflop/c3/.initial={0}}
-\ctikzset{multipoles/flipflop/c4/.initial={0}}
-\ctikzset{multipoles/flipflop/c5/.initial={0}}
-\ctikzset{multipoles/flipflop/c6/.initial={0}}
-\ctikzset{multipoles/flipflop/cu/.initial={0}}
-\ctikzset{multipoles/flipflop/cd/.initial={0}}
-% pin negation circle flags
-\ctikzset{multipoles/flipflop/n1/.initial={0}}
-\ctikzset{multipoles/flipflop/n2/.initial={0}}
-\ctikzset{multipoles/flipflop/n3/.initial={0}}
-\ctikzset{multipoles/flipflop/n4/.initial={0}}
-\ctikzset{multipoles/flipflop/n5/.initial={0}}
-\ctikzset{multipoles/flipflop/n6/.initial={0}}
-\ctikzset{multipoles/flipflop/nu/.initial={0}}
-\ctikzset{multipoles/flipflop/nd/.initial={0}}
-
-
-% Thanks to @marmot
-\tikzset{flipflop def/.code=\pgfqkeys{\circuitikzbasekey/multipoles/flipflop}{#1}}
-
-% default set of flip flops
-\tikzset{
- % async
- latch/.style={flipflop, flipflop def={t1=D, t6=Q, t3=CLK, t4=\ctikztextnot{Q}}},
- flipflop SR/.style={flipflop, flipflop def={t1=S, t3=R, t6=Q, t4=\ctikztextnot{Q}}},
- % sync
- flipflop D/.style={flipflop, flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
- flipflop T/.style={flipflop, flipflop def={t1=T, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
- flipflop JK/.style={flipflop, flipflop def={t1=J, t3=K, c2=1, t6=Q, t4=\ctikztextnot{Q}}},
- % additional features
- add async SR/.style={flipflop def={tu={\ctikztextnot{SET}}, td={\ctikztextnot{RST}}}},
- dot on notQ/.style={flipflop def={t4={Q}, n4=1}},
-}
-
-%
-% commodity macro to draw the clock wedges. They leave the size of the
-% wedge in \pgf@circ@res@temp so that a possible label can be displaced.
-%
-\def\pgf@circ@do@wedge@left{
- \pgf@circ@res@temp=0pt\relax
- \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step+\wedge}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\wedge}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step-\wedge}}
- \pgfusepath{stroke}
- \pgf@circ@res@temp=\wedge
- \fi
-}
-\def\pgf@circ@do@wedge@right{
- \pgf@circ@res@temp=0pt\relax
- \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step+\wedge}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\wedge}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step-\wedge}}
- \pgfusepath{stroke}
- \pgf@circ@res@temp=-\wedge
- \fi
-}
-\def\pgf@circ@do@wedge@up{
- \pgf@circ@res@temp=0pt\relax
- \ifnum\ctikzvalof{multipoles/flipflop/cu}>0
- \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up-\wedge}}
- \pgfpathlineto{\pgfpoint{\wedge}{\pgf@circ@res@up}}
- \pgfusepath{stroke}
- \pgf@circ@res@temp=-\wedge
- \fi
-}
-\def\pgf@circ@do@wedge@down{
- \pgf@circ@res@temp=0pt\relax
- \ifnum\ctikzvalof{multipoles/flipflop/cd}>0
- \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down+\wedge}}
- \pgfpathlineto{\pgfpoint{\wedge}{\pgf@circ@res@down}}
- \pgfusepath{stroke}
- \pgf@circ@res@temp=\wedge
- \fi
-}
-% generic flip-flop shape
-\pgfdeclareshape{flipflop}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{flipflops}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- \savedmacro\numpins{\def\numpins{6}}
- \savedanchor\centerpoint{%
- \pgf@x=-.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \savedanchor\origin{\pgfpoint{0pt}{0pt}}
- \anchor{center}{\origin}
- \anchor{text}{\centerpoint}% to adjust text
- \saveddimen\height{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{((\numpins)
- *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf@circ@scaled@Rlen/2}%
- }%
- \saveddimen{\chipspacing}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/pin spacing}}}
- \saveddimen{\width}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/width}}}
- \saveddimen{\extshift}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
- % standard anchors
- \savedanchor\northwest{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{0.5*((\numpins)
- *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf@circ@scaled@Rlen/2}%
- \pgfmathsetlength\pgf@x{-0.5*\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/flipflop/width}}
- }
- \anchor{dot}{\northwest
- \pgfmathsetlength\pgf@x{\pgf@x + 0.3*\chipspacing}
- \pgfmathsetlength\pgf@y{\pgf@y - 0.3*\chipspacing}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- % upper and lower pin
- \anchor{up}{\northwest\pgf@x=0pt\advance\pgf@y by\extshift }
- \anchor{down}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y\advance\pgf@y by-\extshift}
- \anchor{bup}{\northwest\pgf@x=0pt }
- \anchor{bdown}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- % start drawing
- \backgroundpath{%
- \northwest
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@right = -\pgf@x
- \pgf@circ@res@left = \pgf@x
- \pgf@circ@scaled@Rlen=\scaledRlen
- \pgf@circ@res@step = \ctikzvalof{multipoles/flipflop/pin spacing}\pgf@circ@scaled@Rlen
- \pgf@circ@res@other = \ctikzvalof{multipoles/external pins width}\pgf@circ@scaled@Rlen
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfscope% (for the line width)
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
- \pgf@circ@draworfill
- \pgfusepath{stroke}%
- \endpgfscope
- % Adding the pin number
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
- \ifpgf@circuit@chip@straightnumbers
- \pgfgettransformentries\a\b\temp\temp\temp\temp
- \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
- \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
- \else
- \pgfmathsetmacro{\rot}{0}
- \pgfmathsetmacro{\quadrant}{0}
- \fi
- \def\pgf@circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
- % text
- \def\mytext{\ctikzvalof{multipoles/flipflop/font}\space
- \ctikzvalof{multipoles/flipflop/t\the\pgf@circ@count@c}%
- \pgf@circ@strut\space}
- % \typeout{TEXT\space\mytext}
- \pgfmathloop%
- \def\wedge{\ctikzvalof{multipoles/flipflop/clock wedge size}\pgf@circ@res@step}
- \pgf@circ@res@temp=0pt\relax
- \ifnum\pgf@circ@count@a>0
- \ifcase\quadrant % rotation 0
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgf@circ@do@wedge@left
- % \typeout{TEXT Left Q1\space\mytext}
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgf@circ@do@wedge@right
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation -90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgf@circ@do@wedge@left
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgf@circ@do@wedge@right
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or %rotation 180
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgf@circ@do@wedge@left
- \pgftext[right,
- at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgf@circ@do@wedge@right
- \pgftext[left,
- at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \or % rotation +90
- % left
- \pgf@circ@count@c=\pgf@circ@count@a
- \pgf@circ@do@wedge@left
- \pgftext[bottom,
- at=\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- % right
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \pgf@circ@do@wedge@right
- \pgftext[top,
- at=\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@temp}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step},
- rotate=\rot]{\mytext}
- \fi
- \advance\pgf@circ@count@a-1\relax%
- \repeatpgfmathloop
- % Now the up and down text
- % up
- \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf@circ@strut\ctikzvalof{multipoles/flipflop/tu}\space}
- \pgf@circ@do@wedge@up
- \ifcase\quadrant % rotation 0
- \pgftext[top,
- at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or % rotation -90
- \pgftext[right,
- at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or %rotation 180
- \pgftext[bottom,
- at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or % rotation +90
- \pgftext[left,
- at=\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \fi
- % down
- \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf@circ@strut\ctikzvalof{multipoles/flipflop/td}\space}
- \pgf@circ@do@wedge@down
- \ifcase\quadrant % rotation 0
- \pgftext[bottom,
- at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or % rotation -90
- \pgftext[left,
- at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or %rotation 180
- \pgftext[top,
- at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \or % rotation +90
- \pgftext[right,
- at=\pgfpoint{0pt}{\pgf@circ@res@down+\pgf@circ@res@temp},
- rotate=\rot]{\mytext}
- \fi
- % external pins
- \ifdim\pgf@circ@res@other>0pt
- \pgfscope
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % left side pins
- \pgf@circ@count@c=\pgf@circ@count@a
- %% we draw the pin only if it's defined either a text, a clock wedge or a not pin
- %% Or'ing tests in core TeX is tough
- \edef\@@or{0}
- % Just expand the key the minimum needed
- \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf@circ@count@c}}\edef\@@x{x}
- \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \ifnum\@@or>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfusepath{stroke}
- \fi
- % right side pins
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \edef\@@or{0}
- \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf@circ@count@c}}\edef\@@x{x}
- \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- % \typeout{TEST\space\@@tmp\space\@@x}
- \ifnum\@@or>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgf@circ@res@other}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfusepath{stroke}
- \fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
- % up side
- \edef\@@or{0}
- \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/tu}}\edef\@@x{x}
- \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cu}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- % \typeout{TEST\space\@@tmp\space\@@x}
- \ifnum\@@or>0
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up+\pgf@circ@res@other}}
- \pgfusepath{stroke}
- \fi
- % down side
- \edef\@@or{0}
- \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/td}}\edef\@@x{x}
- \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cd}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
- \ifnum\@@tmp>0\edef\@@or{1}\fi
- % \typeout{TEST\space\@@tmp\space\@@x}
- \ifnum\@@or>0
- \pgfpathmoveto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down-\pgf@circ@res@other}}
- \pgfusepath{stroke}
- \fi
- \endpgfscope
- \fi % external pin width >0
- %
- % draw "inverting" circles on outputs, they must be last
- %
- \pgfscope
- \ifpgf@circuit@ieeelogicport
- \def\@@notcirc{notcirc}
- \else
- \ifpgf@circ@european@port@circle@ieee
- \def\@@notcirc{notcirc}
- \else
- \def\@@notcirc{ocirc}
- \fi
- \fi
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- \pgf@circ@count@a=\numpins\relax
- \divide\pgf@circ@count@a by 2 \pgf@circ@count@b=\pgf@circ@count@a
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % left side pins
- \pgf@circ@count@c=\pgf@circ@count@a
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfnode{\@@notcirc}{east}{}{\thisshape-N\the\pgf@circ@count@c}{\pgfusepath{stroke}}
- \endpgfscope\fi
- % right side pins
- \pgf@circ@count@c=\numexpr2*\pgf@circ@count@b-\pgf@circ@count@a+1\relax
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf@circ@count@c}}
- \ifnum\@@tmp>0\pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(\pgf@circ@dip@pin@shift-\the\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfnode{\@@notcirc}{west}{}{\thisshape-N\the\pgf@circ@count@c}{\pgfusepath{stroke}}
- \endpgfscope\fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop
- % up side
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
- \ifnum\@@tmp>0\pgfscope
- \pgftransformshift{\pgfpoint{0pt}{\pgf@circ@res@up}}
- \pgfnode{\@@notcirc}{south}{}{\thisshape-Nu}{\pgfusepath{stroke}}
- \endpgfscope\fi
- % down side
- \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nd}}
- \ifnum\@@tmp>0\pgfscope
- \pgftransformshift{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfnode{\@@notcirc}{north}{}{\thisshape-Nd}{\pgfusepath{stroke}}
- \endpgfscope\fi
- \endpgfscope
- }%
- % \pgf@sh@s@<name of the shape here> contains all the code for the shape
- % and is executed just before a node is drawn.
- \pgfutil@g@addto@macro\pgf@sh@s@flipflop{%
- % Start with the maximum pin number and go backwards.
- \pgf@circ@count@a=\numpins\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `pin 1` for the
- % electrical contact, and the "border one" like `bpin 1` for labels.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@flipflop@pin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@flipflop@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@dippinanchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
-}
-
-%
-% MUX-DEMUXES
-%
-% Thanks to @marmot
-\tikzset{muxdemux def/.code=\pgfqkeys{\circuitikzbasekey/multipoles/muxdemux}{#1}}
-\tikzset{demux/.style={muxdemux, muxdemux def={Lh=4, Rh=8, NL=1, NB=3, NR=8}}}
-\tikzset{one bit adder/.style={muxdemux,
- muxdemux def={Lh=4, NL=2, Rh=2, NR=1, NB=1, w=1.5,
- inset w=0.5, inset Lh=2, inset Rh=1.5}}}
-\tikzset{ALU/.style={muxdemux,
- muxdemux def={Lh=5, NL=2, Rh=2, NR=1, NB=2, NT=1, w=2,
- inset w=1, inset Lh=2, inset Rh=0, square pins=1}}}
-%generic mux-demux shape
-\pgfdeclareshape{muxdemux}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{muxdemuxes}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- % pins on the four sides
- % \savedmacro\NL{%
- % \pgf@circ@count@a=\ctikzvalof{multipoles/muxdemux/NL}%
- % \def\NL{\the\pgf@circ@count@a}
- % }
- \savedmacro\NL{\edef\NL{\ctikzvalof{multipoles/muxdemux/NL}}}
- \savedmacro\NR{\edef\NR{\ctikzvalof{multipoles/muxdemux/NR}}}
- \savedmacro\NT{\edef\NT{\ctikzvalof{multipoles/muxdemux/NT}}}
- \savedmacro\NB{\edef\NB{\ctikzvalof{multipoles/muxdemux/NB}}}
- \savedmacro\squarepins{\edef\squarepins{\ctikzvalof{multipoles/muxdemux/square pins}}}
- % topleft and topright sizes
- \savedanchor{\topleft}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/Lh}*\pgf@circ@scaled@Rlen/2}
- \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
- }
- \savedanchor{\topright}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/Rh}*\pgf@circ@scaled@Rlen/2}
- \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
- }
- \savedanchor{\insetnortheast}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/inset Lh}*\pgf@circ@scaled@Rlen/2}
- \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*
- (\ctikzvalof{multipoles/muxdemux/w}-2*\ctikzvalof{multipoles/muxdemux/inset w})*\pgf@circ@scaled@Rlen/2}
- }
- \saveddimen{\insethright}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/inset Rh}*\pgf@circ@scaled@Rlen/2}}
- \saveddimen{\extshift}{
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\pgf@circ@scaled@Rlen*\ctikzvalof{multipoles/external pins width}}}
- \savedanchor{\northwest}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@y{\ctikzvalof{multipoles/muxdemux/base len}*max(\ctikzvalof{multipoles/muxdemux/Rh},\ctikzvalof{multipoles/muxdemux/Lh})*\pgf@circ@scaled@Rlen/2}
- \pgfmathsetlength\pgf@x{-\ctikzvalof{multipoles/muxdemux/base len}*\ctikzvalof{multipoles/muxdemux/w}*\pgf@circ@scaled@Rlen/2}
- }
- \anchor{nw}{\northwest}
- \anchor{ne}{\northwest\pgf@x=-\pgf@x}
- \anchor{se}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchor{sw}{\northwest\pgf@y=-\pgf@y}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x \pgf@y=-\pgf@y}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{n}{\northwest\pgf@x=0pt }
- \anchor{e}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{w}{\northwest\pgf@y=0pt }
- \anchor{north}{\northwest\pgf@x=0pt }
- \anchor{east}{\northwest\pgf@x=-\pgf@x\pgf@y=0pt }
- \anchor{south}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{west}{\northwest\pgf@y=0pt }
- \anchor{center}{\pgfpointorigin}
- \anchor{top right}{\topright}
- \anchor{bottom right}{\topright\pgf@y=-\pgf@y}
- \anchor{right}{\topright\pgf@y=0pt\relax}
- \anchor{top left}{\topleft}
- \anchor{bottom left}{\topleft\pgf@y=-\pgf@y}
- \anchor{left}{\topleft\pgf@y=0pt\relax}
- \anchor{top}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
- \divide\pgf@y by 2 \pgf@x=0pt\relax}
- \anchor{bottom}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
- \divide\pgf@y by 2 \pgf@y=-\pgf@y \pgf@x=0pt\relax}
- \anchor{inset top right}{\pgf@ya=\insethright\insetnortheast\advance\pgf@y by -0.5\pgf@ya}
- \anchor{inset bottom right}{\pgf@ya=\insethright\insetnortheast\advance\pgf@y by -0.5\pgf@ya\pgf@y=-\pgf@y}
- \anchor{inset right}{\insetnortheast\pgf@y=0pt\relax}
- \anchor{inset top left}{\insetnortheast\pgf@ya=\pgf@y\topleft\pgf@y=\pgf@ya}
- \anchor{inset bottom left}{\insetnortheast\pgf@ya=\pgf@y\topleft\pgf@y=-\pgf@ya}
- \anchor{inset left}{\topleft\pgf@y=0pt\relax}
- \anchor{inset bottom}{\topleft\pgf@xa=\pgf@x\pgf@ya=\insethright
- \insetnortheast\pgf@xb=\pgf@x\pgf@yb=\pgf@x
- \pgfpoint{(\pgf@xa+\pgf@xb)/2}{-\pgf@ya+\pgf@yb/2}}
- \anchor{inset top}{\topleft\pgf@xa=\pgf@x\pgf@ya=\insethright
- \insetnortheast\pgf@xb=\pgf@x\pgf@yb=\pgf@x
- \pgfpoint{(\pgf@xa+\pgf@xb)/2}{\pgf@ya-\pgf@yb/2}}
- \anchor{inset center}{\topleft\pgf@xa=\pgf@x\insetnortheast
- \advance\pgf@x by \pgf@xa \divide\pgf@x by 2 \pgf@y=0pt\relax}
- \anchor{narrow center}{\insetnortheast\pgf@xa=\pgf@x\topright
- \advance\pgf@x by \pgf@xa \divide\pgf@x by 2\pgf@y=0pt\relax}
- \anchor{center up}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
- \divide\pgf@y by 2
- \pgf@yb = \insethright \advance\pgf@y by \pgf@yb
- \divide\pgf@y by 2 \pgf@x=0pt\relax}
- \anchor{center down}{\topright\pgf@ya=\pgf@y \topleft \advance\pgf@y by \pgf@ya
- \divide\pgf@y by 2
- \pgf@yb = \insethright \advance\pgf@y by \pgf@yb
- \divide\pgf@y by 2 \pgf@y=-\pgf@y \pgf@x=0pt\relax}
- \anchor{text}{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- \pgfmathsetlength\pgf@x{\ctikzvalof{multipoles/muxdemux/base len}*
- \ctikzvalof{multipoles/muxdemux/inset w}*\pgf@circ@scaled@Rlen/2}
- \advance\pgf@x by -.5\wd\pgfnodeparttextbox%
- \pgf@y=-.5\ht\pgfnodeparttextbox%
- \advance\pgf@y by+.5\dp\pgfnodeparttextbox%
- }%
- \backgroundpath{%
- \topleft
- \pgf@circ@res@up = \pgf@y
- \pgf@circ@res@down = -\pgf@y
- \pgf@circ@res@left = \pgf@x
- \topright
- \pgf@circ@res@other = \pgf@y
- \pgf@circ@res@right = \pgf@x
- \insetnortheast
- \pgf@circ@res@step = \pgf@x
- \pgf@circ@res@temp = \pgf@y
- %
- % external block
- %
- \pgfscope% (for the line width)
- \pgf@circ@setlinewidth{multipoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@other}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- % inset, starting down
- \ifdim\pgf@circ@res@temp>0pt % inset
- % \typeout{INSETw\space\the\pgf@circ@res@right\space x\space\the\pgf@circ@res@step\space y\space\the\pgf@circ@res@temp}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{-\insethright}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{\insethright}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}
- \fi
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- % now we have to draw the pins, if needed
- \ifdim\extshift>0pt\ifpgfcirc@draw@input@leads\pgfscope % let's avoid too much indent
- % Ok, we have to draw the leads (a.k.a. pins)
- \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
- % We mimic the anchors here --- probably there is a better way
- % left pins
- \ifnum\NL>0\relax % not indented, closed on \repeatpgfmathloop
- \pgf@circ@count@a=\NL\relax
- \pgf@circ@count@b=\NL \divide\pgf@circ@count@b by 2 % see https://tex.stackexchange.com/questions/146523/why-does-numexpr-integer-division-round-rather-than-truncate
- \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
- \insetnortheast\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
- \ifdim\pgf@circ@res@down>0pt % check if we have an inset
- % we have to check oddity
- \ifodd\NL
- \ifnum\NL=1
- % only centerpin, step should not be used, but anyway...
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/(\NL)}
- \else
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/(\NL-1)}
- \fi
- \else
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@circ@res@up-\pgf@circ@res@down)/\NL}
- \fi
- \else % no inset
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@up/\NL}
- \fi
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- %%%%%
- \ifdim\pgf@circ@res@down>0pt % check if we have an inset
- \ifnum\pgf@circ@count@a>\pgf@circ@count@b\relax
- % for lower pins we have to shift them down
- % \typeout{DEBUGTEST1\space #1\space entering\space \NL}
- \ifodd\NL
- % odd number of pins
- \ifnum\pgf@circ@count@a=\numexpr\the\pgf@circ@count@b+1\relax
- % centerpin!
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \ifnum\squarepins>0
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{0pt}}
- \else
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\extshift}{0pt}}
- \fi
- \else
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a+1)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a+1)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
- \fi
- \else
- % even numer of pins: just go down
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step-2*\pgf@circ@res@down}}
- \fi
- \else
- % nothing need for #1<=NL/2
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \fi
- \else
- % no inset
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \fi
- %%%%%
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop\fi%
- % right pins
- \ifnum\NR>0\pgf@circ@count@a=\NR\relax
- \pgfmathloop%
- \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@up=\pgf@y
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@up/\NR}
- \ifnum\pgf@circ@count@a>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\extshift}{\pgf@circ@res@up+(0.5-\pgf@circ@count@a)*\pgf@circ@res@step}}
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop\fi%
- % bottom pins
- \ifnum\NB>0\pgf@circ@count@a=\NB\relax %%%
- \pgfmathloop%
- \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
- \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@right/\NB}
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@res@down-\pgf@circ@res@up)/(\pgf@circ@res@right-\pgf@circ@res@left)*\pgf@circ@res@step}
- \ifnum\pgf@circ@count@a>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {-\pgf@circ@res@down+(\NB-\pgf@circ@count@a+0.5)*\pgf@circ@res@other}}
- \ifnum\squarepins>0
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {-max(\pgf@circ@res@down, \pgf@circ@res@up)-\extshift}}
- \else
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {-\pgf@circ@res@down+(\NB-\pgf@circ@count@a+0.5)*\pgf@circ@res@other-\extshift}}
- \fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop\fi%
- % top pins
- \ifnum\NT>0\pgf@circ@count@a=\NT\relax
- \pgfmathloop%
- \topleft\pgf@circ@res@left=\pgf@x \pgf@circ@res@up=\pgf@y
- \topright\pgf@circ@res@right=\pgf@x \pgf@circ@res@down=\pgf@y
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@right/\NT}
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@res@down-\pgf@circ@res@up)/(\pgf@circ@res@right-\pgf@circ@res@left)*\pgf@circ@res@step}
- \ifnum\pgf@circ@count@a>0
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {\pgf@circ@res@down-(\NT-\pgf@circ@count@a+0.5)*\pgf@circ@res@other}}
- \ifnum\squarepins>0
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {max(\pgf@circ@res@down, \pgf@circ@res@up)+\extshift}}
- \else
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+(\pgf@circ@count@a-0.5)*\pgf@circ@res@step}
- {\pgf@circ@res@down-(\NT-\pgf@circ@count@a+0.5)*\pgf@circ@res@other+\extshift}}
- \fi
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop\fi%
- % end drawing pins; stroke them
- \pgfusepath{stroke}
- \endpgfscope\fi\fi
- }
- % let's start adding anchors
- \pgfutil@g@addto@macro\pgf@sh@s@muxdemux{%
- % left side anchors
- \pgf@circ@count@a=\NL\relax
- % \typeout{STARTGENERATINGLEFT\space\the\pgf@circ@count@a\space FOR\space\thisshape\space\NL}
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % \typeout{GENERATINGLEFT\space\the\pgf@circ@count@a\space FOR\space\thisshape\space\NL}
- % we will create two anchors per pin: the "normal one" like `lpin 1` for the
- % external leads, and the "border one" like `blpin 1` for internal ones.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@muxdemux@lpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@L@anchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@muxdemux@blpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@L@anchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- % right anchors
- \pgf@circ@count@a=\NR\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `rpin 1` for the
- % external leads, and the "border one" like `brpin 1` for internal ones.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@muxdemux@rpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@R@anchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@muxdemux@brpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@R@anchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- % bottom anchors
- \pgf@circ@count@a=\NB\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `bpin 1` for the
- % external leads, and the "border one" like `bbpin 1` for internal ones.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@muxdemux@bpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@B@anchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@muxdemux@bbpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@B@anchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- % top anchors
- \pgf@circ@count@a=\NT\relax
- \pgfmathloop%
- \ifnum\pgf@circ@count@a>0
- % we will create two anchors per pin: the "normal one" like `tpin 1` for the
- % external leads, and the "border one" like `btpin 1` for internal ones.
- % they will coincide if `external pins width` is set to 0.
- \expandafter\xdef\csname pgf@anchor@muxdemux@tpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@T@anchor{\the\pgf@circ@count@a}{1}%
- }
- \expandafter\xdef\csname pgf@anchor@muxdemux@btpin\space\the\pgf@circ@count@a\endcsname{%
- \noexpand\pgf@circ@muxdemux@T@anchor{\the\pgf@circ@count@a}{0}%
- }
- \advance\pgf@circ@count@a by -1\relax%
- \repeatpgfmathloop%
- }%
-}
-
-%% left anchors for muxdemux
-
-\def\pgf@circ@muxdemux@L@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \topleft
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \insetnortheast
- \pgf@xb=\pgf@x
- \pgf@yb=\pgf@y
- \ifnum#1>\NL
- \PackageError{circuitikz}{%
- You requested left pin #1 for mux/demux shape \thisshape\space \MessageBreak
- which has been defined with \NL\space left pins%
- }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
- \fi
- \pgf@circ@count@a=\NL \divide\pgf@circ@count@a by 2 % see https://tex.stackexchange.com/questions/146523/why-does-numexpr-integer-division-round-rather-than-truncate
- % \typeout{LEFT \the\pgf@xa \space \the\pgf@ya \space \NL}
- \ifnum\NL>1
- \ifdim\pgf@yb>0pt % check if we have an inset
- % we have to check oddity
- \ifodd\NL
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@ya-\pgf@yb)/(\NL-1)}
- \else
- \pgfmathsetlength{\pgf@circ@res@step}{2*(\pgf@ya-\pgf@yb)/\NL}
- \fi
- \else % no inset
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@ya/\NL}
- \fi
- \ifdim\pgf@yb>0pt % check if we have an inset
- \ifnum#1>\pgf@circ@count@a\relax
- % for lower pins we have to shift them down
- % \typeout{DEBUGTEST1\space #1\space entering\space \NL}
- \ifodd\NL
- % odd number of pins
- \ifnum#1=\numexpr\the\pgf@circ@count@a+1\relax
- % centerpin!
- \ifnum#2=0\relax
- \pgfpoint{\pgf@xb}{0pt}
- \else
- \ifnum\squarepins>0
- \pgfpoint{\pgf@xa-#2*\extshift}{0pt}
- \else
- \pgfpoint{\pgf@xb-#2*\extshift}{0pt}
- \fi
- \fi
- \else
- \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1+1)*\pgf@circ@res@step-2*\pgf@yb}
- \fi
- \else
- % even numer of pins: just go down
- \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step-2*\pgf@yb}
- \fi
- \else
- % nothing need for #1<=NL/2
- \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
- \fi
- \else
- % no inset
- \pgfpoint{\pgf@xa-#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
- \fi
- \else
- \pgfpoint{\pgf@xa-#2*\extshift}{0pt}
- \fi
-}
-
-% right anchors
-\def\pgf@circ@muxdemux@R@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \topright
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \ifnum#1>\NR
- \PackageError{circuitikz}{%
- You requested right pin #1 for mux/demux shape \thisshape\space \MessageBreak
- which has been defined with \NR\space right pins%
- }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
- \fi
- \ifnum\NR>1
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@ya/\NR}
- \pgfpoint{\pgf@xa+#2*\extshift}{\pgf@ya+(0.5-#1)*\pgf@circ@res@step}
- \else
- \pgfpoint{\pgf@xa+#2*\extshift}{0pt}
- \fi
-}
-
-% bottom anchors
-\def\pgf@circ@muxdemux@B@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \topleft
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \topright
- \pgf@xb=\pgf@x
- \pgf@yb=\pgf@y
- \ifnum#1>\NB
- \PackageError{circuitikz}{%
- You requested bottom pin #1 for mux/demux shape \thisshape\space \MessageBreak
- which has been defined with \NB\space bottom pins%
- }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
- \fi
- \ifnum\NB>0
- % \typeout{DEBUGTESTtopleft\space\the\pgf@ya \space topright\space\the\pgf@yb \space\NB}
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@xb/\NB}
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@yb-\pgf@ya)/(\pgf@xb-\pgf@xa)*\pgf@circ@res@step}
- \pgfmathsetlength\pgf@x{\pgf@xa+(#1-0.5)*\pgf@circ@res@step}
- \ifnum#2=0\relax
- \pgfmathsetlength\pgf@y{-\pgf@yb+(\NB-#1+0.5)*\pgf@circ@res@other}
- \else
- \ifnum\squarepins>0\relax
- \pgfmathsetlength\pgf@y{-max(\pgf@ya,\pgf@yb)-\extshift}
- \else
- \pgfmathsetlength\pgf@y{-\pgf@yb+(\NB-#1+0.5)*\pgf@circ@res@other-\extshift}
- \fi
- \fi
- \else
- % should not happen, give the same as pin 1 anyway
- \ifnum#2=0\relax
- \pgfpoint{0pt}{-\pgf@yb+(\pgf@yb-\pgf@ya)/2}
- \else
- \pgfpoint{0pt}{-max(\pgf@ya,\pgf@yb)-\extshift}
- \fi
- \fi
-}
-
-% top anchors
-\def\pgf@circ@muxdemux@T@anchor#1#2{% #1: pin number #2: 0 for border pin, 1 for external pin
- \topleft
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \topright
- \pgf@xb=\pgf@x
- \pgf@yb=\pgf@y
- \ifnum#1>\NT
- \PackageError{circuitikz}{%
- You requested top pin #1 for mux/demux shape \thisshape\space \MessageBreak
- which has been defined with \NT\space top pins%
- }{Please check the manual about mux/demux shapes; if you press return I'll try to continue}
- \fi
- \ifnum\NT>0
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@xb/\NT}
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@yb-\pgf@ya)/(\pgf@xb-\pgf@xa)*\pgf@circ@res@step}
- \pgfmathsetlength\pgf@x{\pgf@xa+(#1-0.5)*\pgf@circ@res@step}
- \ifnum#2=0\relax
- \pgfmathsetlength\pgf@y{\pgf@yb-(\NT-#1+0.5)*\pgf@circ@res@other}
- \else
- \ifnum\squarepins>0
- \pgfmathsetlength\pgf@y{max(\pgf@ya,\pgf@yb)+\extshift}
- \else
- \pgfmathsetlength\pgf@y{\pgf@yb-(\NT-#1+0.5)*\pgf@circ@res@other+\extshift}
- \fi
- \fi
- \else
- % should not happen, give the same as pin 1 anyway
- \ifnum#2=0\relax
- \pgfpoint{0pt}{\pgf@yb-(\pgf@yb-\pgf@ya)/2}
- \else
- \pgfpoint{0pt}{max(\pgf@ya,\pgf@yb)+\extshift}
- \fi
- \fi
-}
-
-%% IEEE standard logic ports module
-%%
-%% Original multi-input code from John Kormylo at tex.stackexchange.com
-%% Help by TheTeXnician <38565529+TheTeXnician@users.noreply.github.com>
-%% Suggested idea and example code by Jason Sachs <jmsachs@gmail.com>
-%% Please see https://github.com/circuitikz/circuitikz/issues/383 for a lot of details
-%% Most of the code, all errors and bugs by Romano Giannetti <romano.giannetti@gmail.com>
-%% Everything is in the same place here --- more or less; first step to move towards
-%% a module interface for circutikz
-%%
-
-% base parameters for ieeestd ports.
-
-\ctikzset{ieeestd ports/.is family}
-% baselen is relative to pgfcirc@Rlen as ever; scaled if the class says so.
-% the value of 0.4 is the standard pin distance for a port with height=num pins
-% and matches the chip distance
-\ctikzset{ieeestd ports/baselen/.initial=0.4}
-% these are in term of baselen; width depends on height (fixed proportions)
-\ctikzset{ieeestd ports/height/.initial=2}
-\ctikzset{ieeestd ports/pin length/.initial=0.7}
-% the standard "not" circle should be 1/6.5 of height (diameter);
-% so radius/baselen=1/3.25/2 --- using 0.1 and no scaling is as a pole
-\ctikzset{ieeestd ports/not radius/.initial=0.154}
-\ctikzset{ieeestd ports/not radius fill/.initial=1}% change ony if you know why
-% the suggested xnor distance is is 1.24, so 1.25/3.25/2
-% xor/xnor leads go full in in IEEE; let this be optional
-\ctikzset{ieeestd ports/xor bar distance/.initial=0.192}%
-\ctikzset{ieeestd ports/xor leads in/.initial=1}%
-%
-% base size of a small external schmitt symbol
-%
-\ctikzset{ieeestd ports/schmitt symbol size/.initial=0.3}%
-%
-% input management
-% we are using the same /tikz/number inputs than the legacy ports
-%
-\tikzset{/tikz/inner inputs/.initial=0} % using 0 means that all inputs are inner
-%
-% integrate with the other logic ports
-%
-%
-\newif\ifpgf@circuit@ieeelogicport\pgf@circuit@ieeelogicportfalse
-\ctikzset{logic ports/ieee/.code= {%
- \pgf@circuit@ieeelogicporttrue
- \pgf@circuit@europeanlogicportfalse
- \tikzset{and port/.style={shape=ieeestd and port}}%
- \tikzset{or port/.style={shape=ieeestd or port}}%
- \tikzset{xor port/.style={shape=ieeestd xor port}}%
- \tikzset{buffer port/.style={shape=ieeestd buffer port}}%
- \tikzset{not port/.style={shape=ieeestd not port}}%
- \tikzset{nand port/.style={shape=ieeestd nand port}}%
- \tikzset{nor port/.style={shape=ieeestd nor port}}%
- \tikzset{xnor port/.style={shape=ieeestd xnor port}}%
- \tikzset{schmitt port/.style={shape=ieeestd schmitt port}}%
- \tikzset{invschmitt port/.style={shape=ieeestd invschmitt port}}%
-}}
-% add code to be compatible with the other ports
-\ctikzset{logic ports/european/.add code={\pgf@circuit@ieeelogicportfalse}}
-\ctikzset{logic ports/american/.add code={\pgf@circuit@ieeelogicportfalse}}
-\tikzset{ieee ports/.style = {\circuitikzbasekey/logic ports = ieee}}
-%
-% the base angle for the or port. See the drawings. This will not change with height
-%
-\pgfmathsetmacro{\pgf@circ@orangle}{atan(3.25/6.5)}
-% \typeout{ANGLE-IS\space\pgf@circ@orangle}
-\def\pgf@circ@ieeeport@input#1% #1 = \pgfmathcounter
-{%
- \ifnum#1>\inputs
- \PackageError{circuitikz}{%
- You requested input pin #1 for logic port shape \thisshape\space \MessageBreak
- which has been defined with \inputs\space pins%
- }{Please check the manual about logic ports; if you press return I'll try to continue}
- \fi
- \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind+0.5*\pind}% pin "0", above the rack/port
- \pgfextractx{\pgf@circ@res@left}{\bodyleft}
- \pgf@circ@res@step=\pind
- \pgf@y=\pgf@circ@res@up\advance\pgf@y by -#1\pgf@circ@res@step\relax
- \pgf@x=\pgf@circ@res@left\advance\pgf@x by -\pinlen
-}%
-
-% #1 = \pgfmathcounter #2=type
-% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor
-\def\pgf@circ@ieeeport@baseinput#1#2%
-{%
- \ifnum#1>\inputs
- \PackageError{circuitikz}{%
- You requested border input pin #1 for logic port shape \thisshape\space \MessageBreak
- which has been defined with \inputs\space pins%
- }{Please check the manual about logic ports; if you press return I'll try to continue}
- \fi
- % Find the vertical position (this is the same for any port)
- \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind+0.5*\pind}% pin "0", above the rack/port
- \pgf@circ@res@step=\pind\advance\pgf@circ@res@up by -#1\pgf@circ@res@step\relax
- % rack (extended) pins; they are the same for all the ports
- % call K = (inputs-inner)/2, rounded up; pins on the rack are:
- % above: 1..K (included)
- % below: inputs-K..inputs
- % Find the pins on the rack; they are 1...
- \pgf@circ@count@a=\numexpr (\inputs - \inners)/2\relax % =K; numexpr rounds up!
- \pgf@circ@count@b=\numexpr \inputs - \pgf@circ@count@a +1 \relax % =inputs - K +1
- % border anchors for rack should be ok
- \pgfextractx{\pgf@circ@res@left}{\topleft}
- \pgfextractx{\pgf@circ@res@right}{\bodyleft}
- \pgf@y=\pgf@circ@res@up\pgf@x=\pgf@circ@res@left
- % we have finished if we are in the rack
- \ifnum #1 > \pgf@circ@count@a \ifnum #1 < \pgf@circ@count@b
- % we are on the inner ports; we have to do the hard work here
- % and and nand
- \ifnum #2=1
- \relax % It's an and/nand, all border ports are on the rack line
- \fi
- % or and nor
- \ifnum #2=2
- \pgfmathsetlength{\pgf@x}{\pgf@circ@res@right-2*\stdH*(1-cos(atan(\pgf@circ@res@up/(2*\stdH))))}
- \fi
- % xor and xnor
- \ifnum #2=3\relax
- \pgfmathsetlength{\pgf@x}{\pgf@circ@res@right-\xorbar-2*\stdH*(1-cos(atan(\pgf@circ@res@up/(2*\stdH))))}
- \fi
- \fi\fi
-}%
-% inner base ports for xor types port
-% #1 = \pgfmathcounter #2=type
-% type is 1 for and,nand; 2 for or,nor; 3 for xor,xnor
-\def\pgf@circ@ieeeport@innerbaseinput#1%
-{%
- \ifnum#1>\inputs
- \PackageError{circuitikz}{%
- You requested border input pin #1 for logic port shape \thisshape\space \MessageBreak
- which has been defined with \inputs\space pins%
- }{Please check the manual about logic ports; if you press return I'll try to continue}
- \fi
- % Find the vertical position (this is the same for any port)
- \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind+0.5*\pind}% pin "0", above the rack/port
- \pgf@circ@res@step=\pind\advance\pgf@circ@res@up by -#1\pgf@circ@res@step\relax
- % rack (extended) pins; they are the same for all the ports
- % call K = (inputs-inner)/2, rounded up; pins on the rack are:
- % above: 1..K (included)
- % below: inputs-K..inputs
- % Find the pins on the rack; they are 1...
- \pgf@circ@count@a=\numexpr (\inputs - \inners)/2\relax % =K; numexpr rounds up!
- \pgf@circ@count@b=\numexpr \inputs - \pgf@circ@count@a +1 \relax % =inputs - K +1
- % border anchors for rack should be ok
- \pgfextractx{\pgf@circ@res@left}{\topleft}
- \pgfextractx{\pgf@circ@res@right}{\bodyleft}
- \pgf@y=\pgf@circ@res@up\pgf@x=\pgf@circ@res@left
- % we have finished if we are in the rack
- \ifnum #1 > \pgf@circ@count@a \ifnum #1 < \pgf@circ@count@b
- % we are on the inner ports; we have to do the hard work here
- \pgfmathsetlength{\pgf@x}{\pgf@circ@res@right-2*\stdH*(1-cos(atan(\pgf@circ@res@up/(2*\stdH))))}
- \fi\fi
-}%
-
-%%% macro to find basic lenghts --- they leave it in \pgf@circ@res@temp
-\def\pgf@circ@ieeestd@baselen{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/baselen}*\pgf@circ@scaled@Rlen}
-}
-\def\pgf@circ@ieeestd@stdH{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@temp}{0.5*\ctikzvalof{ieeestd ports/baselen}*
- \ctikzvalof{ieeestd ports/height}*\pgf@circ@scaled@Rlen}
-}
-\def\pgf@circ@ieeestd@pinlen{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/baselen}*
- \ctikzvalof{ieeestd ports/pin length}*\pgf@circ@scaled@Rlen}
-}
-\def\pgf@circ@ieeestd@xorbar{%
- \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}*\pgf@circ@Rlen}
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/baselen}*
- \ctikzvalof{ieeestd ports/xor bar distance}*\pgf@circ@scaled@Rlen}
-}
-%% Not circle
-\def\pgf@circ@notradius{
- \pgf@circ@ieeestd@stdH % got the standard length. Notice that his is 3.25H for IEEE
- \pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{ieeestd ports/not radius}*\pgf@circ@res@temp}
- % \typeout{NOTRADIUS\space\the\pgf@circ@res@temp}
-}
-%% Find (in ...@other) the height of the rack
-\def\pgf@circ@findrackH{%
- \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax%
- \pgf@circ@count@b=\pgfkeysvalueof{/tikz/inner inputs}\relax%
- \ifnum\pgf@circ@count@a=0 \pgf@circ@count@a=2\fi % default pins
- \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi %
- \ifnum\pgf@circ@count@b=0 \pgf@circ@count@b=\pgf@circ@count@a\fi%
- \pgf@circ@ieeestd@stdH
- \multiply\pgf@circ@res@temp by 2\relax% full height
- \divide\pgf@circ@res@temp by \pgf@circ@count@b % the pin spacing
- \pgfmathsetlength{\pgf@circ@res@other}{(\pgf@circ@count@a/2)*\pgf@circ@res@temp} %top of the rack/port
- % \typeout{RACK-\thisshape\space\the\pgf@circ@res@other}
-}
-%%
-\def\pgf@circ@find@ieeeport@up{% leave it in up
- % Normal port limits
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@circ@res@up}{\pgf@circ@res@temp}
- % rack top size
- \pgf@circ@findrackH
- \ifdim\pgf@circ@res@other > \pgf@circ@res@up
- \pgf@circ@res@up=\pgf@circ@res@other
- \else
- \fi
-}
-\def\pgf@circ@find@ieeeport@left#1{% leave it in left; #1 is type
- % Normal port limits
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@circ@res@left}{8*\pgf@circ@res@temp/6.5}
- \pgf@circ@res@right=\pgf@circ@res@left % save the border value
- \pgf@circ@res@step=\pgf@circ@res@temp % save the stdH value
- \pgf@circ@ieeestd@pinlen\advance\pgf@circ@res@left by \pgf@circ@res@temp
- % \typeout{LEFT1-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
- % this is the normal left border
- % For the or or xor port, the limit can be the pointy thing (in case the
- % pinlen is zero or too small)
- % add to the body margin the or/nor peak:
- \ifnum #1 > 1\relax% "or", "nor", "xor", "xnor" gates.
- \pgfmathsetlength{\pgf@circ@res@other}{2*\pgf@circ@res@step*(1-cos(\pgf@circ@orangle))}
- \advance\pgf@circ@res@right by \pgf@circ@res@other
- % \typeout{LEFT2-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
- \fi
- % add to the body margin the xor/xnor distance
- \ifnum #1 = 3\relax% "xor" or "xnor" gates.
- \pgf@circ@ieeestd@xorbar
- \advance\pgf@circ@res@right by \pgf@circ@res@temp
- % \typeout{LEFT3-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
- \fi
- % and if this exceeds the normal margin, this is it
- % \typeout{LEFT4-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
- \ifdim \pgf@circ@res@right > \pgf@circ@res@left
- \pgf@circ@res@left=\pgf@circ@res@right
- \fi
- % \typeout{LEFT5-\thisshape\space L\space\the\pgf@circ@res@left\space R\space\the\pgf@circ@res@right}
- \pgf@circ@res@left=-\pgf@circ@res@left
-}
-\def\pgf@circ@find@ieeeport@right#1{% leave it in right; #1 is plain or negated
- % Normal port limits
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@circ@res@right}{8*\pgf@circ@res@temp/6.5}
- \pgf@circ@notradius
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@res@right+2*#1*\pgf@circ@res@temp}
- \pgf@circ@ieeestd@pinlen\advance\pgf@circ@res@right by \pgf@circ@res@temp
- \ifdim\pgf@circ@res@other > \pgf@circ@res@right
- \pgf@circ@res@right=\pgf@circ@res@other
- \fi
-}
-\def\pgf@circ@find@ieeeport@not@right#1{% leave it in right; #1 is plain or negated
- % Normal port limits
- \pgf@circ@ieeestd@stdH
- % notice 0.8660254 is cos(30)
- \pgfmathsetlength{\pgf@circ@res@right}{0.8660254*\pgf@circ@res@temp}
- \pgf@circ@notradius
- \pgfmathsetlength{\pgf@circ@res@other}{\pgf@circ@res@right+2*#1*\pgf@circ@res@temp}
- \pgf@circ@ieeestd@pinlen\advance\pgf@circ@res@right by \pgf@circ@res@temp
- \ifdim\pgf@circ@res@other > \pgf@circ@res@right
- \pgf@circ@res@right=\pgf@circ@res@other
- \fi
-}
-
-
-%%% ieeestd multi-input ports
-%%% #1: name
-%%% #2: type: 1 for and,nand; 2 for or,nor; 3 for xor,xnor
-%%% #3: polarity: 0 for direct, 1 for inverted (not at the output)
-%%% #4: drawing for the port
-\long\def\pgfcircdeclareieeeport#1#2#3#4{%
- \pgfdeclareshape{ieeestd #1 port}%
- {%
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- \saveddimen{\baselen}{%
- \pgf@circ@ieeestd@baselen\pgf@x=\pgf@circ@res@temp
- }
- \saveddimen{\stdH}{% This is HALF the height of the inner port
- \pgf@circ@ieeestd@stdH\pgf@x=\pgf@circ@res@temp
- }
- \saveddimen{\notdiameter}{
- \pgf@circ@notradius\pgf@x=2\pgf@circ@res@temp
- }
- \saveddimen{\pind}{% pin distance;
- \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax%
- \pgf@circ@count@b=\pgfkeysvalueof{/tikz/inner inputs}\relax%
- \ifnum\pgf@circ@count@a=0 \pgf@circ@count@a=2\fi % default pins
- \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi %
- \ifnum\pgf@circ@count@b=0 \pgf@circ@count@b=\pgf@circ@count@a\fi%
- \pgf@circ@ieeestd@stdH\pgf@x=2\pgf@circ@res@temp % full height
- \divide\pgf@x by \pgf@circ@count@b
- }
- \saveddimen{\pinlen}{%
- \pgf@circ@ieeestd@pinlen\pgf@x=\pgf@circ@res@temp
- }
- \saveddimen{\xorbar}{%
- \pgf@circ@ieeestd@xorbar\pgf@x=\pgf@circ@res@temp
- }
- % anchors for the body (no pins included here)
- \savedanchor{\bodyleft}{% This DOES NOT take into account the pointy or/xor thing
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-8*\pgf@circ@res@temp/6.5}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
- }
- \savedanchor{\topleft}{%
- \pgf@circ@ieeestd@xorbar\pgf@circ@res@right=\pgf@circ@res@temp % save \xorbar
- \pgf@circ@ieeestd@stdH
- \pgf@circ@res@other=0pt\relax
- \ifnum #2 = 2\relax% "or" or "nor" gates.
- \pgfmathsetlength{\pgf@circ@res@other}{2*\pgf@circ@res@temp*(1-cos(\pgf@circ@orangle))}
- \fi
- \ifnum #2 = 3\relax% "xor" or "xnor" gates.
- \pgfmathsetlength{\pgf@circ@res@other}{2*\pgf@circ@res@temp*(1-cos(\pgf@circ@orangle))
- +\pgf@circ@res@right}
- \fi
- \pgfmathsetlength{\pgf@x}{-8*\pgf@circ@res@temp/6.5-\pgf@circ@res@other}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
- }
- \savedanchor{\bodyright}{% This DOES NOT take into account the "NOT" circle
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{8*\pgf@circ@res@temp/6.5}
- \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
- }
- \savedanchor{\bottomright}{% This DOES take into account the "NOT" circle
- \pgf@circ@notradius\pgf@circ@res@other=\pgf@circ@res@temp
- \pgf@circ@ieeestd@stdH
- % #3 is =1 if the port is a negated output one
- \pgfmathsetlength{\pgf@x}{8*\pgf@circ@res@temp/6.5+#3*2*\pgf@circ@res@other}
- \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
- }
- % geographical anchors --- must be rectangulars!
- \savedanchor{\northwest}{%
- \pgf@circ@find@ieeeport@up
- \pgf@circ@find@ieeeport@left{#2}
- % \typeout{ANCH5-\thisshape\space L\space\the\pgf@circ@res@left\space U\space\the\pgf@circ@res@up}
- \pgf@x=\pgf@circ@res@left
- \pgf@y=\pgf@circ@res@up
- }
- \savedanchor{\southwest}{%
- \pgf@circ@find@ieeeport@up
- \pgf@circ@find@ieeeport@left{#2}
- \pgf@x=\pgf@circ@res@left
- \pgf@y=-\pgf@circ@res@up
- }
- \savedanchor{\southeast}{%
- \pgf@circ@find@ieeeport@up
- \pgf@circ@find@ieeeport@right{#3}
- \pgf@x=\pgf@circ@res@right
- \pgf@y=-\pgf@circ@res@up
- }
- \savedanchor{\northeast}{%
- \pgf@circ@find@ieeeport@up
- \pgf@circ@find@ieeeport@right{#3}
- \pgf@x=\pgf@circ@res@right
- \pgf@y=\pgf@circ@res@up
- }
- \savedmacro\inputs{% get number of inputs
- \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax
- \ifnum\pgf@circ@count@a=0\pgf@circ@count@a=2\fi % default
- \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi % minimum pins
- % \ifnum\pgf@circ@count@a>16 \pgf@circ@count@a=16\fi
- \def\inputs{\the\pgf@circ@count@a}%
- }%
- \savedmacro\inners{% get number of "inner" inputs (for racks)
- \pgf@circ@count@a=\pgfkeysvalueof{/tikz/number inputs}\relax
- \pgf@circ@count@b=\pgfkeysvalueof{/tikz/inner inputs}\relax
- \ifnum\pgf@circ@count@a=0 \pgf@circ@count@a=2\fi % default pins
- \ifnum\pgf@circ@count@a<2 \pgf@circ@count@a=2\fi % minimum pins
- \ifnum\pgf@circ@count@b=0 \pgf@circ@count@b=\pgf@circ@count@a\fi
- % \typeout{INNER is \the\pgf@circ@count@b}%
- % \ifnum\pgf@circ@count@a>16 \pgf@circ@count@a=16\fi
- \def\inners{\the\pgf@circ@count@b}%
- }%
- \anchor{center}{\pgfpointorigin}
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
- \else
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@circ@res@left}{-8*\pgf@circ@res@temp/6.5} % left border
- \pgfpoint{\pgf@circ@res@left + \ctikzvalof{left text distance}}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
- \fi
- }
- % create input anchors
- \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@ieeestd #1 port\endcsname{%
- \pgf@circ@count@a=\inputs
- \pgfmathloop%
- \ifnum\pgfmathcounter>\pgf@circ@count@a%
- \else%
- %\pgfutil@ifundefined{pgf@anchor@american #1 port@in \pgfmathcounter}{%
- \expandafter\xdef\csname pgf@anchor@ieeestd #1 port@in \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@ieeeport@input{\pgfmathcounter}% defined above
- }%
- \expandafter\xdef\csname pgf@anchor@ieeestd #1 port@bin \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@ieeeport@baseinput{\pgfmathcounter}{#2}% defined above
- }%
- \ifnum #2 = 3\relax % xor/xnor inner border pins
- \expandafter\xdef\csname pgf@anchor@ieeestd #1 port@ibin \pgfmathcounter\endcsname{%
- \noexpand\pgf@circ@ieeeport@innerbaseinput{\pgfmathcounter}% defined above
- }%
- \fi
- %}{}%
- \repeatpgfmathloop%
- }
- % output anchor
- \anchor{out}{%
- \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without not ball
- \advance\pgf@circ@res@other by\pinlen
- \pgfextractx{\pgf@circ@res@temp}{\bottomright} %body + ball border
- \ifdim \pgf@circ@res@temp > \pgf@circ@res@other
- \pgf@circ@res@other = \pgf@circ@res@temp % do not enter in the ball...
- \fi
- \pgf@x=\pgf@circ@res@other\pgf@y=0pt
- }
- \anchor{bout}{\bottomright\pgf@y=0pt}
-
- \anchor{body right}{\bodyright\pgf@y=0pt}
- \anchor{right}{\bottomright\pgf@y=0pt}
- \anchor{body left}{\bodyleft\pgf@y=0pt}% central edge of the body
- \anchor{left}{% central edge of the component
- \bodyleft\pgf@y=0pt
- \ifnum #2=3\relax
- \advance\pgf@x by -\xorbar
- \fi
- }
- \anchor{up}{%
- \bodyleft
- \ifnum #2 > 1 % pointy shapes
- \pgf@circ@ieeestd@stdH
- % horizontal coordinate where the right semicircle starts
- \pgfmathsetlength{\pgf@circ@res@other}{-8*\pgf@circ@res@temp/6.5+2*\pgf@circ@res@temp*cos(\pgf@circ@orangle)}
- % vertical drop of the circle at the above coordinate
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@temp*(1-cos(atan(\pgf@circ@res@other/(2*\pgf@circ@res@temp))))}
- \advance \pgf@y by -\pgf@circ@res@step
- \fi
- \pgf@x=0pt
- }
- \anchor{down}{%
- \bodyleft
- \ifnum #2 > 1 % pointy shapes
- \pgf@circ@ieeestd@stdH
- % horizontal coordinate where the right semicircle starts
- \pgfmathsetlength{\pgf@circ@res@other}{-8*\pgf@circ@res@temp/6.5+2*\pgf@circ@res@temp*cos(\pgf@circ@orangle)}
- % vertical drop of the circle at the above coordinate
- \pgfmathsetlength{\pgf@circ@res@step}{2*\pgf@circ@res@temp*(1-cos(atan(\pgf@circ@res@other/(2*\pgf@circ@res@temp))))}
- \advance \pgf@y by -\pgf@circ@res@step
- \fi
- \pgf@y=-\pgf@y\pgf@x=0pt
- }
-
- % geographical anchors
- \anchor{nw}{\northwest}
- \anchor{ne}{\northeast}
- \anchor{se}{\southeast}
- \anchor{sw}{\southwest}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northeast}
- \anchor{south east}{\southeast}
- \anchor{south west}{\southwest}
- % over 0,0 even if asymmetric
- % will break if the geocoords are not rectangular
- \anchor{n}{\northwest\pgf@x=0pt\relax}
- \anchor{e}{\northeast\pgf@y=0pt\relax}
- \anchor{s}{\southwest\pgf@x=0pt\relax}
- \anchor{w}{\northwest\pgf@y=0pt\relax}
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{east}{\northeast\pgf@y=0pt\relax}
- \anchor{south}{\southwest\pgf@x=0pt\relax}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
-
- \backgroundpath{
- \pgfscope
- \pgfsetcolor{\ctikzvalof{color}}
- #4
- \endpgfscope
- % output lead:
- \pgfextractx{\pgf@circ@res@right}{\bottomright} %body+ball border
- \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without "not" ball
- \advance\pgf@circ@res@other by \pinlen\relax
- \ifdim \pgf@circ@res@other > \pgf@circ@res@right
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \fi
- \fi
- \ifnum #3=1\relax\pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfnode{notcirc}{east}{}{\thisshape-not}{\pgfusepath{stroke}}
- \endpgfscope\fi
- }
- }
-}
-
-%%% #1 direct name #2 negated name #3 type #4 drawing (without output)
-\long\def\pgfcircdeclareieeeportpair#1#2#3#4{%
- \pgfcircdeclareieeeport{#1}{#3}{0}{#4}% direct
- \pgfcircdeclareieeeport{#2}{#3}{1}{#4}% negated
-}
-%
-% ieeestd "and" and "nand"
-%
-\pgfcircdeclareieeeportpair{and}{nand}{1}{%
- \pgf@circ@count@a = \inputs\relax
- \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind} %top of the rack/port
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@res@up+0.5*\pind}
- \pgfextractx{\pgf@circ@res@left}{\bodyleft}
- \pgfextracty{\pgf@circ@res@down}{\bodyleft}
- \ifpgfcirc@draw@input@leads
- %input leads --- all the same for AND ports
- \loop\ifnum\pgf@circ@count@a>0
- \advance\pgf@circ@res@temp by -\pind
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{\pgf@circ@res@temp}}%
- \advance\pgf@circ@count@a by -1
- \repeat
- \fi
- \pgfusepath{draw}
- %% Body. let's start from the top left
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{-8*\stdH/6.5}{\stdH}}
- \pgfpathlineto{\pgfpoint{1.5*\stdH/6.5}{\stdH}}
- \pgfpatharc{90}{-90}{\stdH}
- \pgfpathlineto{\pgfpoint{-8*\stdH/6.5}{-\stdH}}
- \pgfpathclose
- \pgf@circ@draworfill
- % rack now; skip if not needed.
- % \typeout{WHAT\space \inputs\space \inners}
- \ifnum\inputs>\inners
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
-}
-%
-% or/nor and xor/xnor are practically the same. Let factor out everything
-% the argument #1 is put just before the drawing of the inner pins
-% the argument #2 is put after the drawing of the body
-%
-\long\def\pgf@circ@ieeeport@orxor#1#2{%
- \pgf@circ@count@a = \inputs\relax
- \pgfmathsetlength{\pgf@circ@res@up}{(\inputs/2)*\pind} %top of the rack/port
- \pgfmathsetlength{\pgf@circ@res@temp}{\pgf@circ@res@up+0.5*\pind}
- \pgfextractx{\pgf@circ@res@left}{\bodyleft}
- \pgfextracty{\pgf@circ@res@down}{\bodyleft}
- % rack (extended) pins; they are the same for all the ports
- % call K = (inputs-inner)/2, rounded up; pins on the rack are:
- % above: 1..K (included)
- % below: inputs-K..inputs
- % Find the pins on the rack; they are 1...
- \pgf@circ@count@b=\numexpr (\inputs - \inners)/2\relax % =K; numexpr rounds up!
- \pgf@circ@count@c=\numexpr \inputs - \pgf@circ@count@b +1 \relax % =inputs - K +1
- \ifpgfcirc@draw@input@leads
- %input leads --- for or ports
- \loop\ifnum\pgf@circ@count@a>0
- \pgfextractx{\pgf@circ@res@right}{\topleft}
- \advance\pgf@circ@res@temp by -\pind
- % this is the height; let's find the "right" position
- \ifnum \pgf@circ@count@a > \pgf@circ@count@b \ifnum \pgf@circ@count@a < \pgf@circ@count@c
- % inner pins
- % \typeout{INNER\space\pgf@circ@count@a}
- \pgfmathsetlength{\pgf@circ@res@right}{\pgf@circ@res@left-2*\stdH*(1-cos(atan(\pgf@circ@res@temp/(2*\stdH))))}
- % hook for xor/xnor
- #1
- \fi\fi
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@temp}}%
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{\pgf@circ@res@temp}}%
- \pgfusepath{draw}
- \advance\pgf@circ@count@a by -1
- \repeat
- \fi
- %% Body. let's start from the top left
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- % it should start here, but with this trick the close comes out better.
- % \pgfpathmoveto{\pgfpoint{-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{\stdH}}
- \pgfpathmoveto{\pgfpoint{-8*\stdH/6.5}{\stdH}}
- \pgfpathlineto{\pgfpoint{8*\stdH/6.5-2*\stdH*cos(\pgf@circ@orangle)}{\stdH}} %
- \pgfpatharcto{2*\stdH}{2*\stdH}{0}{0}{0}{\pgfpoint{8*\stdH/6.5}{0pt}}
- \pgfpatharcto{2*\stdH}{2*\stdH}{0}{0}{0}{\pgfpoint{8*\stdH/6.5-2*\stdH*cos(\pgf@circ@orangle)}{-\stdH}}
- \pgfpathlineto{\pgfpoint{-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{-\stdH}}
- %% this should be 2 and 2; but the round part is not a perfect circle that way
- %% so the 2.15 is ajusted "by taste" to touch the anchors exactly.
- \pgfpatharcto{2*\stdH}{2.2*\stdH}{0}{0}{1}{\pgfpoint{-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{\stdH}}
- \pgfpathclose
- \pgf@circ@draworfill
- % hook for xor/xnor
- #2
- % rack now; skip if not needed.
- % \typeout{WHAT\space \inputs\space \inners}
- \ifnum\inputs>\inners
- \pgfextractx{\pgf@circ@res@left}{\topleft}
- \pgfextracty{\pgf@circ@res@down}{\topleft}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
- \fi
- \endpgfscope
-}
-%
-% ieeestd "or" and "nor"
-%
-\pgfcircdeclareieeeportpair{or}{nor}{2}{%
- \pgf@circ@ieeeport@orxor{}{}
-}
-\pgfcircdeclareieeeportpair{xor}{xnor}{3}{%
- \pgf@circ@ieeeport@orxor{
- \edef\@@tmp{\ctikzvalof{ieeestd ports/xor leads in}}
- \ifnum\@@tmp=0\relax
- % move pin start to the left to leave the xor gap free (not standard)
- \advance\pgf@circ@res@right by -\xorbar
- \fi
- }{%
- % add the xor/xnor bar
- \pgfpathmoveto{\pgfpoint{-\xorbar-8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{-\stdH}}
- % see the comment on the main body about the 2.2
- \pgfpatharcto{2*\stdH}{2.2*\stdH}{0}{0}{1}{\pgfpoint{-\xorbar -8*\stdH/6.5-2*\stdH*(1-cos(\pgf@circ@orangle))}{\stdH}}
- \pgfusepath{draw}
- }
-}
-%
-% Buffer and inverters
-%
-% #1: name
-% #2: polarity
-% #3: content
-\long\def\pgfcircdeclareieeebufferport#1#2#3{%
- \pgfdeclareshape{ieeestd #1 port}%
- {%
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- \saveddimen{\baselen}{%
- \pgf@circ@ieeestd@baselen\pgf@x=\pgf@circ@res@temp
- }
- \saveddimen{\stdH}{% This is HALF the height of the inner port
- \pgf@circ@ieeestd@stdH\pgf@x=\pgf@circ@res@temp
- }
- \saveddimen{\notdiameter}{
- \pgf@circ@notradius\pgf@x=2\pgf@circ@res@temp
- }
- \saveddimen{\pinlen}{%
- \pgf@circ@ieeestd@pinlen\pgf@x=\pgf@circ@res@temp
- }
- % anchors for the body (no pins included here)
- % Notice that 0.8660254 is cos(30)
- \savedanchor{\bodyleft}{% This DOES NOT take into account the pointy or/xor thing
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
- }
- \savedanchor{\topleft}{%
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
- }
- \savedanchor{\bodyright}{% This DOES NOT take into account the "NOT" circle
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{0.8660254*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
- }
- \savedanchor{\bottomright}{% This DOES take into account the "NOT" circle
- \pgf@circ@notradius\pgf@circ@res@other=\pgf@circ@res@temp
- \pgf@circ@ieeestd@stdH
- % #2 is =1 if the port is a negated output one
- \pgfmathsetlength{\pgf@x}{0.8660254*\pgf@circ@res@temp+#2*2*\pgf@circ@res@other}
- \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
- }
- % geographical anchors --- must be rectangulars!
- \savedanchor{\northwest}{%
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@y}{\pgf@circ@res@temp}
- }
- \savedanchor{\southwest}{%
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-0.8660254*\pgf@circ@res@temp}
- \pgfmathsetlength{\pgf@y}{-\pgf@circ@res@temp}
- }
- \savedanchor{\southeast}{%
- \pgf@circ@ieeestd@stdH
- \pgf@circ@res@up=\pgf@circ@res@temp
- \pgf@circ@find@ieeeport@not@right{#2}
- \pgf@x=\pgf@circ@res@right
- \pgf@y=-\pgf@circ@res@up
- }
- \savedanchor{\northeast}{%
- \pgf@circ@ieeestd@stdH
- \pgf@circ@res@up=\pgf@circ@res@temp
- \pgf@circ@find@ieeeport@not@right{#2}
- \pgf@x=\pgf@circ@res@right
- \pgf@y=\pgf@circ@res@up
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
- \else
- \pgf@circ@ieeestd@stdH
- \pgfpoint{-0.8660254*\pgf@circ@res@temp + \ctikzvalof{left text distance}}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
- \fi
- }
- % input anchors
- \anchor{in}{\bodyleft\pgf@y=0pt\advance\pgf@x by-\pinlen}
- \anchor{in 1}{\bodyleft\pgf@y=0pt\advance\pgf@x by-\pinlen}
- \anchor{bin}{\bodyleft\pgf@y=0pt\relax}
- \anchor{bin 1}{\bodyleft\pgf@y=0pt\relax}
- % output anchors
- \anchor{out}{%
- \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without not ball
- \advance\pgf@circ@res@other by\pinlen
- \pgfextractx{\pgf@circ@res@temp}{\bottomright} %body + ball border
- \ifdim \pgf@circ@res@temp > \pgf@circ@res@other
- \pgf@circ@res@other = \pgf@circ@res@temp % do not enter in the ball...
- \fi
- \pgf@x=\pgf@circ@res@other\pgf@y=0pt
- }
- \anchor{bout}{\bottomright\pgf@y=0pt}
-
- \anchor{body right}{\bodyright\pgf@y=0pt}
- \anchor{right}{\bottomright\pgf@y=0pt}
- \anchor{body left}{\bodyleft\pgf@y=0pt}% central edge of the body
- \anchor{left}{\bodyleft\pgf@y=0pt}
- \anchor{up}{%
- \bodyleft
- \pgf@y=+0.5\pgf@y\pgf@x=0pt
- }
- \anchor{down}{%
- \bodyleft
- \pgf@y=-0.5\pgf@y\pgf@x=0pt
- }
- % this is for when it's used as a bipole
- % we use the enclosing rectangle (see below)
- \anchorborder{%
- %% This (commented out) is the correct border anchor. But if we use the correct
- %% border anchor there is no horizontal space for the label ;-) because
- %% the triangle is too steep. So we will use a simple square border
- %%
- %% find the border anchor of a triangle (like a not port or an
- %% amplifier) ---
- %%
- %% -----^ up
- %% I --- |
- %% I -|--
- %%left I | --- right
- %% ----I-----|-------I-----
- %%
- %%
- %\pgf@xa=\pgf@x
- %% it's simmetrical w/ vertical side, use only positive y
- %\pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
- %\pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
- %\pgfextracty{\pgf@circ@res@up}{\bodyleft}
- %\pgfextractx{\pgf@circ@res@left}{\bodyleft}
- %\pgfextractx{\pgf@circ@res@right}{\bodyright}
- %% limit angle for the left (vertical) side
- %\pgfmathsetmacro{\@@phimax}{atan2(\pgf@circ@res@up,\pgf@circ@res@left)}
- %\pgfmathsetmacro{\@@phi}{atan2(\pgf@ya,\pgf@xa)}
- %\pgfmathsetmacro{\@@leftside}{ifthenelse(\@@phi>\@@phimax,1,0)}
- %% find the border
- %\ifnum\@@leftside>0
- % % vertical side
- % \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
- % {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- %\else
- % % triangle upper line
- % \pgfpointintersectionoflines
- % {\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
- % {\pgfqpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@right}{0pt}}
- %\fi
- %% readjust y sign
- %\pgf@y=\@@switchy\pgf@y
- %
- % this is the square border to position the path label with a bit of horizontal space
- %
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\bodyleft}
- \pgfextractx{\pgf@circ@res@left}{\bodyleft}
- \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
- {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- }
- % geographical anchors
- \anchor{nw}{\northwest}
- \anchor{ne}{\northeast}
- \anchor{se}{\southeast}
- \anchor{sw}{\southwest}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northeast}
- \anchor{south east}{\southeast}
- \anchor{south west}{\southwest}
- % over 0,0 even if asymmetric
- % will break if the geocoords are not rectangular
- \anchor{n}{\northwest\pgf@x=0pt\relax}
- \anchor{e}{\northeast\pgf@y=0pt\relax}
- \anchor{s}{\southwest\pgf@x=0pt\relax}
- \anchor{w}{\northwest\pgf@y=0pt\relax}
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{east}{\northeast\pgf@y=0pt\relax}
- \anchor{south}{\southwest\pgf@x=0pt\relax}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
-
- \backgroundpath{
- \pgfscope
- \pgfsetcolor{\ctikzvalof{color}}
- #3
- \endpgfscope
- % output lead:
- \pgfextractx{\pgf@circ@res@right}{\bottomright} %body+ball border
- \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without "not" ball
- \advance\pgf@circ@res@other by \pinlen\relax
- \ifdim \pgf@circ@res@other > \pgf@circ@res@right
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \fi
- \fi
- \ifnum #2=1\relax\pgfscope
- \pgftransformshift{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfnode{notcirc}{east}{}{\thisshape-not}{\pgfusepath{stroke}}
- \endpgfscope\fi
- }
- }
-}
-
-%%% #1 direct name #2 negated name #3 drawing (without output)
-\long\def\pgfcircdeclareieeebufferportpair#1#2#3{%
- \pgfcircdeclareieeebufferport{#1}{0}{#3}% direct
- \pgfcircdeclareieeebufferport{#2}{1}{#3}% negated
-}
-
-\pgfcircdeclareieeebufferportpair{buffer}{not}{%
- \pgfextractx{\pgf@circ@res@left}{\bodyleft}
- \pgfextracty{\pgf@circ@res@up}{\bodyleft}
- \pgfextractx{\pgf@circ@res@right}{\bodyright}
- % \draw input pin
- \ifpgfcirc@draw@input@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{0pt}}
- \pgfusepath{draw}
- \fi
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
-}
-
-\pgfcircdeclareieeebufferportpair{schmitt}{invschmitt}{%
- \pgfextractx{\pgf@circ@res@left}{\bodyleft}
- \pgfextracty{\pgf@circ@res@up}{\bodyleft}
- \pgfextractx{\pgf@circ@res@right}{\bodyright}
- % \draw input pin
- \ifpgfcirc@draw@input@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{0pt}}
- \pgfusepath{draw}
- \fi
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- % draw schmitt symbol in normal line thickness
- \pgfpathmoveto{\pgfpoint{0.75*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.50*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.50*\pgf@circ@res@left}{0.25*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.00*\pgf@circ@res@left}{0.25*\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{0.25*\pgf@circ@res@left}{0.25*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.25*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.5*\pgf@circ@res@left}{-0.25*\pgf@circ@res@up}}
- \pgfusepath{draw}
-}
-
-
-\pgfdeclareshape{schmitt symbol}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@circ@ieeestd@stdH
- \pgf@y=\ctikzvalof{ieeestd ports/schmitt symbol size}\pgf@circ@res@temp
- \pgf@x=-1.5\pgf@y
- }
- \anchor{center}{\pgf@y=0pt \pgf@x=0pt}
- \anchor{east}{\northwest\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{e}{\northwest\pgf@y=0pt \pgf@x=-\pgf@x}
- \anchor{west}{\northwest\pgf@y=0pt}
- \anchor{w}{\northwest \pgf@y=0pt}
- \anchor{south}{\northwest \pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{north}{\northwest\pgf@x=0pt}
- \anchor{n}{\northwest\pgf@x=0pt}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{north west}{\northwest}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \backgroundpath{
- \pgfscope
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfextractx{\pgf@circ@res@left}{\northwest}
- \pgfextracty{\pgf@circ@res@up}{\northwest}
- \pgf@circ@res@left=0.7\pgf@circ@res@left
- \pgf@circ@res@up=0.7\pgf@circ@res@up
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left/3}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left/3}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathmoveto{\pgfpoint{-\pgf@circ@res@left/3}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{-\pgf@circ@res@left/3}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfusepath{draw}
- \endpgfscope
- }
-}
-
-\pgfdeclareshape{notcirc}{
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \anchor{center}{\pgfpointorigin}
- \savedanchor\northwest{%
- \pgf@circ@notradius
- \pgf@y=\pgf@circ@res@temp
- \pgf@x=-\pgf@y
- }
- \anchor{center}{\pgf@y=0pt \pgf@x=0pt}
- \anchor{right}{\northwest\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{east}{\northwest\pgf@y=0pt\pgf@x=-\pgf@x}
- \anchor{e}{\northwest\pgf@y=0pt \pgf@x=-\pgf@x}
- \anchor{left}{\northwest\pgf@y=0pt}
- \anchor{west}{\northwest\pgf@y=0pt}
- \anchor{w}{\northwest \pgf@y=0pt}
- \anchor{south}{\northwest \pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{s}{\northwest\pgf@x=0pt\pgf@y=-\pgf@y}
- \anchor{north}{\northwest\pgf@x=0pt}
- \anchor{n}{\northwest\pgf@x=0pt}
- \anchor{south west}{\northwest\pgf@y=-\pgf@y}
- \anchor{north east}{\northwest\pgf@x=-\pgf@x}
- \anchor{north west}{\northwest}
- \anchor{south east}{\northwest\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
- \anchorborder{
- \pgf@circ@res@left=\pgf@x
- \pgf@circ@res@up=\pgf@y
- \northwest\pgf@circ@res@temp=\pgf@y
- \pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}%
- {\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
- }
- \behindforegroundpath{
- \pgfscope
- \northwest\pgf@circ@res@temp=\pgf@y
- \pgfsetcolor{\ctikzvalof{color}}
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@temp}
- \ifx\tikz@fillcolor\pgfutil@empty
- % set the default fill color to white
- \pgfsetfillcolor{white}
- % ...but override it if the class is defined!
- \pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
- \else
- \pgfsetfillcolor{\tikz@fillcolor}
- \fi
- \pgfsetfillopacity{\ctikzvalof{ieeestd ports/not radius fill}}% normally 1.0
- \pgfusepath{draw,fill}
- \endpgfscope
- }
-}
-
-%%%% Transmission gates
-% tgates are only ieee style for now
-\tikzset{%
- tgate/.style ={shape=ieee tgate},
- double tgate/.style ={shape=ieee double tgate},
-}
-\ctikzset{tgate scale/.initial=0.7}
-% Buffer and inverters
-%
-% #1: name
-% #2: 1: one-not, 2:double-not
-% #3: content
-\long\def\pgfcircdeclareieeetgate#1#2#3{%
- \pgfdeclareshape{ieee #1}%
- {%
- \savedmacro{\ctikzclass}{\edef\ctikzclass{logic ports}}
- \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
- \savedmacro{\thisshape}{\def\thisshape{\tikz@fig@name}}
- \saveddimen{\baselen}{%
- \pgf@circ@ieeestd@baselen\pgf@x=\pgf@circ@res@temp
- }
- \saveddimen{\stdH}{% This is HALF the height of the inner port
- \pgf@circ@ieeestd@stdH\pgf@x=\pgf@circ@res@temp
- }
- \saveddimen{\notdiameter}{
- \pgf@circ@notradius\pgf@x=2\pgf@circ@res@temp
- }
- \saveddimen{\notradius}{
- \pgf@circ@notradius\pgf@x=\pgf@circ@res@temp
- }
- \saveddimen{\pinlen}{%
- \pgf@circ@ieeestd@pinlen\pgf@x=\pgf@circ@res@temp
- }
- % anchors for the body (no pins included here)
- % Notice that 0.8660254 is cos(30)
- \savedanchor{\bodyleft}{% This DOES NOT take into account the pointy or/xor thing
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- \pgfmathsetlength{\pgf@y}{#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- }
- \savedanchor{\topleft}{%
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- \pgfmathsetlength{\pgf@y}{#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- }
- \savedanchor{\bodyright}{%
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- \pgfmathsetlength{\pgf@y}{#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- }
- \savedanchor{\bottomright}{% Here it is the same as \bodyright
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- \pgfmathsetlength{\pgf@y}{#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- }
- % geographical anchors --- must be rectangulars!
- \savedanchor{\northwest}{%
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- \pgfmathsetlength{\pgf@y}{#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- }
- \savedanchor{\southwest}{%
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{-2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- \pgfmathsetlength{\pgf@y}{-#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- }
- \savedanchor{\southeast}{%
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- \pgfmathsetlength{\pgf@y}{-#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- }
- \savedanchor{\northeast}{%
- \pgf@circ@ieeestd@stdH
- \pgfmathsetlength{\pgf@x}{2*0.8660254*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- \pgfmathsetlength{\pgf@y}{#2*\pgf@circ@res@temp*\ctikzvalof{tgate scale}}
- }
- \anchor{center}{\pgfpointorigin}
- \anchor{text}{
- \ifpgf@circ@center@text
- \pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
- \else
- \pgf@circ@ieeestd@stdH
- \pgfpoint{-0.8660254*\pgf@circ@res@temp + \ctikzvalof{left text distance}}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}
- \fi
- }
- % input anchors
- \anchor{in}{\bodyleft\pgf@y=0pt\advance\pgf@x by-\pinlen}
- \anchor{in 1}{\bodyleft\pgf@y=0pt\advance\pgf@x by-\pinlen}
- \anchor{bin}{\bodyleft\pgf@y=0pt\relax}
- \anchor{bin 1}{\bodyleft\pgf@y=0pt\relax}
- % gates
- \anchor{gate}{\bodyleft\pgf@circ@res@up=\pgf@y
- \pgf@x=0pt\pgfmathsetlength{\pgf@y}{-(#2-1)*0.5*\pgf@circ@res@up-\pinlen}}
- \anchor{bgate}{\bodyleft\pgf@circ@res@up=\pgf@y
- \pgf@x=0pt\pgfmathsetlength{\pgf@y}{-(#2-1)*0.5*\pgf@circ@res@up}}
- % gate (up) (2.1547 = 1+1/cos(30)
- \anchor{notgate}{\bodyleft\pgf@circ@res@up=\pgf@y
- \pgf@x=0pt\relax
- \pgfmathsetlength{\pgf@circ@res@temp}{2.1547*\notradius}
- \ifdim\pinlen>\pgf@circ@res@temp
- \pgfmathsetlength{\pgf@y}{(#2-1)*0.5*\pgf@circ@res@up+\pinlen}
- \else
- \pgf@y=\pgf@circ@res@temp
- \fi
- }
- \anchor{bnotgate}{\bodyleft\pgf@circ@res@up=\pgf@y
- \pgf@x=0pt\pgfmathsetlength{\pgf@y}{(#2-1)*0.5*\pgf@circ@res@up+2.1547*\notradius}}
-
- % output anchors
- \anchor{out}{%
- \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without not ball
- \advance\pgf@circ@res@other by\pinlen
- \pgfextractx{\pgf@circ@res@temp}{\bottomright} %body + ball border
- \ifdim \pgf@circ@res@temp > \pgf@circ@res@other
- \pgf@circ@res@other = \pgf@circ@res@temp % do not enter in the ball...
- \fi
- \pgf@x=\pgf@circ@res@other\pgf@y=0pt
- }
- \anchor{bout}{\bottomright\pgf@y=0pt}
-
- \anchor{body right}{\bodyright\pgf@y=0pt}
- \anchor{right}{\bottomright\pgf@y=0pt}
- \anchor{body left}{\bodyleft\pgf@y=0pt}% central edge of the body
- \anchor{left}{\bodyleft\pgf@y=0pt}
- \anchor{up}{%
- \bodyleft
- \pgf@x=0pt
- \ifnum#2=1\relax
- \pgf@y=0pt
- \else
- \pgf@y=.5\pgf@y
- \fi
- \advance\pgf@y by \notdiameter
- }
- \anchor{down}{%
- \bodyleft
- \pgf@x=0pt
- \ifnum#2=1\relax
- \pgf@y=0pt
- \else
- \pgf@y=-.5\pgf@y
- \fi
- }
- % this is for when it's used as a bipole
- % we use the enclosing rectangle (see below)
- \anchorborder{%
- %
- % this is the square border to position the path label with a bit of horizontal space
- %
- \pgf@xa=\pgf@x
- \pgf@ya=\pgf@y
- \pgfextracty{\pgf@circ@res@up}{\bodyleft}
- \pgfextractx{\pgf@circ@res@left}{\bodyleft}
- \pgfpointborderrectangle{\pgfpoint{\pgf@xa}{\pgf@ya}}
- {\pgfpoint{-\pgf@circ@res@left}{\pgf@circ@res@up}}
- }
- % geographical anchors
- \anchor{nw}{\northwest}
- \anchor{ne}{\northeast}
- \anchor{se}{\southeast}
- \anchor{sw}{\southwest}
- \anchor{north west}{\northwest}
- \anchor{north east}{\northeast}
- \anchor{south east}{\southeast}
- \anchor{south west}{\southwest}
- % over 0,0 even if asymmetric
- % will break if the geocoords are not rectangular
- \anchor{n}{\northwest\pgf@x=0pt\relax}
- \anchor{e}{\northeast\pgf@y=0pt\relax}
- \anchor{s}{\southwest\pgf@x=0pt\relax}
- \anchor{w}{\northwest\pgf@y=0pt\relax}
- \anchor{north}{\northwest\pgf@x=0pt\relax}
- \anchor{east}{\northeast\pgf@y=0pt\relax}
- \anchor{south}{\southwest\pgf@x=0pt\relax}
- \anchor{west}{\northwest\pgf@y=0pt\relax}
-
- \backgroundpath{
- \pgfscope
- \pgfsetcolor{\ctikzvalof{color}}
- \pgfextractx{\pgf@circ@res@left}{\bodyleft}
- \pgfextracty{\pgf@circ@res@up}{\bodyleft}
- \pgfextractx{\pgf@circ@res@right}{\bodyright}
- % \draw input pins
- \ifpgfcirc@draw@input@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pinlen}{0pt}}
- % gate (down)
- \pgfpathmoveto{\pgfpoint{0pt}{-(#2-1)*0.5*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-(#2-1)*0.5*\pgf@circ@res@up-\pinlen}}
- % gate (up) (2.1547 = 1+1/cos(30)
- \pgfmathsetlength{\pgf@circ@res@temp}{2.1547*\notradius}
- \ifdim\pinlen>\pgf@circ@res@temp
- \pgfpathmoveto{\pgfpoint{0pt}{(#2-1)*0.5*\pgf@circ@res@up+\pgf@circ@res@temp}}
- \pgfpathlineto{\pgfpoint{0pt}{(#2-1)*0.5*\pgf@circ@res@up+\pinlen}}
- \fi
- \pgfusepath{draw}
- \fi
- #3
- \endpgfscope
- % output lead:
- \pgfextractx{\pgf@circ@res@right}{\bottomright} %body+ball border
- \pgfextractx{\pgf@circ@res@other}{\bodyright} %body border, without "not" ball
- \advance\pgf@circ@res@other by \pinlen\relax
- \ifdim \pgf@circ@res@other > \pgf@circ@res@right
- \ifpgfcirc@draw@output@leads
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
- \pgfusepath{draw}
- \fi
- \fi
- }
- }
-}
-
-\pgfcircdeclareieeetgate{tgate}{1}{%
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@up}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- \pgfscope
- % 1.1547 is 1/cos(30)
- \pgftransformshift{\pgfpoint{0pt}{1.1547*\notradius}}
- \pgfnode{notcirc}{center}{}{\thisshape-not}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-\pgfcircdeclareieeetgate{double tgate}{2}{%
- \pgfscope
- \pgf@circ@setlinewidth{tripoles}{\pgflinewidth}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathclose
- \pgf@circ@draworfill
- % bottom triangles
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0pt}}
- \pgfpathclose
- \pgf@circ@draworfill
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{-\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0pt}{-.5\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
- \pgfpathclose
- \pgf@circ@draworfill
- \endpgfscope
- \pgfscope
- % 1.1547 is 1/cos(30)
- \pgftransformshift{\pgfpoint{0pt}{.5*\pgf@circ@res@up+1.1547*\notradius}}
- \pgfnode{notcirc}{center}{}{\thisshape-not}{\pgfusepath{stroke}}
- \endpgfscope
-}
-
-%%%---------- close: tex/pgfcircmultipoles
-
-%%%%%%%%%%% Springe nach tex/pgfcirclabel
-%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Bipole label positioning
-
-%% bipole labels and annotation extra style
-
-\ctikzset{bipole label style/.style={}}
-\tikzset{bipole label style/.code={
- \ctikzset{bipole label style/.style={#1}}
-}}
-\tikzset{bipole label append style/.code={
- \ctikzset{bipole label style/.append style={#1}}
-}}
-\ctikzset{bipole annotation style/.style={}}
-\tikzset{bipole annotation style/.code={
- \ctikzset{bipole annotation style/.style={#1}}
-}}
-\tikzset{bipole annotation append style/.code={
- \ctikzset{bipole annotation style/.append style={#1}}
-}}
-
-%% Options
-\ctikzset{label/.style = { l=#1 } }
-\ctikzset{l/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/label/name=#1}
- \ctikzsetvalof{bipole/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-
-\ctikzset{label above/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-
-\ctikzset{l^/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=90 }
-}
-
-\ctikzset{label below/.code = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-\ctikzset{l_/.style = {
- l=#1,
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-\ctikzset{annotation/.style = { a=#1 } }
-\ctikzset{a/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/annotation/name=#1}
- \ctikzsetvalof{bipole/annotation/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/annotation/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/annotation/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-
-\ctikzset{annotation above/.code = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=90 }
-}
-
-\ctikzset{a^/.style = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=90 }
-}
-
-\ctikzset{annotation below/.code = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=-90 }
-}
-\ctikzset{a_/.style = {
- a=#1,
- \circuitikzbasekey/bipole/annotation/position=-90 }
-}
-
-% This is to adjust spacing for the labels so that they are not cramped on components
-\def\pgf@circ@ls{.75ex} % labelspace to have just one point to change
-
-\def\pgf@circ@drawlabels#1{
- \pgfextra{
- % This function will be called with argument #1 equal
- % to "label" or "annotation" form pgfcircpath.tex.
- % pgf@circ@direction is the direction of the path,
- % its value is set in pgfcircpath.tex
- \pgfmathsubtract{\pgf@circ@direction}{90}
- \pgfmathround{\pgfmathresult} % avoid precision loss errors
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
-
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/position}}
- \ifnum \pgf@circ@temp < 0
- \pgfmathadd{\pgf@circ@labanc}{180}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- % \typeout{INI: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
- %
- % normalize the angle values
- %
- \pgfmathmod{\pgf@circ@labanc}{360}
- \edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- %
- \ifpgf@circuit@bipole@inverted
- \pgfmathadd{\pgf@circ@temp}{180} %If shape is inverted, use opposite anchor
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- %
- \ifnum \ctikzvalof{mirror value} = -1
- \pgfmathadd{\pgf@circ@temp}{180} %If shape is mirrored, use opposite anchor
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- % \typeout{FIN: TEMP\space\pgf@circ@temp\space LABANC\space\pgf@circ@labanc}
- }
- %Firstly, place a coordinate directly at the edge of the shape
- (\ctikzvalof{bipole/name}.\pgf@circ@temp) coordinate (pgfcirc@labelcoor)
- %now decide, which labels should be drawn
- \pgfextra{
- \edef\pgf@temp{\ctikzvalof{label/align}}
- \def\pgf@circ@temp{straight}
- }
- \ifx\pgf@temp\pgf@circ@temp %straight
- \pgf@circ@drawreglabels{#1}
- \else
- \pgfextra{\def\pgf@circ@temp{rotate}}
- \ifx\pgf@temp\pgf@circ@temp %rotate
- \pgf@circ@drawrotlabels{#1}
- \else% smart
- \pgf@circ@drawsmartlabels{#1}
- \fi
- \fi
-}
-
-
-\def\pgf@circ@drawsmartlabels#1{
- \pgfextra{
- \pgfmathmod{\pgf@circ@direction}{90}
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- \ifnum \pgfcircmathresult > 20
- \ifnum \pgfcircmathresult < 70
- \pgf@circ@drawrotlabels{#1}
- \else
- \pgf@circ@drawreglabels{#1}
- \fi
- \else
- \pgf@circ@drawreglabels{#1}
- \fi
- }
-
-
-\def\pgf@circ@drawrotlabels#1{
- \pgfextra{
- % scale the distances in function of zoom, so that they are not
- % dependent on it but on font size. Thanks to @marmot
- % https://tex.stackexchange.com/a/476018/38080
- % the coeffcient is adjusted so that the distance is more or less
- % the same for rotated labels and straight ones (although it will
- % depend on the font, so it's not exact).
- \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
- \pgfmathsetmacro{\myscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
- % \typeout{ROT\tmpa\space\tmpb\space\tmpc\space\tmpd\space\myscale}
- \pgfmathsetlength\pgf@circ@res@temp{1.5*\pgf@circ@ls/\myscale}
- \ifnum \ctikzvalof{bipole/#1/position}>0
- %we need some more space for placement below, due to mid-anchor
- \else % we do not have <= in \ifnum...
- \pgf@circ@res@temp=1.5\pgf@circ@res@temp
- \fi
- %Calculate rotation of the label from direction and strip decimals
- \pgfmathsetmacro{\pgfcirclabrot}{round(\pgf@circ@direction)}
- \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfcirclabrot\pgf@nil}
- % rotate the label at second or third quadrant:
- \ifnum \pgfcirclabrot > 90 \ifnum \pgfcirclabrot < 270
- \pgfmathsubtract{\pgf@circ@direction}{180}
- \edef\pgfcirclabrot{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- %invert the space relationships due to rotated strings
- \ifnum \ctikzvalof{bipole/#1/position}>0
- \pgf@circ@res@temp=1.5\pgf@circ@res@temp
- \fi
- \fi\fi
- \pgfmathparse{\ctikzvalof{bipole/#1/position}>0?\pgf@circ@direction+90:\pgf@circ@direction-90}%
- \edef\pgf@circ@labposangle{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}%
- \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix#1-direction\endcsname{\pgfcirclabrot}%
- \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix-#1-anchor\endcsname{mid}%
- }
- % reset cm is not working correctly here
- (pgfcirc@labelcoor)++(\pgf@circ@labposangle:\the\pgf@circ@res@temp) coordinate(pgfcirc@labelcoor)
- node[anchor=mid, rotate=\pgfcirclabrot, \circuitikzbasekey/bipole #1 style]
- (\ctikzvalof{bipole/name}#1){\pgf@circ@finallabels{#1}}
-}
-
-\def\pgf@circ@drawreglabels#1{
- %Now calculate all shape positions
- %Use mid-anchor at x-axis and base-anchor at y-axis, respectively.
- %All points between will be addressed by angled-anchors:
- \pgfextra{
- % scale ex-distance to make it independent on scale
- % thanks @marmot see https://tex.stackexchange.com/a/476018/38080
- \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
- \pgfmathsetmacro{\myscale}{sqrt(abs(\tmpa*\tmpd-\tmpb*\tmpc))}% abs should not be needed
- % \typeout{ROT\tmpa\space\tmpb\space\tmpc\space\tmpd\space\myscale}
- \pgfmathsetlength\pgf@circ@res@temp{\pgf@circ@ls/\myscale}
- \pgfmathadd{\pgf@circ@labanc}{90}
- \pgfmathround{\pgfmathresult}
- \def\pgf@circ@labanctext{\pgf@circ@labanc}
- \edef\pgf@circ@temp{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \pgfmathparse{mod(\pgf@circ@temp,180)>135?mod(\pgf@circ@temp,180)-180:mod(\pgf@circ@temp,180)}
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- %Values around 90 are at both y-axis
- \ifnum \pgfcircmathresult > 84 \ifnum \pgfcircmathresult< 96
- \pgfextra{\edef\pgf@circ@labpos{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}}
- \ifnum \pgf@circ@labpos > 180
- \ifnum \ctikzvalof{bipole/#1/position} > 0
- \pgfextra{\def\pgf@circ@labanctext{mid west}}
- \else
- \pgfextra{\def\pgf@circ@labanctext{mid east}}
- \fi
- \else
- \ifnum \ctikzvalof{bipole/#1/position} > 0
- \pgfextra{\def\pgf@circ@labanctext{mid east}}
- \else
- \pgfextra{\def\pgf@circ@labanctext{mid west}}
- \fi
- \fi
- \fi\fi
- %Values between -5 and 5 are at pos /neg x-axis
- \ifnum \pgfcircmathresult <6 \ifnum \pgfcircmathresult > -6
- \ifnum \ctikzvalof{bipole/#1/position} < 0
- \ifnum \pgf@circ@labanc > 90
- % using base coordinate instead of south to naturally align
- % symbols with descendants; but this invalidate the effect of
- % the inner sep, so recover it by shifting the anchor
- % reset cm is not working sometime, use @marmot solution
- % see https://tex.stackexchange.com/a/476018/38080
- (pgfcirc@labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(pgfcirc@labelcoor)
- \pgfextra{\def\pgf@circ@labanctext{base}}%base
- \else
- \pgfextra{\def\pgf@circ@labanctext{north}}%north
- \fi
- \else
- \ifnum \pgf@circ@labanc < 90
- % shift, as above
- (pgfcirc@labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(pgfcirc@labelcoor)
- \pgfextra{\def\pgf@circ@labanctext{base}}%base
- \else
- \ifnum \pgf@circ@labanc > 180
- % this shouldn't happen, but somehow it does (270 degree anchors)
- % shift, as above
- (pgfcirc@labelcoor) ++(-\pgf@circ@labanc:\pgf@circ@res@temp) coordinate(pgfcirc@labelcoor)
- \pgfextra{\def\pgf@circ@labanctext{base}}%base
- \else
- \pgfextra{\def\pgf@circ@labanctext{north}}%north
- \fi
- \fi
- \fi
- \fi\fi
- \pgfextra{%
- \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix#1-direction\endcsname{0}%
- \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix-#1-anchor\endcsname{\pgf@circ@labanctext}%
- }
- (pgfcirc@labelcoor) node[anchor=\pgf@circ@labanctext,
- inner sep=0.5\pgf@circ@res@temp, outer sep=0pt, \circuitikzbasekey/bipole #1 style,
- ](\ctikzvalof{bipole/name}#1){\strut\pgf@circ@finallabels{#1}%
- }
-}
-
-\def\pgf@circ@finallabels#1{%
- \edef\pgf@temp{}%
- \edef\pgf@circ@temp{\ctikzvalof{bipole/#1/unit}}%
- \ifx\pgf@temp\pgf@circ@temp%
- \ctikzvalof{bipole/#1/name}%
- \else%
- $\SI{\ctikzvalof{bipole/#1/name}}{\ctikzvalof{bipole/#1/unit}}$%
- \fi%
-}
-
-
-%%%% Stacked labels
-%
-% stacked labels by Romano Giannetti romano@rgtti.com
-% heavily based on Claudo Fiandrinos's https://tex.stackexchange.com/a/65792/38080
-% \expandafter trick inspired by Matthew Leingang's https://tex.stackexchange.com/a/12272/38080
-%
-% labels are in a tabular, globally aligned:
-% vertically with key l2 valign (default c)
-% c: center t: top b: bottom
-% horizontally with key l2 align (default l)
-% l: left c: centered r: right
-% you can switch sides using l2_=... and l2^=...
-% syntax is l2_ = line1 and line2 (same for l2^)
-%
-\ctikzset{%
- l2 valign/.store in=\ltwo@valign, l2 valign=c,
- l2 halign/.store in=\ltwo@halign, l2 halign=l,
-}
-\ctikzset{l2base/.code n args={2}{
- \pgfkeys{/tikz/circuitikz/bipole/label/name=%
- \bgroup
- \setlength{\tabcolsep}{2pt}%
- \def\ltwo@tabu{\tabular[\ltwo@valign]}%
- \expandafter\ltwo@tabu\expandafter{\ltwo@halign}%
- #1\\ #2%
- \endtabular
- \egroup
- }%
- \ctikzsetvalof{bipole/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#2}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}}
-\ctikzset{l2/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l2 above/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l2^/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=90 }
-}
-\ctikzset{l2 below/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-\ctikzset{l2_/.style args={#1 and #2}{
- l2base={#1}{#2},
- \circuitikzbasekey/bipole/label/position=-90 }
-}
-
-%%%---------- close: tex/pgfcirclabel
-%%%%%%%%%%% Springe nach tex/pgfcircvoltage
-%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Voltage management
-
-%% styles
-\ctikzset{bipole voltage style/.style={}}
-\tikzset{bipole voltage style/.code={
- \ctikzset{bipole voltage style/.style={#1}}
-}}
-\tikzset{bipole voltage append style/.code={
- \ctikzset{bipole voltage style/.append style={#1}}
-}}
-
-\ctikzset{v^>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v^</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = above
- }
-}
-
-\ctikzset{v_>/.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = forward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-\ctikzset{v_</.style = {
- v = #1,
- \circuitikzbasekey/bipole/voltage/direction = backward,
- \circuitikzbasekey/bipole/voltage/position = below
- }
-}
-
-\ctikzset{v_/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = below} }
-\ctikzset{v^/.style = {v = #1, \circuitikzbasekey/bipole/voltage/position = above} }
-\ctikzset{v>/.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = forward} }
-\ctikzset{v</.style = {v = #1, \circuitikzbasekey/bipole/voltage/direction = backward} }
-
-% Default position varies whether the component is a voltage source
-% or not
-\ctikzset{v/.code = {
- \pgfcirc@has@vtrue
- \ifpgf@circuit@bipole@isvoltage
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=above,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \ifpgf@circ@oldvoltagedirection
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \fi
- \fi
- \ifpgf@circ@oldvoltagedirection
- \ifpgf@circuit@bipole@iscurrent\ifpgf@circ@fixbatteries
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \fi\fi
- \else
- \ifpgf@circuit@bipole@iscurrent
- \ifpgf@circuit@bipole@current@backward
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=forward}
- \else
- \pgfkeys{\circuitikzbasekey/bipole/voltage/position=below,
- \circuitikzbasekey/bipole/voltage/direction=backward}
- \fi\fi\fi
- \pgfkeys{/tikz/circuitikz/bipole/voltage/label/name=#1}
- \ctikzsetvalof{bipole/voltage/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/voltage/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- }
-}
-
-% american voltage font selection and symbol definition
-% the default font command is {} --- nothing
-\def\pgf@circ@avfont{\ctikzvalof{voltage/american font}}
-%
-% plus and minus symbols (default is $+$ and $-$, see pgfcirc.defines.tex)
-%
-\def\pgf@circ@avplus{\ctikzvalof{voltage/american plus}}
-\def\pgf@circ@avminus{\ctikzvalof{voltage/american minus}}
-
-%%
-\def\setscaledRlenforclass{%
- \csname pgf@sh@ma@\ctikzvalof{bipole/name}\endcsname
- \ifdefined\ctikzclass
- \edef\pgf@temp{/tikz/circuitikz/\ctikzclass/scale}
- \pgfkeysifdefined{\pgf@temp}
- {\pgf@circ@scaled@Rlen=\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
- {\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}
- \else
- \pgf@circ@scaled@Rlen=\pgf@circ@Rlen
- \fi
-}
-
-%% Output routine for generic bipoles
-% put this to true to see the voltage label coordinate anchors
-\newif\ifpgf@circ@debugv\pgf@circ@debugvfalse
-
-\def\pgf@circ@drawvoltagegeneric{
- \pgfextra{
- % \typeout{KIND:\ctikzvalof{bipole/kind}\space RLEN:\the\pgf@circ@Rlen\space SCALED:\the\pgf@circ@scaled@Rlen}
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@inverted
- \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
- \else
- \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
- \fi
- \else
- \ifpgf@circuit@bipole@inverted
- \def\distfromline{-\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
- \else
- \def\distfromline{\ctikzvalof{voltage/distance from line}\pgf@circ@scaled@Rlen}
- \fi
- \fi
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@voltage@angle{90}
- \else
- \def\pgf@circ@voltage@angle{-90}
- \fi
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/distance from node}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\distancefromnode{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/distance from node}} }
- { \edef\distancefromnode{\ctikzvalof{voltage/distance from node}} }
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/bump b}
- \pgfkeysifdefined{\pgf@temp}
- { \edef\bumpb{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/bump b}} }
- { \edef\bumpb{\ctikzvalof{voltage/bump b}} }
- \edef\shiftv{\ctikzvalof{voltage/shift}}
- % additional per-bipole voltage shift (internal)
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/additional shift}
- \pgfkeysifdefined{\pgf@temp}
- {
- \edef\addvshift{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/additional shift}}
- }
- {
- \edef\addvshift{0}
- }
- \newdimen{\absvshift}
- \pgfmathsetlength{\absvshift}{(1+\shiftv+\addvshift)*(\distfromline)}
- % reset anchor if american and open
- \ifpgf@circuit@europeanvoltage
- \else
- \ifx\@@kind\@@open
- \def\pgf@circ@bipole@voltage@label@anchor{center}
- \fi
- \fi
- \ifpgf@circuit@bipole@voltage@raised
- \def\pgf@circ@bipole@voltage@label@anchor{center}
- \pgfmathsetlength{\absvshift}{\absvshift+sign(\absvshift)*height{"Q"}} % with the current font.
- \fi
- }
- % %\pgf@circ@Rlen/\ctikzvalof{current arrow scale} is equal to the length of the currarrow
- %absolute move, minimum space is length of arrowhead
- coordinate (pgfcirc@midtmp) at ($(\tikztostart) ! \pgf@circ@Rlen/\ctikzvalof{current arrow scale} ! (pgfcirc@anchorstartnode)$)
- coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distancefromnode ! (pgfcirc@anchorstartnode)$)
- coordinate (pgfcirc@Vfrom@flat) at (pgfcirc@midtmp)
- %absolute move, minimum space is length of arrowhead
- coordinate (pgfcirc@midtmp) at ($(\tikztotarget) ! \pgf@circ@Rlen/\ctikzvalof{current arrow scale} ! (pgfcirc@anchorendnode)$)
- coordinate (pgfcirc@midtmp) at ($(pgfcirc@midtmp) ! \distancefromnode ! (pgfcirc@anchorendnode)$)
- coordinate (pgfcirc@Vto@flat) at (pgfcirc@midtmp)
- coordinate (pgfcirc@mid) at ($(pgfcirc@Vfrom@flat)!0.5!(pgfcirc@Vto@flat)$)
-
- \ifpgf@circuit@bipole@voltage@below
- % see comments for the "above" part (similar)
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@straight
- coordinate (pgfcirc@bottom) at (\ctikzvalof{bipole/name}.-90)
- coordinate (pgfcirc@Vto1) at ($(pgfcirc@mid)+(pgfcirc@bottom)-(pgfcirc@Vfrom@flat)$)
- coordinate (pgfcirc@Vfrom1) at ($(pgfcirc@mid)+(pgfcirc@bottom)-(pgfcirc@Vto@flat)$)
- coordinate (\pgfcirc@a@prefix-Vto) at ($(pgfcirc@Vto1) ! \absvshift!90 : (pgfcirc@Vfrom1)$)
- coordinate (\pgfcirc@a@prefix-Vfrom) at ($(pgfcirc@Vfrom1) ! \absvshift!-90 : (pgfcirc@Vto1)$)
- coordinate (\pgfcirc@a@prefix-Vlab) at ($(\pgfcirc@a@prefix-Vto)!0.5!(\pgfcirc@a@prefix-Vfrom) $)
- coordinate (pgfcirc@Vdir) at (\pgfcirc@a@prefix-Vto)
- \else
- coordinate (\pgfcirc@a@prefix-Vto) at ($(pgfcirc@Vto@flat) ! \absvshift!90 : (pgfcirc@anchorendnode)$)
- coordinate (\pgfcirc@a@prefix-Vfrom) at ($(pgfcirc@Vfrom@flat) ! \absvshift!-90 : (pgfcirc@anchorstartnode)$)
- coordinate (pgfcirc@Vcont1t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-110)$)
- coordinate (pgfcirc@Vcont2t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.-70)$)
- coordinate (\pgfcirc@a@prefix-Vcont1) at ($(pgfcirc@Vcont1t) ! -\absvshift!90 : (pgfcirc@Vcont2t)$)
- coordinate (\pgfcirc@a@prefix-Vcont2) at ($(pgfcirc@Vcont2t) ! -\absvshift!-90 : (pgfcirc@Vcont1t)$)
- coordinate (\pgfcirc@a@prefix-Vlab) at ($(\pgfcirc@a@prefix-Vcont2)!0.5!(\pgfcirc@a@prefix-Vcont1)$)
- coordinate (pgfcirc@Vdir) at (\pgfcirc@a@prefix-Vcont2)
- \fi
- \else
- % we are in case of american here
- coordinate (\pgfcirc@a@prefix-Vto) at ($(pgfcirc@Vto@flat) ! \absvshift!90 : (pgfcirc@anchorendnode)$)
- coordinate (\pgfcirc@a@prefix-Vfrom) at ($(pgfcirc@Vfrom@flat) ! \absvshift!-90 : (pgfcirc@anchorstartnode)$)
- coordinate (pgfcirc@bottom) at (\ctikzvalof{bipole/name}.-90)
- coordinate (pgfcirc@Vdir0) at ($(pgfcirc@mid)+(pgfcirc@bottom)-(pgfcirc@Vfrom@flat)$)
- coordinate (\pgfcirc@a@prefix-Vlab) at ($(pgfcirc@bottom) ! \absvshift!-90 : (pgfcirc@Vdir0)$)
- coordinate (pgfcirc@Vdir) at ($(pgfcirc@mid)+(\pgfcirc@a@prefix-Vlab)-(pgfcirc@Vfrom@flat)$)
- \ifpgf@circuit@bipole@voltage@raised
- % move the from and to up to the level of Vlab
- coordinate (\pgfcirc@a@prefix-Vto) at ($(\pgfcirc@a@prefix-Vlab)+(pgfcirc@Vto@flat)-(pgfcirc@mid)$)
- coordinate (\pgfcirc@a@prefix-Vfrom) at ($(\pgfcirc@a@prefix-Vlab)+(pgfcirc@Vfrom@flat)-(pgfcirc@mid)$)
- \fi
- \fi
- \else
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@straight
- coordinate (pgfcirc@top) at (\ctikzvalof{bipole/name}.90)
- % move parallel to the component line at pgfcirc@top distance
- coordinate (pgfcirc@Vto1) at ($(pgfcirc@mid)+(pgfcirc@top)-(pgfcirc@Vfrom@flat)$)
- coordinate (pgfcirc@Vfrom1) at ($(pgfcirc@mid)+(pgfcirc@top)-(pgfcirc@Vto@flat)$)
- % add the extra distance
- coordinate (\pgfcirc@a@prefix-Vto) at ($(pgfcirc@Vto1) ! \absvshift!-90 : (pgfcirc@Vfrom1)$)
- coordinate (\pgfcirc@a@prefix-Vfrom) at ($(pgfcirc@Vfrom1) ! \absvshift!90 : (pgfcirc@Vto1)$)
- coordinate (\pgfcirc@a@prefix-Vlab) at ($(\pgfcirc@a@prefix-Vto)!0.5!(\pgfcirc@a@prefix-Vfrom) $)
- % direction line to shift the label later
- coordinate (pgfcirc@Vdir) at (\pgfcirc@a@prefix-Vto)
- \else
- % european voltages here
- coordinate (\pgfcirc@a@prefix-Vto) at ($(pgfcirc@Vto@flat) ! -\absvshift!90 : (pgfcirc@anchorendnode)$)
- coordinate (\pgfcirc@a@prefix-Vfrom) at ($(pgfcirc@Vfrom@flat) ! -\absvshift!-90 : (pgfcirc@anchorstartnode)$)
- % identify the two control points for the "arc" of the voltage
- coordinate (pgfcirc@Vcont1t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.110)$)
- coordinate (pgfcirc@Vcont2t) at ($(\ctikzvalof{bipole/name}.center) ! \bumpb ! (\ctikzvalof{bipole/name}.70)$)
- % and shift them a bit
- coordinate (\pgfcirc@a@prefix-Vcont1) at ($(pgfcirc@Vcont1t) ! \absvshift!90 : (pgfcirc@Vcont2t)$)
- coordinate (\pgfcirc@a@prefix-Vcont2) at ($(pgfcirc@Vcont2t) ! \absvshift!-90 : (pgfcirc@Vcont1t)$)
- coordinate (\pgfcirc@a@prefix-Vlab) at ($(\pgfcirc@a@prefix-Vcont2)!0.5!(\pgfcirc@a@prefix-Vcont1)$)
- % direction line to shift the label later
- coordinate (pgfcirc@Vdir) at (\pgfcirc@a@prefix-Vcont2)
- \fi
- \else
- % we are in case of american here
- coordinate (\pgfcirc@a@prefix-Vto) at ($(pgfcirc@Vto@flat) ! \absvshift!-90 : (pgfcirc@anchorendnode)$)
- coordinate (\pgfcirc@a@prefix-Vfrom) at ($(pgfcirc@Vfrom@flat) ! \absvshift!90 : (pgfcirc@anchorstartnode)$)
- coordinate (pgfcirc@top) at (\ctikzvalof{bipole/name}.90)
- % move parallel to the component line
- coordinate (pgfcirc@Vdir0) at ($(pgfcirc@mid)+(pgfcirc@top)-(pgfcirc@Vfrom@flat)$)
- % and add the extra distance
- coordinate (\pgfcirc@a@prefix-Vlab) at ($(pgfcirc@top) ! \absvshift!90 : (pgfcirc@Vdir0)$)
- coordinate (pgfcirc@Vdir) at ($(pgfcirc@mid)+(\pgfcirc@a@prefix-Vlab)-(pgfcirc@Vfrom@flat)$)
- \ifpgf@circuit@bipole@voltage@raised
- % move the from and to up to the level of Vlab
- coordinate (\pgfcirc@a@prefix-Vto) at ($(\pgfcirc@a@prefix-Vlab)+(pgfcirc@Vto@flat)-(pgfcirc@mid)$)
- coordinate (\pgfcirc@a@prefix-Vfrom) at ($(\pgfcirc@a@prefix-Vlab)+(pgfcirc@Vfrom@flat)-(pgfcirc@mid)$)
- \fi
- \fi
- \fi
- \ifx\@@kind\@@open
- coordinate (\pgfcirc@a@prefix-Vto) at (pgfcirc@Vto@flat)
- coordinate (\pgfcirc@a@prefix-Vfrom) at (pgfcirc@Vfrom@flat)
- \fi
- \ifpgf@circ@debugv
- node [ocirc, fill=red] at (pgfcirc@anchorstartnode) {}
- node [ocirc, fill=blue] at (pgfcirc@anchorendnode) {}
- node [ocirc, fill=green] at (\pgfcirc@a@prefix-Vto) {}
- node [ocirc, fill=yellow] at (\pgfcirc@a@prefix-Vfrom) {}
- node [odiamondpole, fill=green!50!black] at (pgfcirc@Vto@flat) {}
- node [odiamondpole, fill=orange] at (pgfcirc@Vfrom@flat) {}
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@straight
- \else
- node [osquarepole, fill=red] at (\pgfcirc@a@prefix-Vcont1) {}
- node [osquarepole, fill=blue] at (\pgfcirc@a@prefix-Vcont2) {}
- \fi
- \fi
- \fi
-
- %
- % Now we draw the voltage things (only if not empty --- in which case we have been
- % called just to set the anchors)
- %
- \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@straight
- \ifpgf@circuit@bipole@voltage@backward
- (\pgfcirc@a@prefix-Vto) --(\pgfcirc@a@prefix-Vfrom) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
- \else
- (\pgfcirc@a@prefix-Vfrom) --(\pgfcirc@a@prefix-Vto) node[currarrow, sloped, allow upside down, pos=1,anchor=tip] {}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- (\pgfcirc@a@prefix-Vto) .. controls (\pgfcirc@a@prefix-Vcont2) and (\pgfcirc@a@prefix-Vcont1) ..
- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {}
- (\pgfcirc@a@prefix-Vfrom)
- \else
- (\pgfcirc@a@prefix-Vfrom) .. controls (\pgfcirc@a@prefix-Vcont1) and (\pgfcirc@a@prefix-Vcont2) ..
- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {}
- (\pgfcirc@a@prefix-Vto)
- \fi
- \fi
- \else % american
- \ifpgf@circuit@bipole@voltage@backward
- \ifpgf@circ@oldvoltagedirection
- (\pgfcirc@a@prefix-Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- (\pgfcirc@a@prefix-Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- \else
- (\pgfcirc@a@prefix-Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- (\pgfcirc@a@prefix-Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- \fi
- \else
- \ifpgf@circ@oldvoltagedirection
- (\pgfcirc@a@prefix-Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- (\pgfcirc@a@prefix-Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- \else
- (\pgfcirc@a@prefix-Vfrom) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avplus}
- (\pgfcirc@a@prefix-Vto) node[inner sep=0, node font=\pgf@circ@avfont,
- anchor=\pgf@circ@bipole@voltage@label@anchor]{\pgf@circ@avminus}
- \fi
- \fi
- \fi
- \fi % Closing the ...ifempty
-}
-
-%% Output routine for voltage sources
-\def\pgf@circ@drawvoltagegenerator{
- % the following is affected indirectly by voltage/shift, you can move the arrow with voltage/bump a.
- % it's not perfect, but I can't find the way to do it correctly...
- \pgfextra{
- \edef\shiftv{\ctikzvalof{voltage/shift}}
- % distance along the 60-120 axis
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/bump a}
- \pgfkeysifdefined{\pgf@temp}
- {
- \edef\bumpa{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/bump a}}
- }
- {
- \edef\bumpa{\ctikzvalof{voltage/bump a}}
- }
- % additional per-bipole voltage shift (internal)
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/additional shift}
- \pgfkeysifdefined{\pgf@temp}
- {
- \edef\addvshift{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/additional shift}}
- }
- {
- \edef\addvshift{0}
- }
- \pgfmathsetmacro{\bumpaplus}{\bumpa + 0.5*\shiftv} % coefficient added "by feel". Sorry.
- }
- \ifpgf@circuit@bipole@voltage@below
- coordinate (pgfcirc@Vfrom0) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-120)$)
- coordinate (pgfcirc@Vto0) at ($(\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.-60)$)
- coordinate (\pgfcirc@a@prefix-Vfrom) at ($ (pgfcirc@Vfrom0) ! \addvshift! -90: (pgfcirc@Vto0) $)
- coordinate (\pgfcirc@a@prefix-Vto) at ($ (pgfcirc@Vto0) ! \addvshift! 90: (pgfcirc@Vfrom0) $)
- \else
- coordinate (pgfcirc@Vfrom0) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.120)$)
- coordinate (pgfcirc@Vto0) at ($ (\ctikzvalof{bipole/name}.center) ! \bumpaplus ! (\ctikzvalof{bipole/name}.60)$)
- coordinate (\pgfcirc@a@prefix-Vfrom) at ($ (pgfcirc@Vfrom0) ! \addvshift! 90: (pgfcirc@Vto0) $)
- coordinate (\pgfcirc@a@prefix-Vto) at ($ (pgfcirc@Vto0) ! \addvshift! -90: (pgfcirc@Vfrom0) $)
- \fi
- coordinate (\pgfcirc@a@prefix-Vlab) at ($(\pgfcirc@a@prefix-Vto)!0.5!(\pgfcirc@a@prefix-Vfrom) $)
- coordinate (pgfcirc@Vdir) at (\pgfcirc@a@prefix-Vto)
- \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@backward
- (\pgfcirc@a@prefix-Vto) -- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {} (\pgfcirc@a@prefix-Vfrom)
- \else
- (\pgfcirc@a@prefix-Vfrom) -- node[currarrow, sloped, allow upside down, pos=1, anchor=tip] {} (\pgfcirc@a@prefix-Vto)
- \fi
- \else% american voltage
- \ifpgf@circuit@bipole@voltageoutsideofsymbol
- % if it is a battery, must put + and -
-
- \ifpgf@circ@fixbatteries
- \ifpgf@circuit@bipole@voltage@backward
- (\pgfcirc@a@prefix-Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- (\pgfcirc@a@prefix-Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- \else
- (\pgfcirc@a@prefix-Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- (\pgfcirc@a@prefix-Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- \fi
- \else
- \ifpgf@circuit@bipole@voltage@backward
- (\pgfcirc@a@prefix-Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- (\pgfcirc@a@prefix-Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- \else
- (\pgfcirc@a@prefix-Vfrom) node[node font=\pgf@circ@avfont] {\pgf@circ@avplus}
- (\pgfcirc@a@prefix-Vto) node[node font=\pgf@circ@avfont] {\pgf@circ@avminus}
- \fi
- \fi
- \fi
- \fi
- \fi % closes ...ifempty
-}
-
-%% Output routine
-%% this is the entry point
-%%
-%% locally used dimensions
-\newdimen{\pgfcirc@labelshift}
-\newif\ifpgfcirc@v@curved % helper if --- true only if voltages are curved
-\def\pgf@circ@drawvoltage{% node name
- \pgfextra{%
- % set the helper if...curved
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@straight
- \pgfcirc@v@curvedfalse
- \else
- \pgfcirc@v@curvedtrue
- \fi
- \else
- \pgfcirc@v@curvedfalse
- \fi
- % \typeout{V routine called with prefix: \pgfcirc@a@prefix}
- % Label anchors WARNING: indentation is probably wrong
- \edef\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil}
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north west}
- \else
- \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{west}
- \else
- \def\pgf@circ@bipole@voltage@label@anchor{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south west}
- \else \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{south east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{east}
- \else \def\pgf@circ@bipole@voltage@label@anchor{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north east}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >-1 \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >355 \ifnum\pgfcircmathresult <361
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@anchor{north}
- \else\def\pgf@circ@bipole@voltage@label@anchor{south}
- \fi
- \fi\fi
-
- % export anchor position (if not needed, is always the same macro)
- \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix-Vlab-anchor\endcsname{\pgf@circ@bipole@voltage@label@anchor}
- % this must be set *before* changing for mirroring and inverting; in that case
- % the xscale/yscale parameters take it into account
- \ifpgf@circuit@bipole@voltage@below
- \def\pgf@circ@bipole@voltage@label@where{-90}
- \else
- \def\pgf@circ@bipole@voltage@label@where{90}
- \fi
-
- % magic to counteract the scale and yscale effects (there should be a better way...)
- \ifnum \ctikzvalof{mirror value}=-1
- \ifpgf@circuit@bipole@voltage@below
- \pgf@circuit@bipole@voltage@belowfalse
- \else
- \pgf@circuit@bipole@voltage@belowtrue
- \fi
- \fi
-
- \ifpgf@circuit@bipole@inverted
- \ifpgf@circuit@bipole@voltage@below
- \pgf@circuit@bipole@voltage@belowfalse
- \else
- \pgf@circuit@bipole@voltage@belowtrue
- \fi
- \fi
-
- % take into account scaling
- \setscaledRlenforclass
-
- \ifpgf@circuit@europeanvoltage
- \ifpgf@circuit@bipole@voltage@straight
- % check for straight
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/straight label distance}
- \pgfkeysifdefined{\pgf@temp}{%
- \edef\labeldist{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/straight label distance}}%
- % \typeout{ST:ADJUSTED\space for\space \ctikzvalof{bipole/kind} \space at \space \stdist}
- }{\edef\labeldist{\ctikzvalof{voltage/straight label distance}}}
- \ifpgf@circ@debugv\edef\whichtypeshift{STR}\fi
- \else
- % check for european
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/european label distance}
- \pgfkeysifdefined{\pgf@temp}{%
- \edef\labeldist{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/european label distance}}%
- % \typeout{EU:ADJUSTED\space for\space \ctikzvalof{bipole/kind} \space at \space \eudist}
- }{ \edef\labeldist{\ctikzvalof{voltage/european label distance}}}
- \ifpgf@circ@debugv\edef\whichtypeshift{EUR}\fi
- \fi
- \else
- % check for american
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/voltage/american label distance}
- \pgfkeysifdefined{\pgf@temp}{%
- \ifpgf@circuit@bipole@voltage@raised
- % do not apply the shift if we are using raised american style
- \edef\labeldist{1.4}% default value
- \else
- \edef\labeldist{\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/voltage/american label distance}}%
- \fi
- % \typeout{AL:ADJUSTED\space for\space \ctikzvalof{bipole/kind} \space at \space \aldist}
- }{\edef\labeldist{\ctikzvalof{voltage/american label distance}}}
- \ifpgf@circ@debugv\edef\whichtypeshift{AME}\fi
- \fi
- % find the height of the bipole or use a default value
- \edef\pgf@temp{/tikz/circuitikz/bipoles/\ctikzvalof{bipole/kind}/height}
- \pgfkeysifdefined{\pgf@temp}
- {\pgfmathsetmacro{\partheightf}{0.5*\ctikzvalof{bipoles/\ctikzvalof{bipole/kind}/height}}
- \edef\partheight{\partheightf\pgf@circ@scaled@Rlen}}
- {\edef\partheight{(.5\pgf@circ@scaled@Rlen)}} %fallback to fixed value
-
- \ifpgf@circuit@bipole@isvoltage
- \pgfmathsetlength{\pgfcirc@labelshift}{(\labeldist-1.2)*\partheight}
- \else
- \pgfmathsetlength{\pgfcirc@labelshift}{(\labeldist-1.4)*\partheight}
- \fi
- % the value for the european was by default 1.4
- \pgfsetcornersarced{\pgfpointorigin}% do not use rounded corners!
- % set the macro for detecting open
- \edef\@@kind{\ctikzvalof{bipole/kind}}\edef\@@open{open}
- \ifpgf@adjust@open@voltage\else\edef\@@open{this-will-nEver-match}\fi
- % \typeout{KIND\space\@@kind}
- }%end pgfextra
-
- \ifpgf@circuit@bipole@isvoltage
- \pgf@circ@drawvoltagegenerator
- % add fake cont1 and cont2 anchors for export
- coordinate (\pgfcirc@a@prefix-Vcont1) at ($(\pgfcirc@a@prefix-Vfrom) !0.5! (\pgfcirc@a@prefix-Vto)$)
- coordinate (\pgfcirc@a@prefix-Vcont2) at ($(\pgfcirc@a@prefix-Vfrom) !0.5! (\pgfcirc@a@prefix-Vto)$)
- \else
- \pgf@circ@drawvoltagegeneric
- \fi
- % % debugging
- % \pgfextra{%
- % \typeout{LABEL\space KIND:\@@kind\space EU:\the\pgfcirc@eushift\space AL:\the\pgfcirc@alshift\space
- % DIRECTION:\pgf@circ@bipole@voltage@label@where}
- % \pgf@circ@debugvtrue}
-
- % move a bit if requested
- coordinate (\pgfcirc@a@prefix-Vlab) at ($(\pgfcirc@a@prefix-Vlab) ! \pgfcirc@labelshift ! \pgf@circ@bipole@voltage@label@where :(pgfcirc@Vdir)$)
-
- % check for the case of american AND open
- \ifpgf@circuit@europeanvoltage
- \else
- \ifx\@@kind\@@open
- % override pgfcirc@Vlab
- coordinate (\pgfcirc@a@prefix-Vlab) at ($(pgfcirc@Vfrom@flat)!0.5!(pgfcirc@Vto@flat)$)\fi
- \fi
-
- \ifpgf@circ@debugv
- node [odiamondpole, color=blue] at (\pgfcirc@a@prefix-Vlab) {}
- node [odiamondpole, color=red] at (pgfcirc@Vdir) {}
- node [overlay, red, font=\tiny, anchor=south east, align=right] at(pgfcirc@Vdir)
- {\whichtypeshift:\the\pgfcirc@labelshift\\ DIR:\pgf@circ@bipole@voltage@label@where}
- \fi
-
- % put the node only if it's not empty
- \pgf@circ@ifkeyempty{bipole/voltage/label/name}\else
- node [anchor=\pgf@circ@bipole@voltage@label@anchor, inner sep=2pt,
- \circuitikzbasekey/bipole voltage style](\ctikzvalof{bipole/name}voltage)
- at (\pgfcirc@a@prefix-Vlab) {\pgf@circ@finallabels{voltage/label}}
- \fi
-
- \ifpgfcirc@v@curved\else
- % fake Vcont1 and Vcont2 for when they are exported --- in the middle of Vto and Vfrom
- coordinate (\pgfcirc@a@prefix-Vcont1) at ($(\pgfcirc@a@prefix-Vfrom) !0.5! (\pgfcirc@a@prefix-Vto)$)
- coordinate (\pgfcirc@a@prefix-Vcont2) at ($(\pgfcirc@a@prefix-Vfrom) !0.5! (\pgfcirc@a@prefix-Vto)$)
- \fi
- % revert from and to (and c1 - c2) if needed (simpler than rework the positioning above...)
- \ifpgf@circuit@bipole@voltage@backward
- \pgfcirc@swap@coordinates{\pgfcirc@a@prefix-Vfrom}{\pgfcirc@a@prefix-Vto}
- \pgfcirc@swap@coordinates{\pgfcirc@a@prefix-Vcont1}{\pgfcirc@a@prefix-Vcont2}
- \fi
-
-}%end drawvoltages
-%%%---------- close: tex/pgfcircvoltage
-%%%%%%%%%%% Springe nach tex/pgfcirccurrent
-%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Current handling
-
-%% styles
-\ctikzset{bipole current style/.style={}}
-\tikzset{bipole current style/.code={
- \ctikzset{bipole current style/.style={#1}}
-}}
-\tikzset{bipole current append style/.code={
- \ctikzset{bipole current style/.append style={#1}}
-}}
-
-%% Options
-\ctikzset{i^>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_>/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i>^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i>_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i^</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i_</.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i<^/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above
- }
-}
-
-\ctikzset{i<_/.style = {
- i = #1,
- \circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = below
- }
-}
-
-\ctikzset{i/.code = {
- \pgfcirc@has@itrue
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = above }
- \pgfkeys{/tikz/circuitikz/bipole/current/label/name=#1}
- \ctikzsetvalof{bipole/current/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/current/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
- %reverse current direction for voltage sources
- \ifpgf@circ@oldvoltagedirection\else
- \ifpgf@circuit@bipole@isvoltage
- \ifpgf@circuit@bipole@voltage@backward
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = forward,
- \circuitikzbasekey/bipole/current/x position = after,
- \circuitikzbasekey/bipole/current/y position = below }
- \else
- \pgfkeys{\circuitikzbasekey/bipole/current/direction = backward,
- \circuitikzbasekey/bipole/current/x position = before,
- \circuitikzbasekey/bipole/current/y position = above }
- \fi\fi\fi
- }
-}
-
-\ifpgf@circ@oldvoltagedirection
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward } }
-\else
- \ctikzset{i</.style = { i = #1, \circuitikzbasekey/bipole/current/direction = backward, \circuitikzbasekey/bipole/current/x position = before } }
-\fi
-\ctikzset{i_/.style = { i = #1, \circuitikzbasekey/bipole/current/y position = below } }
-\ctikzset{i>/.style = {i = #1, \circuitikzbasekey/bipole/current/direction = forward } }
-\ctikzset{i^/.style = { i= #1, \circuitikzbasekey/bipole/current/y position = above } }
-
-%% Output routine
-\def\pgf@circ@drawcurrent{
- \pgfextra{
- \edef\pgf@circ@rounded@dir{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@rounded@dir\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- \ifnum\pgfcircmathresult >355
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- % export anchor position (if not needed, is always the same macro)
- \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix-Ilab-anchor\endcsname{\pgf@circ@dir}
-
- \ifpgf@circuit@bipole@current@below
- \def\pgf@circ@bipole@current@label@where{-90}
- \else
- \def\pgf@circ@bipole@current@label@where{+90}
- \fi
- }
-
- %
- \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
- \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line
- coordinate (\pgfcirc@a@prefix-Ifrom) at (\tikztostart)
- coordinate (\pgfcirc@a@prefix-Ito) at (\tikztotarget)
- \else% normal bipole or source
- \ifpgf@circuit@bipole@current@before
- coordinate (\pgfcirc@a@prefix-Ifrom) at (\tikztostart)
- coordinate (\pgfcirc@a@prefix-Ito) at (pgfcirc@anchorstartnode)
- \else
- coordinate (\pgfcirc@a@prefix-Ifrom) at (pgfcirc@anchorendnode)
- coordinate (\pgfcirc@a@prefix-Ito) at (\tikztotarget)
- \fi
- \fi
- \ifpgf@circuit@bipole@current@backward
- \pgfextra{
- \pgfmathsubtract{\pgf@circ@rounded@dir}{180}
- \edef\pgf@circ@rounded@dir{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- }
- \fi
- coordinate (\pgfcirc@a@prefix-Ipos) at ($(\pgfcirc@a@prefix-Ifrom)! \ctikzvalof{current/distance} !(\pgfcirc@a@prefix-Ito)$)
- % if the current label is not empty (in which case we have already all the anchors)
- \pgf@circ@ifkeyempty{bipole/current/label/name}\else
- % put the arrow node
- node[currarrow, rotate=\pgf@circ@rounded@dir, anchor=center](Iarrow) at (\pgfcirc@a@prefix-Ipos) {}
- % put the label
- node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole current style]
- (\ctikzvalof{bipole/name}current)
- at (Iarrow.\pgf@circ@bipole@current@label@where){\pgf@circ@finallabels{current/label}}
- \fi % end ifempty
- \ifpgf@circuit@bipole@current@backward
- \pgfcirc@swap@coordinates{\pgfcirc@a@prefix-Ifrom}{\pgfcirc@a@prefix-Ito}
- \fi
-}
-
-%%%---------- close: tex/pgfcirccurrent
-%%%%%%%%%%% Springe nach tex/pgfcircflow
-%%%---------- open: tex/pgfcircflow.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% flow handling
-
-
-%% styles
-\ctikzset{bipole flow style/.style={}}
-\tikzset{bipole flow style/.code={
- \ctikzset{bipole flow style/.style={#1}}
-}}
-\tikzset{bipole flow append style/.code={
- \ctikzset{bipole flow style/.append style={#1}}
-}}
-
-%% Options
-\ctikzset{f^>/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f_>/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f>^/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f>_/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f^</.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f_</.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f<^/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = above
- }
-}
-
-\ctikzset{f<_/.style = {
- f = #1,
- \circuitikzbasekey/bipole/flow/direction = backward,
- \circuitikzbasekey/bipole/flow/x position = before,
- \circuitikzbasekey/bipole/flow/y position = below
- }
-}
-
-\ctikzset{f</.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = backward} }
-\ctikzset{f_/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = below } }
-\ctikzset{f>/.style = { f = #1, \circuitikzbasekey/bipole/flow/direction = forward } }
-\ctikzset{f^/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = above } }
-
-\ctikzset{f/.code = {
- \pgfcirc@has@ftrue
- \pgfkeys{\circuitikzbasekey/bipole/flow/direction = forward,
- \circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/flow/y position = above }
- \pgfkeys{/tikz/circuitikz/bipole/flow/label/name=#1}
- \ctikzsetvalof{bipole/flow/label/unit}{}
- \ifpgf@circ@siunitx
- \pgf@circ@handleSI{#1}
- \ifpgf@circ@siunitx@res
- \edef\pgf@temp{\pgf@circ@handleSI@val}
- \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/name}{\pgf@temp}
- \edef\pgf@temp{\pgf@circ@handleSI@unit}
- \pgfkeyslet{/tikz/circuitikz/bipole/flow/label/unit}{\pgf@temp}
- \else
- \fi
- \else
- \fi
-}
-}
-
-%% Output routine
-
-\def\pgf@circ@drawflow{
- \pgfextra{
- \edef\pgf@circ@rounded@dir{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@rounded@dir\pgf@nil}
-
- \ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north west} \else \def\pgf@circ@dir{south east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >85 \ifnum\pgfcircmathresult <95
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{west} \else \def\pgf@circ@dir{east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >94 \ifnum\pgfcircmathresult <176
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south west}\else \def\pgf@circ@dir{north east}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >175 \ifnum\pgfcircmathresult <185
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south}\else\def\pgf@circ@dir{north}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >184 \ifnum\pgfcircmathresult <266
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{south east}\else\def\pgf@circ@dir{north west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >265 \ifnum\pgfcircmathresult <275
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{east}\else \def\pgf@circ@dir{west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult >274 \ifnum\pgfcircmathresult <356
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north east}\else\def\pgf@circ@dir{south west}
- \fi
- \fi\fi
- \ifnum\pgfcircmathresult <5
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
- \ifnum\pgfcircmathresult >355
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@dir{north}\else\def\pgf@circ@dir{south}
- \fi
- \fi
-
- \ifpgf@circuit@bipole@flow@below
- \def\pgf@circ@bipole@flow@label@where{-90}
- \else
- \def\pgf@circ@bipole@flow@label@where{+90}
- \fi
- % export anchor position (if not needed, is always the same macro)
- \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix-Flab-anchor\endcsname{\pgf@circ@dir}
- }
-
- \pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
- \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line
- coordinate (pgfcirc@Ffrom@flat) at (\tikztostart)
- coordinate (pgfcirc@Fto@flat) at (\tikztotarget)
- \else% normal bipole or source
- \ifpgf@circuit@bipole@flow@before
- coordinate (pgfcirc@Ffrom@flat) at (\tikztostart)
- coordinate (pgfcirc@Fto@flat) at (pgfcirc@anchorstartnode)
- \else
- coordinate (pgfcirc@Ffrom@flat) at (pgfcirc@anchorendnode)
- coordinate (pgfcirc@Fto@flat) at (\tikztotarget)
- \fi
- \fi
- \pgfextra{
- \newdimen{\absfshift}
- \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \absfshift=\flow@offset
- \ifpgf@circuit@bipole@flow@backward
- \pgfmathsubtract{\pgf@circ@rounded@dir}{180}
- \edef\pgf@circ@rounded@dir{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \fi
- }
- \ifpgf@circuit@bipole@flow@below
- coordinate (pgfcirc@Ffrom@up) at ($(pgfcirc@Ffrom@flat) ! \absfshift !-90: (pgfcirc@Fto@flat)$)
- coordinate (pgfcirc@Fto@up) at ($(pgfcirc@Fto@flat) ! \absfshift !90: (pgfcirc@Ffrom@flat)$)
- \else
- coordinate (pgfcirc@Ffrom@up) at ($(pgfcirc@Ffrom@flat) ! \absfshift !90: (pgfcirc@Fto@flat)$)
- coordinate (pgfcirc@Fto@up) at ($(pgfcirc@Fto@flat) ! \absfshift !-90: (pgfcirc@Ffrom@flat)$)
- \fi
- coordinate (\pgfcirc@a@prefix-Fpos) at ($(pgfcirc@Ffrom@up) ! \ctikzvalof{flow/distance} !(pgfcirc@Fto@up)$)
- \pgfextra{
- \absfshift=0.25\pgf@circ@Rlen% This is half size of the "flowarrow" shape!
- }
- coordinate (\pgfcirc@a@prefix-Ffrom) at ($(\pgfcirc@a@prefix-Fpos)!\absfshift!(pgfcirc@Ffrom@up)$)
- coordinate (\pgfcirc@a@prefix-Fto) at ($(\pgfcirc@a@prefix-Fpos)!\absfshift!(pgfcirc@Fto@up) $)
- %
- % coordinate (\pgfcirc@a@prefix-Fpos) at
- % ([yshift=\flow@offset]$(\pgfcirc@a@prefix-Ffrom)! \ctikzvalof{flow/distance} !(\pgfcirc@a@prefix-Fto)$)
- % if the flow label is not empty (in which case we have already all the anchors)
- \pgf@circ@ifkeyempty{bipole/flow/label/name}\else
- % the flow arrow is really a node "flowarrow", not a real arrow
- node[flowarrow, rotate=\pgf@circ@rounded@dir, anchor=center](Farrowpos) at (\pgfcirc@a@prefix-Fpos) {}
-
- node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole flow style]
- (\ctikzvalof{bipole/name}flow) at (Farrowpos.\pgf@circ@bipole@flow@label@where) {\pgf@circ@finallabels{flow/label}}
- \fi
-
- % adjust from and to before exporting --- it's much more simple like this then rework the algorithm above
- \ifpgf@circuit@bipole@flow@backward
- \pgfcirc@swap@coordinates{\pgfcirc@a@prefix-Ffrom}{\pgfcirc@a@prefix-Fto}
- \fi
-
-}
-
-%%%---------- close: tex/pgfcircflow
-
-% notice that the default is nooldvoltagedirection; it's not explicitly set to allow for the warning
-\ExecuteOptions{nofetbodydiode, nofetsolderdot, europeancurrents, europeanvoltages, americanports, americanresistors, cuteinductors ,europeangfsurgearrester, nosiunitx, noarrowmos, smartlabels}
-
-\ProcessOptions\relax
-
-%%%%%%%%%%% Springe nach tex/pgfcircpath
-%%%---------- open: tex/pgfcircpath.tex
-% Copyright 2018-2020 by Romano Giannetti
-% Copyright 2015-2020 by Stefan Lindner
-% Copyright 2013-2020 by Stefan Erhardt
-% Copyright 2007-2020 by Massimo Redaelli
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-
-
-\def\pgf@circ@direction{0.0}
-
-% swap two coordinates
-\def\pgfcirc@swap@coordinates#1#2{%
- coordinate (pgfcirc@tmp@swap) at (#1)
- coordinate (#1) at (#2)
- coordinate (#2) at (pgfcirc@tmp@swap)
-}
-
-% Names
-\ctikzset{name/.style = { n=#1 } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
-\ctikzset{n/.code = {
- \pgfkeys{/tikz/circuitikz/bipole/name=#1}
-}}
-
-% Reflect the node along
-\ctikzset{mirrored/.is choice}
-\ctikzset{mirror value/.initial=1}
-\ctikzset{mirrored/true/.code = {\ctikzsetvalof{mirror value}{-1}} }
-\ctikzset{mirrored/false/.code = {\ctikzsetvalof{mirror value}{1}} }
-\ctikzset{mirror/.style = {/tikz/circuitikz/mirrored=true}}
-
-% Invert node along path
-\ctikzset{inverted/.is choice}
-\ctikzset{invert value/.initial=1}
-\ctikzset{inverted/true/.code = {\ctikzsetvalof{invert value}{-1}\pgf@circuit@bipole@invertedtrue}}
-\ctikzset{inverted/false/.code = {\ctikzsetvalof{invert value}{1}\pgf@circuit@bipole@invertedfalse}}
-\ctikzset{invert/.style = {/tikz/circuitikz/inverted=true}}
-\newif\ifpgf@circuit@bipole@inverted
-\ctikzset{bipole/inverted/.is if=pgf@circuit@bipole@inverted}
-
-\newif\ifpgf@circuit@bipole@voltage@backward
-\ctikzset{bipole/voltage/direction/.is choice}
-\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
-\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
-
-% Initialize paths
-\def\pgfcircresetpath{
- \ctikzset{bipole/name=, bipole/label/name=, bipole/label/position=90, ,bipole/annotation/name=, bipole/annotation/position=-90,
- bipole/inverted=false, bipole/kind=,
- bipole/voltage/direction=backward, bipole/voltage/label/name=, bipole/voltage/position=below,
- bipole/nodes/left=none, bipole/nodes/right=none, bipole/is voltage=false,bipole/is voltageoutsideofsymbol=false,bipole/is strokedsymbol=false,
- bipole/is current=false, bipole/current/label/name=, bipole/current/x position=after,
- bipole/current/y position=above, bipole/current/direction=forward,
- mirrored=false
- }
-}
-
-%
-% expandable IF for the extra nodes (thanks to Henri Menke)
-% see https://chat.stackexchange.com/transcript/message/56560808#56560808
-%
-\def\pgfcirc@if@has@i{%
- \ifpgfcirc@has@i
- \expandafter\pgfutil@firstoftwo
- \else
- \expandafter\pgfutil@secondoftwo
- \fi}
-\def\pgfcirc@if@has@v{%
- \ifpgfcirc@has@v
- \expandafter\pgfutil@firstoftwo
- \else
- \expandafter\pgfutil@secondoftwo
- \fi}
-\def\pgfcirc@if@has@f{%
- \ifpgfcirc@has@f
- \expandafter\pgfutil@firstoftwo
- \else
- \expandafter\pgfutil@secondoftwo
- \fi}
-
-
-
-%% Generic bipole path
-\def\pgf@circ@bipole@path#1#2{
- % Create a bipole path from the shapes defined with \pgfcircdeclarebipole
- % or \pgfcircdeclarebipolescaled; the node shapes are named with a "shape"
- % appended to the main (path-style) name
- % #1 path-style node name
- % #2 the argument passed from the to-path structure; don't touch
- %
- % Example:
- % \def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
- %
- \pgf@circ@bipole@path@base{shape}{}{#1}{#2}
-}
-%
-% this is used for components that are mainly node-style but have a path-style form
-%
-\def\pgfcirc@node@to@path#1#2#3{%
- % add a path-style component based on a node-style one without mangling the name
- % of the shape.
- % #1: node-type shape name (existing)
- % #2: path-type name (to be created)
- % #3: additional options to add to the path style
- %
- \expandafter\def\csname pgf@circ@#1@path\endcsname##1{\pgf@circ@bipole@path@base{}{##1}{#1}{}}%
- \compattikzset{#2/.style = {\circuitikzbasekey,
- /tikz/to path=\csname pgf@circ@#1@path\endcsname{##1},
- #3}}%
- \ctikzset{bipoles/#1/height/.initial=1}%
-}
-%%
-%% ultra-generic bipole path
-%% I am not sure what the last argument is needed for, but don't touch it or everything explodes
-%%
-\def\pgf@circ@bipole@path@base#1#2#3#4{%
- %
- % Create a path-style component based on a node-style shape
- % #1: postfix to be added to the name path to obtain the main shape name
- % #2: text to be passed as text to the node
- % #3: name of the bipole component
- % #4: this will be filled by the argument of the to-path
- %
- \pgfextra{
- \ctikzset{bipole/kind = #3}
- \edef\pgf@temp{\ctikzvalof{bipole/name}}
- \def\pgf@circ@temp{}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = pgfcirc@#3\pgf@circ@rand} % create it (re-usage should not create problem, but...)
- \edef\pgfcirc@a@prefix{pgfcirc}% do not pollute the namespace for nothing
- \else
- \edef\pgfcirc@a@prefix{\ctikzvalof{bipole/name}}% for exporting v-i-f anchors
- \fi
- }
- % save start and stop values
- % notice that we DO NOT MOVE the path position at all!
- coordinate (\ctikzvalof{bipole/name}start) at (\tikztostart)
- coordinate (\ctikzvalof{bipole/name}end) at (\tikztotarget)
- \pgfextra{
- % find the direction (angle) of the path
- \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \edef\pgf@circ@direction{\pgfmathresult}
- \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix-direction\endcsname{\pgf@circ@direction}
- }
- % position the component in the middle of the path. We DO NOT MOVE the current position!
- node[#3#1, rotate=\pgf@circ@direction, yscale=\ctikzvalof{mirror value},
- xscale=\ctikzvalof{invert value}] (\ctikzvalof{bipole/name})
- at ($(\tikztostart) ! .5 ! (\tikztotarget)$) {#2}
- % set start and end labels
- \ifpgf@circuit@bipole@inverted
- \ifcsname pgf@anchor@#3#1@pathstart\endcsname%if special path-anchors are defined, use them!
- coordinate (pgfcirc@anchorstartnode) at (\ctikzvalof{bipole/name}.pathend)
- coordinate (pgfcirc@anchorendnode) at (\ctikzvalof{bipole/name}.pathstart)
- \else
- coordinate (pgfcirc@anchorstartnode) at (\ctikzvalof{bipole/name}.right)
- coordinate (pgfcirc@anchorendnode) at (\ctikzvalof{bipole/name}.left)
- \fi
- \else
- \ifcsname pgf@anchor@#3#1@pathstart\endcsname%if special path-anchors are defined, use them!
- coordinate (pgfcirc@anchorstartnode) at (\ctikzvalof{bipole/name}.pathstart)
- coordinate (pgfcirc@anchorendnode) at (\ctikzvalof{bipole/name}.pathend)
- \else
- coordinate (pgfcirc@anchorstartnode) at (\ctikzvalof{bipole/name}.left)
- coordinate (pgfcirc@anchorendnode) at (\ctikzvalof{bipole/name}.right)
- \fi
- \fi
- % draw the leads unless it's an open circuit
- % stop at the component
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#3}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open do nothing
- \else
- % it is important to start the path with -- to have correct line joins!
- -- (\tikztostart) -- (pgfcirc@anchorstartnode)
- \fi
- % Add all the "ornaments": labels, annotations, voltages, currents and flows
- \drawpoles
- \pgf@circ@ifkeyempty{bipole/label/name}\else\pgf@circ@drawlabels{label}\fi
- \pgf@circ@ifkeyempty{bipole/annotation/name}\else\pgf@circ@drawlabels{annotation}\fi
- % the following must be made in their own path scope to avoid crash in TikZ 3.1.8/3.1.8a
- % it should be logically safe for older version too --- even if TikZ reverted the change
- % use explandable ifs too, thanks to Henri Menke
- {\pgfcirc@if@has@v{\pgf@circ@drawvoltage}{}}%
- {\pgfcirc@if@has@i{\pgf@circ@drawcurrent}{}}%
- {\pgfcirc@if@has@f{\pgf@circ@drawflow}{}}%
- % finish the path from the component to the final target
- % you never know --- re-set \pgf@temp to detect open
- \pgfextra{\def\pgf@temp{open}\def\pgf@circ@temp{#3}}
- \ifx\pgf@temp\pgf@circ@temp % if it is an open do nothing
- (\tikztotarget)
- \else
- (pgfcirc@anchorendnode) -- (\tikztotarget)
- \fi
- % reset internal circuit keys
- \pgfextra{\pgfcircresetpath}
- %draw pending nodes an path
- \tikztonodes
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Handling of terminals
-
-\ctikzset{bipole/nodes/.is family}
-\ctikzset{bipole/nodes/left/.initial=none}
-\ctikzset{bipole/nodes/right/.initial=none}
-\tikzset{bipole nodes/.style n args={2}{%
- \circuitikzbasekey/bipole/nodes/left=#1,
- \circuitikzbasekey/bipole/nodes/right=#2
- }
-}
-
-%% Easily usable styles
-
-\ctikzset{o-o/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{-o/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{o-/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{*-o/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{o-*/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{d-o/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{o-d/.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{*-/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-*/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{d-/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{-d/.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{*-*/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{d-*/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{*-d/.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{d-d/.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-
-% rectjoinfill workarounds
-
-\ctikzset{.-/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=none}}
-\ctikzset{.-*/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=circ}}
-\ctikzset{.-o/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=ocirc}}
-\ctikzset{.-d/.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=diamondpole}}
-\ctikzset{-./.style = {\circuitikzbasekey/bipole/nodes/left=none, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{o-./.style = {\circuitikzbasekey/bipole/nodes/left=ocirc, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{*-./.style = {\circuitikzbasekey/bipole/nodes/left=circ, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{d-./.style = {\circuitikzbasekey/bipole/nodes/left=diamondpole, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-\ctikzset{.-./.style = {\circuitikzbasekey/bipole/nodes/left=rectjoinfill, \circuitikzbasekey/bipole/nodes/right=rectjoinfill}}
-
-\tikzset{reversed/.style = {\circuitikzbasekey/bipole/inverted=true}}
-
-\def\drawpoles{
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/left}} \def\pgf@temp{none}}
- \ifx\pgf@temp\pgf@circ@temp\else(\tikztostart) node[\pgf@circ@temp] {}\fi
- \pgfextra{ \edef\pgf@circ@temp{\ctikzvalof{bipole/nodes/right}} }
- \ifx\pgf@temp\pgf@circ@temp\else(\tikztotarget) node[\pgf@circ@temp] {}\fi
-}
-
-%% Path definitions
-\def\pgf@circ@resistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{generic}{#1}\else\pgf@circ@bipole@path{resistor}{#1}\fi}
-\def\pgf@circ@vresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{tgeneric}{#1}\else\pgf@circ@bipole@path{vresistor}{#1}\fi}
-\def\pgf@circ@sresistor@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{thermistor}{#1}\else\pgf@circ@bipole@path{resistivesens}{#1}\fi}
-\def\pgf@circ@potentiometer@path#1{\ifpgf@circuit@europeanresistor\pgf@circ@bipole@path{genericpotentiometer}{#1}\else\pgf@circ@bipole@path{potentiometer}{#1}\fi}
-\def\pgf@circ@thermistor@path#1{\pgf@circ@bipole@path{thermistor}{#1}}
-\def\pgf@circ@thermistorptc@path#1{\pgf@circ@bipole@path{thermistorptc}{#1}}
-\def\pgf@circ@thermistorntc@path#1{\pgf@circ@bipole@path{thermistorntc}{#1}}
-\def\pgf@circ@varistor@path#1{\pgf@circ@bipole@path{varistor}{#1}}
-\def\pgf@circ@capacitor@path#1{\pgf@circ@bipole@path{capacitor}{#1}}
-\def\pgf@circ@capacitivesens@path#1{\pgf@circ@bipole@path{capacitivesens}{#1}}
-\def\pgf@circ@ecapacitor@path#1{\pgf@circ@bipole@path{ecapacitor}{#1}}
-%% polar capacitor is deprectaed, use curved capacitor instead
-\def\pgf@circ@polarcapacitor@path#1{\pgf@circ@bipole@path{polarcapacitor}{#1}}
-\def\pgf@circ@ccapacitor@path#1{\pgf@circ@bipole@path{ccapacitor}{#1}}
-\def\pgf@circ@vcapacitor@path#1{\pgf@circ@bipole@path{vcapacitor}{#1}}
-\def\pgf@circ@piezoelectric@path#1{\pgf@circ@bipole@path{piezoelectric}{#1}}
-\def\pgf@circ@battery@path#1{\pgf@circ@bipole@path{battery}{#1}}
-\def\pgf@circ@batteryone@path#1{\pgf@circ@bipole@path{battery1}{#1}}
-\def\pgf@circ@batterytwo@path#1{\pgf@circ@bipole@path{battery2}{#1}}
-\def\pgf@circ@europeaninductor@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@americaninductor@path#1{\pgf@circ@bipole@path{americaninductor}{#1}}
-\def\pgf@circ@cuteinductor@path#1{\pgf@circ@bipole@path{cuteinductor}{#1}}
-\def\pgf@circ@cutechoke@path#1{\pgf@circ@bipole@path{cutechoke}{#1}}
-\def\pgf@circ@inductor@path#1{%
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@europeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@cuteinductor@path{#1}%
- \else%
- \pgf@circ@americaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@vinductor@path#1{
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@veuropeaninductor@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@vcuteinductor@path{#1}%
- \else%
- \pgf@circ@vamericaninductor@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@inductivesens@path#1{%
- \pgfextra{
- \edef\pgf@circ@temp{\ctikzvalof{inductor}}%
- \def\pgf@temp{european}%
- }
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@europeaninductivesens@path{#1}%
- \else%
- \pgfextra{ \def\pgf@temp{cute} }%
- \ifx\pgf@temp\pgf@circ@temp%
- \pgf@circ@cuteinductivesens@path{#1}%
- \else%
- \pgf@circ@americaninductivesens@path{#1}%
- \fi%
- \fi%
-}
-\def\pgf@circ@veuropeaninductor@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@vamericaninductor@path#1{\pgf@circ@bipole@path{vamericaninductor}{#1}}
-\def\pgf@circ@vcuteinductor@path#1{\pgf@circ@bipole@path{vcuteinductor}{#1}}
-\def\pgf@circ@europeaninductivesens@path#1{\pgf@circ@bipole@path{sfullgeneric}{#1}}
-\def\pgf@circ@americaninductivesens@path#1{\pgf@circ@bipole@path{samericaninductor}{#1}}
-\def\pgf@circ@cuteinductivesens@path#1{\pgf@circ@bipole@path{scuteinductor}{#1}}
-\def\pgf@circ@lamp@path#1{\pgf@circ@bipole@path{lamp}{#1}}
-\def\pgf@circ@bulb@path#1{\pgf@circ@bipole@path{bulb}{#1}}
-\def\pgf@circ@esource@path#1{\pgf@circ@bipole@path{esource}{#1}}
-\def\pgf@circ@pvsource@path#1{\pgf@circ@bipole@path{pvsource}{#1}}
-\def\pgf@circ@vsource@path#1{\pgf@circ@bipole@path{vsource}{#1}}
-\def\pgf@circ@dcvsource@path#1{\pgf@circ@bipole@path{dcvsource}{#1}}
-\def\pgf@circ@vsourceam@path#1{\pgf@circ@bipole@path{vsourceAM}{#1}}
-\def\pgf@circ@vsourcesin@path#1{\pgf@circ@bipole@path{vsourcesin}{#1}}
-\def\pgf@circ@isource@path#1{\pgf@circ@bipole@path{isource}{#1}}
-\def\pgf@circ@oosource@path#1{\pgf@circ@bipole@path{oosource}{#1}}
-\def\pgf@circ@oosourcetrans@path#1{\pgf@circ@bipole@path{oosourcetrans}{#1}}
-\def\pgf@circ@ooosource@path#1{\pgf@circ@bipole@path{ooosource}{#1}}
-\def\pgf@circ@dcisource@path#1{\pgf@circ@bipole@path{dcisource}{#1}}
-\def\pgf@circ@isourcesin@path#1{\pgf@circ@bipole@path{isourcesin}{#1}}
-\def\pgf@circ@vsourcesquare@path#1{\pgf@circ@bipole@path{vsourcesquare}{#1}}
-\def\pgf@circ@vsourcetri@path#1{\pgf@circ@bipole@path{vsourcetri}{#1}}
-\def\pgf@circ@isourceam@path#1{\pgf@circ@bipole@path{isourceAM}{#1}}
-\def\pgf@circ@ecsource@path#1{\pgf@circ@bipole@path{ecsource}{#1}}
-\def\pgf@circ@cvsource@path#1{\pgf@circ@bipole@path{cvsource}{#1}}
-\def\pgf@circ@cvsourceam@path#1{\pgf@circ@bipole@path{cvsourceAM}{#1}}
-\def\pgf@circ@cvsourcesin@path#1{\pgf@circ@bipole@path{cvsourcesin}{#1}}
-\def\pgf@circ@cisource@path#1{\pgf@circ@bipole@path{cisource}{#1}}
-\def\pgf@circ@cisourceam@path#1{\pgf@circ@bipole@path{cisourceAM}{#1}}
-\def\pgf@circ@cisourcesin@path#1{\pgf@circ@bipole@path{cisourcesin}{#1}}
-\def\pgf@circ@short@path#1{\pgf@circ@bipole@path{short}{#1}}
-\def\pgf@circ@cspst@path#1{\pgf@circ@bipole@path{cspst}{#1}}
-\def\pgf@circ@ospst@path#1{\pgf@circ@bipole@path{ospst}{#1}}
-\def\pgf@circ@nos@path#1{\pgf@circ@bipole@path{nos}{#1}}
-\def\pgf@circ@ncs@path#1{\pgf@circ@bipole@path{ncs}{#1}}
-\def\pgf@circ@pushbutton@path#1{\pgf@circ@bipole@path{pushbutton}{#1}}
-\def\pgf@circ@ncpushbutton@path#1{\pgf@circ@bipole@path{ncpushbutton}{#1}}
-\def\pgf@circ@pushbuttonc@path#1{\pgf@circ@bipole@path{pushbuttonc}{#1}}
-\def\pgf@circ@ncpushbuttono@path#1{\pgf@circ@bipole@path{ncpushbuttono}{#1}}
-\def\pgf@circ@open@path#1{\pgf@circ@bipole@path{open}{#1}}
-\def\pgf@circ@generic@path#1{\pgf@circ@bipole@path{generic}{#1}}
-\def\pgf@circ@ageneric@path#1{\pgf@circ@bipole@path{ageneric}{#1}}
-\def\pgf@circ@tgeneric@path#1{\pgf@circ@bipole@path{tgeneric}{#1}}
-\def\pgf@circ@xgeneric@path#1{\pgf@circ@bipole@path{xgeneric}{#1}}
-\def\pgf@circ@fullgeneric@path#1{\pgf@circ@bipole@path{fullgeneric}{#1}}
-\def\pgf@circ@tfullgeneric@path#1{\pgf@circ@bipole@path{tfullgeneric}{#1}}
-\def\pgf@circ@ammeter@path#1{\pgf@circ@bipole@path{ammeter}{#1}}
-\def\pgf@circ@ohmmeter@path#1{\pgf@circ@bipole@path{ohmmeter}{#1}}
-\def\pgf@circ@voltmeter@path#1{\pgf@circ@bipole@path{voltmeter}{#1}}
-\def\pgf@circ@oscope@path#1{\pgf@circ@bipole@path{oscope}{#1}}
-\def\pgf@circ@empty@path#1{}
-\def\pgf@circ@photoresistor@path#1{\pgf@circ@bipole@path{photoresistor}{#1}}
-\def\pgf@circ@emptythyristor@path#1{\pgf@circ@bipole@path{emptythyristor}{#1}}
-\def\pgf@circ@fullthyristor@path#1{\pgf@circ@bipole@path{fullthyristor}{#1}}
-\def\pgf@circ@toggleswitch@path#1{\pgf@circ@bipole@path{toggleswitch}{#1}}
-\def\pgf@circ@memristor@path#1{\pgf@circ@bipole@path{memristor}{#1}}
-\def\pgf@circ@emptytriac@path#1{\pgf@circ@bipole@path{emptytriac}{#1}}
-\def\pgf@circ@fulltriac@path#1{\pgf@circ@bipole@path{fulltriac}{#1}}
-\def\pgf@circ@tline@path#1{\pgf@circ@bipole@path{tline}{#1}}
-\def\pgf@circ@mstline@path#1{\pgf@circ@bipole@path{mstline}{#1}}
-\def\pgf@circ@squid@path#1{\pgf@circ@bipole@path{squid}{#1}}
-\def\pgf@circ@barrier@path#1{\pgf@circ@bipole@path{barrier}{#1}}
-\def\pgf@circ@openbarrier@path#1{\pgf@circ@bipole@path{openbarrier}{#1}}
-\def\pgf@circ@thermocouple@path#1{\pgf@circ@bipole@path{thermocouple}{#1}}
-\def\pgf@circ@fuse@path#1{\pgf@circ@bipole@path{fuse}{#1}}
-\def\pgf@circ@afuse@path#1{\pgf@circ@bipole@path{afuse}{#1}}
-
-\def\pgf@circ@gfsurgearrester@path#1{\ifpgf@circuit@europeangfsurgearrester\pgf@circ@europeangfsurgearrester@path{#1}\else\pgf@circ@americangfsurgearrester@path{#1}\fi}
-\def\pgf@circ@europeangfsurgearrester@path#1{\pgf@circ@bipole@path{european gas filled surge arrester}{#1}}
-\def\pgf@circ@americangfsurgearrester@path#1{\pgf@circ@bipole@path{american gas filled surge arrester}{#1}}
-
-\def\pgf@circ@twoport@path#1{\pgf@circ@bipole@path{twoport}{#1}}
-\def\pgf@circ@twoportsplit@path#1{\pgf@circ@bipole@path{twoportsplit}{#1}}
-\def\pgf@circ@vco@path#1{\pgf@circ@bipole@path{vco}{#1}}
-\def\pgf@circ@bandpass@path#1{\pgf@circ@bipole@path{bandpass}{#1}}
-\def\pgf@circ@bandstop@path#1{\pgf@circ@bipole@path{bandstop}{#1}}
-\def\pgf@circ@highpass@path#1{\pgf@circ@bipole@path{highpass}{#1}}
-\def\pgf@circ@lowpass@path#1{\pgf@circ@bipole@path{lowpass}{#1}}
-\def\pgf@circ@allpass@path#1{\pgf@circ@bipole@path{allpass}{#1}}
-\def\pgf@circ@adc@path#1{\pgf@circ@bipole@path{adc}{#1}}
-\def\pgf@circ@dac@path#1{\pgf@circ@bipole@path{dac}{#1}}
-\def\pgf@circ@dsp@path#1{\pgf@circ@bipole@path{dsp}{#1}}
-\def\pgf@circ@fft@path#1{\pgf@circ@bipole@path{fft}{#1}}
-\def\pgf@circ@amp@path#1{\pgf@circ@bipole@path{amp}{#1}}
-\def\pgf@circ@vamp@path#1{\pgf@circ@bipole@path{vamp}{#1}}
-\def\pgf@circ@piattenuator@path#1{\pgf@circ@bipole@path{piattenuator}{#1}}
-\def\pgf@circ@vpiattenuator@path#1{\pgf@circ@bipole@path{vpiattenuator}{#1}}
-\def\pgf@circ@tattenuator@path#1{\pgf@circ@bipole@path{tattenuator}{#1}}
-\def\pgf@circ@vtattenuator@path#1{\pgf@circ@bipole@path{vtattenuator}{#1}}
-\def\pgf@circ@phaseshifter@path#1{\pgf@circ@bipole@path{phaseshifter}{#1}}
-\def\pgf@circ@vphaseshifter@path#1{\pgf@circ@bipole@path{vphaseshifter}{#1}}
-\def\pgf@circ@detector@path#1{\pgf@circ@bipole@path{detector}{#1}}
-%
-\def\pgf@circ@sacdc@path#1{\pgf@circ@bipole@path{sacdc}{#1}}
-\def\pgf@circ@sdcac@path#1{\pgf@circ@bipole@path{sdcac}{#1}}
-\def\pgf@circ@tacdc@path#1{\pgf@circ@bipole@path{tacdc}{#1}}
-\def\pgf@circ@tdcac@path#1{\pgf@circ@bipole@path{tdcac}{#1}}
-
-%%Mechanical
-\def\pgf@circ@spring@path#1{\pgf@circ@bipole@path{spring}{#1}}
-\def\pgf@circ@inerter@path#1{\pgf@circ@bipole@path{inerter}{#1}}
-\def\pgf@circ@mass@path#1{\pgf@circ@bipole@path{mass}{#1}}
-\def\pgf@circ@damper@path#1{\pgf@circ@bipole@path{damper}{#1}}
-\def\pgf@circ@viscoe@path#1{\pgf@circ@bipole@path{viscoe}{#1}}
-
-%% Styles
-
-\def\comnpatname{\ifpgf@circuit@compat *\else\fi}
-\def\compattikzset#1{%
- % \typeout{BIPOLEDEF:\space \detokenize{#1}}%
- \tikzset{\comnpatname#1}}
-
-%\def\ctikzsetbipole#1#2{%
-% \tikzset{#1/.style= {to path=#2, \circuitikzbasekey, l=##1}}%
-%}
-
-\compattikzset{spring/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@spring@path, l=#1}}
-\compattikzset{inerter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inerter@path, l=#1}}
-\compattikzset{mass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mass@path, l=#1}}
-\compattikzset{damper/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@damper@path, l=#1}}
-\compattikzset{viscoe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@viscoe@path, l=#1}}
-\compattikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
-\compattikzset{american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{resistor}{#1}, l=#1}}
-\compattikzset{european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{generic}{#1}, l=#1}}
-\compattikzset{potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@potentiometer@path, l=#1}}
-\compattikzset{varistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@varistor@path, l=#1}}
-\compattikzset{photoresistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@photoresistor@path, l=#1}}
-\compattikzset{thermistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistor@path, l=#1}}
-\compattikzset{thermistor ptc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorptc@path, l=#1}}
-\compattikzset{thermistor ntc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
-\compattikzset{american potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{potentiometer}{#1}, l=#1}}
-\compattikzset{european potentiometer/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{genericpotentiometer}{#1}, l=#1}}
-\compattikzset{variable resistor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vresistor@path, l=#1}}
-\compattikzset{variable american resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{vresistor}{#1}, l=#1}}
-\compattikzset{variable european resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@bipole@path{tgeneric}{#1}, l=#1}}
-\compattikzset{capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitor@path, l=#1}}
-\compattikzset{elko/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-\compattikzset{ecapacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecapacitor@path, l=#1}}
-% polar capacitor is deprecated, use curved capacitor instead
-\compattikzset{polar capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@polarcapacitor@path, l=#1}}
-\compattikzset{curved capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ccapacitor@path, l=#1}}
-\compattikzset{variable capacitor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcapacitor@path, l=#1}}
-\compattikzset{piezoelectric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piezoelectric@path, l=#1}}
-\compattikzset{battery/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@battery@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{battery1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batteryone@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{battery2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@batterytwo@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductor@path, l=#1}}
-\compattikzset{gf surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americangfsurgearrester@path, l=#1}}
-\compattikzset{european gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeangfsurgearrester@path, l=#1}}
-\compattikzset{gas filled surge arrester/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@gfsurgearrester@path, l=#1}}
-\compattikzset{american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductor@path, l=#1}}
-\compattikzset{cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductor@path, l=#1}}
-\compattikzset{cute choke/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cutechoke@path, l=#1}}
-\compattikzset{european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductor@path, l=#1}}
-\compattikzset{variable inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vinductor@path, l=#1}}
-\compattikzset{variable european inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@veuropeaninductor@path, l=#1}}
-\compattikzset{variable american inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamericaninductor@path, l=#1}}
-\compattikzset{variable cute inductor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vcuteinductor@path, l=#1}}
-\compattikzset{tline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tline@path, l=#1}}
-\compattikzset{transmission line/.style = {tline = #1}}
-\compattikzset{TL/.style = {tline = #1}}
-\compattikzset{mstline/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mstline@path, l=#1}}
-\compattikzset{european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{empty controlled source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ecsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsource@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{american controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceam@path, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisource@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{american controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceam@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{square voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcesquare@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{triangle voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourcetri@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1 }}
-\compattikzset{sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{controlled sinusoidal voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourcesin@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{controlled sinusoidal current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourcesin@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-
-\compattikzset{voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi current source = #1, \circuitikzbasekey/bipole/is current=true}}
-\compattikzset{controlled voltage source/.style = {\comnpatname \ifpgf@circuit@europeanvoltage european \else american \fi controlled voltage source, \circuitikzbasekey/bipole/is voltage=true, v=#1}}
-\compattikzset{controlled current source/.style = {\comnpatname \ifpgf@circuit@europeancurrent european \else american \fi controlled current source = #1, \circuitikzbasekey/bipole/is current=true}}
-
-
-\compattikzset{generic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@generic@path, l=#1}}
-\compattikzset{xgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@xgeneric@path, l=#1}}
-\compattikzset{ageneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ageneric@path, l=#1}}
-\compattikzset{tgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tgeneric@path, l=#1}}
-\compattikzset{fullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullgeneric@path, l=#1}}
-\compattikzset{tfullgeneric/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tfullgeneric@path, l=#1}}
-\compattikzset{short/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@short@path}}
-\compattikzset{open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@open@path}}
-
-\compattikzset{lamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lamp@path}}
-\compattikzset{bulb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bulb@path, l=#1}}
-
-\compattikzset{squid/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@squid@path}}
-\compattikzset{barrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@barrier@path}}
-\compattikzset{openbarrier/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@openbarrier@path}}
-\compattikzset{thermocouple/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermocouple@path}}
-\compattikzset{fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fuse@path}}
-\compattikzset{asymmetric fuse/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@afuse@path}}
-
-\compattikzset{twoport/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoport@path}}
-\compattikzset{twoportsplit/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@twoportsplit@path}}
-\compattikzset{vco/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vco@path}}
-\compattikzset{bandpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandpass@path}}
-\compattikzset{bandstop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@bandstop@path}}
-\compattikzset{highpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@highpass@path}}
-\compattikzset{lowpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@lowpass@path}}
-\compattikzset{allpass/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@allpass@path}}
-\compattikzset{adc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@adc@path}}
-\compattikzset{dac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dac@path}}
-\compattikzset{dsp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dsp@path}}
-\compattikzset{fft/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fft@path}}
-\compattikzset{amp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@amp@path}}
-\compattikzset{vamp/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vamp@path}}
-\compattikzset{piattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@piattenuator@path}}
-\compattikzset{vpiattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vpiattenuator@path}}
-\compattikzset{tattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tattenuator@path}}
-\compattikzset{vtattenuator/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vtattenuator@path}}
-\compattikzset{phaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@phaseshifter@path}}
-\compattikzset{vphaseshifter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vphaseshifter@path}}
-\compattikzset{detector/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@detector@path}}
-%
-\compattikzset{sacdc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@sacdc@path, l=#1}}
-\compattikzset{sdcac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@sdcac@path, l=#1}}
-\compattikzset{tacdc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tacdc@path, l=#1}}
-\compattikzset{tdcac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@tdcac@path, l=#1}}
-
-% % % % % %
-% % Begin of Diodes
-% % % % % %
-
-\def\pgf@circ@fulldiode@path#1{\pgf@circ@bipole@path{fulldiode}{#1}}
-\def\pgf@circ@fullzdiode@path#1{\pgf@circ@bipole@path{fullzdiode}{#1}}
-\def\pgf@circ@fullzzdiode@path#1{\pgf@circ@bipole@path{fullzzdiode}{#1}}
-\def\pgf@circ@fullsdiode@path#1{\pgf@circ@bipole@path{fullsdiode}{#1}}
-\def\pgf@circ@fulltdiode@path#1{\pgf@circ@bipole@path{fulltdiode}{#1}}
-\def\pgf@circ@fulllediode@path#1{\pgf@circ@bipole@path{fulllediode}{#1}}
-\def\pgf@circ@fullpdiode@path#1{\pgf@circ@bipole@path{fullpdiode}{#1}}
-\def\pgf@circ@fullvarcap@path#1{\pgf@circ@bipole@path{fullvarcap}{#1}}
-\def\pgf@circ@fullbidirectionaldiode@path#1{\pgf@circ@bipole@path{fullbidirectionaldiode}{#1}}
-\def\pgf@circ@emptydiode@path#1{\pgf@circ@bipole@path{emptydiode}{#1}}
-\def\pgf@circ@emptyzdiode@path#1{\pgf@circ@bipole@path{emptyzdiode}{#1}}
-\def\pgf@circ@emptyzzdiode@path#1{\pgf@circ@bipole@path{emptyzzdiode}{#1}}
-\def\pgf@circ@emptysdiode@path#1{\pgf@circ@bipole@path{emptysdiode}{#1}}
-\def\pgf@circ@emptytdiode@path#1{\pgf@circ@bipole@path{emptytdiode}{#1}}
-\def\pgf@circ@emptylediode@path#1{\pgf@circ@bipole@path{emptylediode}{#1}}
-\def\pgf@circ@emptypdiode@path#1{\pgf@circ@bipole@path{emptypdiode}{#1}}
-\def\pgf@circ@emptyvarcap@path#1{\pgf@circ@bipole@path{emptyvarcap}{#1}}
-\def\pgf@circ@emptybidirectionaldiode@path#1{\pgf@circ@bipole@path{emptybidirectionaldiode}{#1}}
-
-\compattikzset{full diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulldiode@path}}
-\compattikzset{full Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullsdiode@path}}
-\compattikzset{full Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzdiode@path}}
-\compattikzset{full ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullzzdiode@path}}
-\compattikzset{full tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltdiode@path}}
-\compattikzset{full photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullpdiode@path}}
-\compattikzset{full led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulllediode@path}}
-\compattikzset{full varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullvarcap@path}}
-\compattikzset{full bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullbidirectionaldiode@path}}
-\compattikzset{full thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fullthyristor@path}}
-\compattikzset{full triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@fulltriac@path}}
-
-\compattikzset{empty diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{empty Schottky diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{empty Zener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{empty ZZener diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{empty tunnel diode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{empty photodiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{empty led/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{empty varcap/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{empty bidirectionaldiode/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptybidirectionaldiode@path}}
-\compattikzset{empty thyristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptythyristor@path}}
-\compattikzset{empty triac/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\compattikzset{stroke diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptydiode@path}}
-\compattikzset{stroke Schottky diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptysdiode@path}}
-\compattikzset{stroke Zener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzdiode@path}}
-\compattikzset{stroke ZZener diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyzzdiode@path}}
-\compattikzset{stroke tunnel diode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytdiode@path}}
-\compattikzset{stroke photodiode/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptypdiode@path}}
-\compattikzset{stroke led/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptylediode@path}}
-\compattikzset{stroke varcap/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptyvarcap@path}}
-\compattikzset{stroke thyristor/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptythyristor@path}}
-%\compattikzset{stroke triac/.style = {\circuitikzbasekey,\circuitikzbasekey/bipole/is strokedsymbol=true, /tikz/to path=\pgf@circ@emptytriac@path}}
-
-\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
-
-\compattikzset{Schottky diode/.style = {\comnpatname \pgfcircdiodestylemacro Schottky diode}}
-\compattikzset{Zener diode/.style = {\comnpatname \pgfcircdiodestylemacro Zener diode}}
-\compattikzset{ZZener diode/.style = {\comnpatname \pgfcircdiodestylemacro ZZener diode}}
-\compattikzset{tunnel diode/.style = {\comnpatname \pgfcircdiodestylemacro tunnel diode}}
-\compattikzset{photodiode/.style = {\comnpatname \pgfcircdiodestylemacro photodiode}}
-\compattikzset{led/.style = {\comnpatname \pgfcircdiodestylemacro led}}
-\compattikzset{varcap/.style = {\comnpatname \pgfcircdiodestylemacro varcap}}
-\compattikzset{diode/.style = {\comnpatname \pgfcircdiodestylemacro diode}}
-\compattikzset{thyristor/.style = {\comnpatname \pgfcircdiodestylemacro thyristor}}
-\compattikzset{triac/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi triac}}%no stroke triac!
-\compattikzset{bidirectionaldiode/.style = {\comnpatname \ifpgf@circuit@fulldiode full \else empty \fi bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
-
-%% Define Shortcuts
-\compattikzset{Do/.style = {\comnpatname empty diode}}
-\compattikzset{tDo/.style = {\comnpatname empty tunnel diode}}
-\compattikzset{zDo/.style = {\comnpatname empty Zener diode}}
-\compattikzset{zzDo/.style = {\comnpatname empty ZZener diode}}
-\compattikzset{sDo/.style = {\comnpatname empty Schottky diode}}
-\compattikzset{pDo/.style = {\comnpatname empty photodiode}}
-\compattikzset{leDo/.style = {\comnpatname empty led}}
-\compattikzset{VCo/.style = {\comnpatname empty varcap}}
-\compattikzset{biDo/.style = {\comnpatname empty bidirectionaldiode}}
-\compattikzset{Tyo/.style = {\comnpatname empty thyristor}}
-\compattikzset{Tro/.style = {\comnpatname empty triac}}
-
-\compattikzset{D*/.style = {\comnpatname full diode}}
-\compattikzset{tD*/.style = {\comnpatname full tunnel diode}}
-\compattikzset{zD*/.style = {\comnpatname full Zener diode}}
-\compattikzset{zzD*/.style = {\comnpatname full ZZener diode}}
-\compattikzset{sD*/.style = {\comnpatname full Schottky diode}}
-\compattikzset{pD*/.style = {\comnpatname full photodiode}}
-\compattikzset{leD*/.style = {\comnpatname full led}}
-\compattikzset{VC*/.style = {\comnpatname full varcap}}
-\compattikzset{biD*/.style = {\comnpatname full bidirectionaldiode}}
-\compattikzset{Ty*/.style = {\comnpatname full thyristor}}
-\compattikzset{Tr*/.style = {\comnpatname full triac}}
-
-\compattikzset{D/.style = {\comnpatname diode}}
-\compattikzset{tD/.style = {\comnpatname tunnel diode}}
-\compattikzset{zD/.style = {\comnpatname Zener diode}}
-\compattikzset{zzD/.style = {\comnpatname ZZener diode}}
-\compattikzset{sD/.style = {\comnpatname Schottky diode}}
-\compattikzset{pD/.style = {\comnpatname photodiode}}
-\compattikzset{leD/.style = {\comnpatname led}}
-\compattikzset{VC/.style = {\comnpatname varcap}}
-\compattikzset{biD/.style = {\comnpatname bidirectionaldiode}}
-\compattikzset{Ty/.style = {\comnpatname thyristor}}
-\compattikzset{Tr/.style = {\comnpatname triac}}
-
-\compattikzset{D-/.style = {\comnpatname stroke diode}}
-\compattikzset{tD-/.style = {\comnpatname stroke tunnel diode}}
-\compattikzset{zD-/.style = {\comnpatname stroke Zener diode}}
-\compattikzset{zzD-/.style = {\comnpatname stroke ZZener diode}}
-\compattikzset{sD-/.style = {\comnpatname stroke Schottky diode}}
-\compattikzset{pD-/.style = {\comnpatname stroke photodiode}}
-\compattikzset{leD-/.style = {\comnpatname stroke led}}
-\compattikzset{VC-/.style = {\comnpatname stroke varcap}}
-\compattikzset{Ty-/.style = {\comnpatname stroke thyristor}}
-\compattikzset{Tr-/.style = {\comnpatname empty triac}}%no stroke triac!
-\compattikzset{biD-/.style = {\comnpatname empty bidirectionaldiode}}%no stroke bidirectionaldiode! (based on triac)
-
-% % % % % %
-% % End of Diodes
-% % % % % %
-
-
-\compattikzset{memristor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@memristor@path}}
-\compattikzset{closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
-\compattikzset{opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ospst@path, l=#1}}
-\compattikzset{ncs/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
-\compattikzset{nos/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
-\compattikzset{normal closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncs@path, l=#1}}
-\compattikzset{normal open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@nos@path, l=#1}}
-\compattikzset{switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cspst@path, l=#1}}
-\compattikzset{push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{nopb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{normally open push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbutton@path, l=#1}}
-\compattikzset{ncpb/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
-\compattikzset{normally closed push button/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbutton@path, l=#1}}
-\compattikzset{nopbc/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbuttonc@path, l=#1}}
-\compattikzset{normally open push button closed/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pushbuttonc@path, l=#1}}
-\compattikzset{ncpbo/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbuttono@path, l=#1}}
-\compattikzset{normally closed push button open/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ncpushbuttono@path, l=#1}}
-\compattikzset{toggle switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@toggleswitch@path}}
-
-\compattikzset{ammeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ammeter@path}}
-\compattikzset{voltmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@voltmeter@path}}
-\compattikzset{ohmmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@ohmmeter@path}}
-\tikzset{oscope/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@oscope@path, l=#1}}
-
-% cute switches
-%% closed cute switch
-\def\pgf@circ@cuteclosedswitch@path#1{\pgf@circ@bipole@path{cuteclosedswitch}{#1}}
-\compattikzset{cute closed switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosedswitch@path, l=#1}}
-\compattikzset{ccsw/.style= {\comnpatname cute closed switch= #1}}
-
-%% open cute switch
-\def\pgf@circ@cuteopenswitch@path#1{\pgf@circ@bipole@path{cuteopenswitch}{#1}}
-\compattikzset{cute open switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopenswitch@path, l=#1}}
-\compattikzset{cosw/.style= {\comnpatname cute open switch= #1}}
-
-%% closing cute switch
-\def\pgf@circ@cuteclosingswitch@path#1{\pgf@circ@bipole@path{cuteclosingswitch}{#1}}
-\compattikzset{cute closing switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteclosingswitch@path, l=#1}}
-\compattikzset{ccgsw/.style= {\comnpatname cute closing switch= #1}}
-
-%% opening cute switch
-\def\pgf@circ@cuteopeningswitch@path#1{\pgf@circ@bipole@path{cuteopeningswitch}{#1}}
-\compattikzset{cute opening switch/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteopeningswitch@path, l=#1}}
-\compattikzset{cogsw/.style= {\comnpatname cute opening switch= #1}}
-
-
-% short forms
-\compattikzset{esource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@esource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{pvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@pvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcvsource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcvsource@path, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{dcisource/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@dcisource@path, \circuitikzbasekey/bipole/is current=true, l=#1}}
-
-\compattikzset{ioosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is current=true,/tikz/to path=\pgf@circ@oosource@path, i=#1}}
-\compattikzset{voosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, /tikz/to path=\pgf@circ@oosource@path, v=#1}}
-\compattikzset{oosourcetrans/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, /tikz/to path=\pgf@circ@oosourcetrans@path, v=#1}}
-\compattikzset{ooosource/.style = {\circuitikzbasekey, \circuitikzbasekey/bipole/is voltage=true,\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, /tikz/to path=\pgf@circ@ooosource@path, v=#1}}
-
-\compattikzset{vsource/.style = {\comnpatname voltage source = #1}}
-\compattikzset{isource/.style = {\comnpatname current source = #1}}
-\compattikzset{cisource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{ecsource/.style = {\comnpatname empty controlled source = #1}}
-\compattikzset{cvsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{vsourcesin/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{vsourcesquare/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{vsourcetri/.style = {triangle voltage source = #1}}
-\compattikzset{isourcesin/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{cisourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\compattikzset{cvsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-
-\compattikzset{controlled vsource/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{controlled isource/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{controlled vsourcesin/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\compattikzset{controlled isourcesin/.style = {\comnpatname controlled sinusoidal current source = #1}}
-
-\compattikzset{R/.style= {\comnpatname resistor = #1}}
-\compattikzset{vR/.style= {\comnpatname variable resistor = #1}}
-\compattikzset{phR/.style= {\comnpatname photoresistor = #1}}
-\compattikzset{thR/.style= {\comnpatname thermistor = #1}}
-\compattikzset{thRp/.style= {\comnpatname thermistor ptc= #1}}
-\compattikzset{thRn/.style= {\comnpatname thermistor ntc= #1}}
-\compattikzset{pR/.style= {\comnpatname potentiometer = #1}}
-\compattikzset{C/.style = {\comnpatname capacitor = #1}}
-\compattikzset{eC/.style = {\comnpatname ecapacitor = #1}}
-%% pC is deprecated, use cC instead
-\compattikzset{pC/.style = {\comnpatname polar capacitor = #1}}
-\compattikzset{cC/.style = {\comnpatname curved capacitor = #1}}
-\compattikzset{vC/.style = {\comnpatname variable capacitor = #1}}
-\compattikzset{PZ/.style = {\comnpatname piezoelectric = #1}}
-\compattikzset{L/.style = {\comnpatname inductor = #1}}
-\compattikzset{vL/.style = {\comnpatname variable inductor = #1}}
-\compattikzset{V/.style = {\comnpatname voltage source = #1}}
-\compattikzset{cV/.style = {\comnpatname controlled voltage source = #1}}
-\compattikzset{sV/.style = {\comnpatname sinusoidal voltage source = #1}}
-\compattikzset{sqV/.style = {\comnpatname square voltage source = #1}}
-\compattikzset{tV/.style = {\comnpatname triangle voltage source = #1}}
-\compattikzset{csV/.style = {\comnpatname controlled sinusoidal voltage source = #1}}
-\def\pgf@temp#1{
- \compattikzset{V#1/.style = {\comnpatname voltage source, v#1=##1} }
- \compattikzset{cV#1/.style = {\comnpatname controlled voltage source, v#1=##1} }
- \compattikzset{sV#1/.style = {\comnpatname sinusoidal voltage source, v#1=##1} }
- \compattikzset{csV#1/.style = {\comnpatname controlled sinusoidal voltage source, v#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-
-%current sources
-\compattikzset{I/.style = {\comnpatname current source = #1}}
-\compattikzset{cI/.style = {\comnpatname controlled current source = #1}}
-\compattikzset{sI/.style = {\comnpatname sinusoidal current source = #1}}
-\compattikzset{csI/.style = {\comnpatname controlled sinusoidal current source = #1}}
-\def\pgf@temp#1{
- \compattikzset{I#1/.style = {\comnpatname current source, i#1=##1} }
- \compattikzset{cI#1/.style = {\comnpatname controlled current source, i#1=##1} }
- \compattikzset{sI#1/.style = {\comnpatname sinusoidal current source, i#1=##1} }
- \compattikzset{csI#1/.style = {\comnpatname controlled sinusoidal current source, i#1=##1} }
-}
-\pgf@temp{_>} \pgf@temp{_<} \pgf@temp{^>} \pgf@temp{^<}
-\pgf@temp{>_} \pgf@temp{<_} \pgf@temp{>^} \pgf@temp{<^}
-\pgf@temp{>} \pgf@temp{<} \pgf@temp{^} \pgf@temp{_}
-
-% cute sources
-\def\pgf@circ@vsourceC@path#1{\pgf@circ@bipole@path{vsourceC}{#1}}
-\compattikzset{cute european voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{vsourceC/.style= {\comnpatname cute european voltage source= #1}}
-\compattikzset{ceV/.style= {\comnpatname cute european voltage source= #1}}
-
-\def\pgf@circ@isourceC@path#1{\pgf@circ@bipole@path{isourceC}{#1}}
-\compattikzset{cute european current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{isourceC/.style= {\comnpatname cute european current source= #1}}
-\compattikzset{ceI/.style= {\comnpatname cute european current source= #1}}
-
-\def\pgf@circ@cvsourceC@path#1{\pgf@circ@bipole@path{cvsourceC}{#1}}
-\compattikzset{cute european controlled voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cvsourceC@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{cvsourceC/.style= {\comnpatname cute european controlled voltage source= #1}}
-\compattikzset{cceV/.style= {\comnpatname cute european controlled voltage source= #1}}
-
-\def\pgf@circ@cisourceC@path#1{\pgf@circ@bipole@path{cisourceC}{#1}}
-\compattikzset{cute european controlled current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cisourceC@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{cisourceC/.style= {\comnpatname cute european controlled current source= #1}}
-\compattikzset{cceI/.style= {\comnpatname cute european controlled current source= #1}}
-
-% noise sources
-\def\pgf@circ@vsourceN@path#1{\pgf@circ@bipole@path{vsourceN}{#1}}
-\compattikzset{noise voltage source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@vsourceN@path, \circuitikzbasekey/bipole/is voltage=true, \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true, v=#1}}
-\compattikzset{vsourceN/.style= {\comnpatname noise voltage source= #1}}
-\compattikzset{nV/.style= {\comnpatname noise voltage source= #1}}
-
-\def\pgf@circ@isourceN@path#1{\pgf@circ@bipole@path{isourceN}{#1}}
-\compattikzset{noise current source/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@isourceN@path, \circuitikzbasekey/bipole/is current=true, i=#1}}
-\compattikzset{isourceN/.style= {\comnpatname noise current source= #1}}
-\compattikzset{nI/.style= {\comnpatname noise current source= #1}}
-
-% resistive sensor american style
-\def\pgf@circ@resistivesens@path#1{\pgf@circ@bipole@path{resistivesens}{#1}}
-\compattikzset{american resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistivesens@path, l=#1}}
-\compattikzset{european resistive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@thermistorntc@path, l=#1}}
-\compattikzset{resistive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@sresistor@path, l=#1}}
-\compattikzset{sR/.style= {\comnpatname resistive sensor= #1}}
-
-\compattikzset{capacitive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@capacitivesens@path, l=#1}}
-\compattikzset{sC/.style= {\comnpatname capacitive sensor= #1}}
-
-\compattikzset{cute inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@cuteinductivesens@path, l=#1}}
-\compattikzset{european inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@europeaninductivesens@path, l=#1}}
-\compattikzset{american inductive sensor/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@americaninductivesens@path, l=#1}}
-\compattikzset{inductive sensor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@inductivesens@path, l=#1}}
-\compattikzset{sL/.style= {\comnpatname inductive sensor= #1}}
-
-\compattikzset{Mr/.style = {\comnpatname memristor}}
-
-\compattikzset{cspst/.style = {\comnpatname closing switch = #1}}
-\compattikzset{ospst/.style = {\comnpatname opening switch = #1}}
-\compattikzset{spst/.style = {\comnpatname switch = #1}}
-
-\compattikzset{afuse/.style = {\comnpatname asymmetric fuse=#1}}
-
-\compattikzset{vdd/.style = {\comnpatname vcc = #1}}
-\compattikzset{vss/.style = {\comnpatname vee = #1}}
-
-% activate the to-style crossing
-\def\pgf@circ@crossing@path#1{\pgf@circ@bipole@path{crossing}{#1}}
-\compattikzset{crossing/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@crossing@path, l=#1}}
-\compattikzset{xing/.style= {\comnpatname crossing= #1}}
-
-%% loudspeaker and microphone
-
-\def\pgf@circ@loudspeaker@path#1{\pgf@circ@bipole@path{loudspeaker}{#1}}
-\compattikzset{loudspeaker/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@loudspeaker@path, l=#1}}
-
-\def\pgf@circ@mic@path#1{\pgf@circ@bipole@path{mic}{#1}}
-\compattikzset{mic/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@mic@path, l=#1}}
-
-% more instrument
-\def\pgf@circ@rmeter@path#1{\pgf@circ@bipole@path{rmeter}{#1}}
-\compattikzset{rmeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeter@path, l=#1}}
-\def\pgf@circ@rmeterwa@path#1{\pgf@circ@bipole@path{rmeterwa}{#1}}
-\compattikzset{rmeterwa/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@rmeterwa@path, l=#1}}
-\def\pgf@circ@smeter@path#1{\pgf@circ@bipole@path{smeter}{#1}}
-\compattikzset{smeter/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@smeter@path, l=#1}}
-% current loop probes
-\def\pgf@circ@iloop@path#1{\pgf@circ@bipole@path{iloop}{#1}}
-\compattikzset{iloop/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop@path, l=#1}}
-\def\pgf@circ@iloop2@path#1{\pgf@circ@bipole@path{iloop2}{#1}}
-\compattikzset{iloop2/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@iloop2@path, l=#1}}
-% qucs-style probes
-\def\pgf@circ@qiprobe@path#1{\pgf@circ@bipole@path{qiprobe}{#1}}
-\compattikzset{qiprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qiprobe@path, l=#1}}
-\def\pgf@circ@qvprobe@path#1{\pgf@circ@bipole@path{qvprobe}{#1}}
-\compattikzset{qvprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qvprobe@path, l=#1}}
-\def\pgf@circ@qpprobe@path#1{\pgf@circ@bipole@path{qpprobe}{#1}}
-\compattikzset{qpprobe/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@qpprobe@path, l=#1}}
-% multiwire(s)
-\def\pgf@circ@bmultiwire@path#1{\pgf@circ@bipole@path{bmultiwire}{#1}}
-\compattikzset{bmultiwire/.style = {\circuitikzbasekey,
-/tikz/to path=\pgf@circ@bmultiwire@path, l=#1}}
-\def\pgf@circ@multiwire@path#1{\pgf@circ@bipole@path{multiwire}{#1}}
-\compattikzset{multiwire/.style = {\circuitikzbasekey,
-/tikz/to path=\pgf@circ@multiwire@path, l=#1}}
-\def\pgf@circ@tmultiwire@path#1{\pgf@circ@bipole@path{tmultiwire}{#1}}
-\compattikzset{tmultiwire/.style = {\circuitikzbasekey,
-/tikz/to path=\pgf@circ@tmultiwire@path, l=#1}}
-
-% reed switches
-\def\pgf@circ@reed@path#1{\pgf@circ@bipole@path{reed}{#1}}
-\compattikzset{reed/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@reed@path, l=#1}}
-
-% Transistor like bipoles
-
-\def\pgf@circ@trans@path#1#2{
- \pgfextra{
- \edef\pgf@temp{\ctikzvalof{bipole/name}}
- \def\pgf@circ@temp{#2}
- \ifx\pgf@temp\pgf@circ@temp % if it has not a name
- \pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
- \ctikzset{bipole/name = trans\pgf@circ@rand} % create it
- \fi
- }
- \ifpgf@circuit@bipole@inverted
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- \else
- (\tikztostart) node[coordinate] (\ctikzvalof{bipole/name}start) {}
- (\tikztotarget) node[coordinate] (\ctikzvalof{bipole/name}end) {}
- \fi
- \pgfextra{
- \pgfmathanglebetweenpoints{\pgfpointanchor{\ctikzvalof{bipole/name}start}{center}}
- {\pgfpointanchor{\ctikzvalof{bipole/name}end}{center}}
- \pgfmathadd{\pgfmathresult}{-90}
- \pgfmathround{\pgfmathresult}
- \edef\pgf@circ@direction{\pgfmathresult}
- }
- ($(\tikztostart) ! .5 ! (\tikztotarget)$)
- node[#1, /tikz/rotate=\pgf@circ@direction, xscale=\ctikzvalof{mirror value}]
- (\ctikzvalof{bipole/name}) {}
- node {\ctikzvalof{bipole/label/name}}
- \ifcsname pgf@anchor@#1@pathstart\endcsname%if special path-anchors are defined, use them!
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.pathstart)
- (\ctikzvalof{bipole/name}.pathend) -- (\ctikzvalof{bipole/name}end.center)
- \else
- (\ctikzvalof{bipole/name}start.center) --(\ctikzvalof{bipole/name}.left)
- (\ctikzvalof{bipole/name}.right) -- (\ctikzvalof{bipole/name}end.center)
- \fi
- \drawpoles
- \pgfextra{
- \pgfcircresetpath
- }
- (\tikztotarget) \tikztonodes % e si continua
-}
-
-
-\def\pgf@circ@definetranspath#1{
- \compattikzset{T#1/.style = {\circuitikzbasekey, /tikz/to path=\pgf@circ@trans@path{#1}{}, l=##1}}
-}
-
-\pgf@circ@definetranspath{elmech}
-\pgf@circ@definetranspath{nmos}
-\pgf@circ@definetranspath{pmos}
-\pgf@circ@definetranspath{nmosd}
-\pgf@circ@definetranspath{pmosd}
-\pgf@circ@definetranspath{hemt}
-\pgf@circ@definetranspath{npn}
-\pgf@circ@definetranspath{pnp}
-\pgf@circ@definetranspath{nfet}
-\pgf@circ@definetranspath{nigfete}
-\pgf@circ@definetranspath{nigfetd}
-\pgf@circ@definetranspath{nigfetebulk}
-\pgf@circ@definetranspath{pfet}
-\pgf@circ@definetranspath{pigfete}
-\pgf@circ@definetranspath{pigfetd}
-\pgf@circ@definetranspath{pigfetebulk}
-\pgf@circ@definetranspath{njfet}
-\pgf@circ@definetranspath{pjfet}
-\pgf@circ@definetranspath{pigbt}
-\pgf@circ@definetranspath{nigbt}
-\pgf@circ@definetranspath{Lpigbt}
-\pgf@circ@definetranspath{Lnigbt}
-%
-% Path-style logical ports
-%
-% create path-style element for one input --- one output logical ports
-%
-\def\pgfcirc@port@node@to@path#1#2{%
- %
- % add a logic port path style component --- we need to suppress leads
- % and use the correct center
- %
- \pgfcirc@node@to@path{#1}{#2}{/tikz/no leads, \circuitikzbasekey/logic ports origin=center}%
-}
-\pgfcirc@port@node@to@path{not port}{inline not}
-\pgfcirc@port@node@to@path{buffer port}{inline buffer}
-\pgfcirc@port@node@to@path{schmitt port}{inline schmitt}
-\pgfcirc@port@node@to@path{invschmitt port}{inline invschmitt}
-
-\pgfcirc@port@node@to@path{tgate}{inline tgate}
-\pgfcirc@port@node@to@path{double tgate}{inline double tgate}
-
-%%%---------- close: tex/pgfcircpath
-
-\ifpgf@circ@siunitx
- \RequirePackage{xstring}[2009/03/13]
- %\expandafter\let\csname angstrom\endcsname\relax
- \RequirePackage{siunitx}
-\fi
-
-\ifpgf@circ@explicitvdir\else
- \PackageWarningNoLine{circuitikz}{%
- You did not specify one of the voltage directions:\MessageBreak
- \space\space oldvoltagedirection, nooldvoltagedirection, \MessageBreak
- \space\space RPvoltages or EFvoltages \MessageBreak
- Default directions may have changed, \MessageBreak
- please check the manual%
- }
-\fi
-
-\newenvironment{circuitikz}{\begin{tikzpicture}}{\end{tikzpicture}}
-%override (unused) circuitikz environment for compability to externalization)
-\let\circuitikz\tikzpicture
-\let\endcircuitikz\endtikzpicture
+\input{circuitikz-1.2.7-body.tex}
-\endinput
diff --git a/graphics/pgf/contrib/circuitikz/tex/circuitikz.sty b/graphics/pgf/contrib/circuitikz/tex/circuitikz.sty
index 875901cb19..ca09a62930 100644
--- a/graphics/pgf/contrib/circuitikz/tex/circuitikz.sty
+++ b/graphics/pgf/contrib/circuitikz/tex/circuitikz.sty
@@ -12,8 +12,32 @@
\NeedsTeXFormat{LaTeX2e}
-\def\pgfcircversion{1.3.9}
-\def\pgfcircversiondate{2021/06/27}
+% set up the rollback system
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+
+\def\pgfcircversion{1.4.0}
+\def\pgfcircversiondate{2021/07/06}
+
+\DeclareRelease{0.4}{2012/12/20}{circuitikz-0.4-body.tex}
+\DeclareRelease{v0.4}{2012/12/20}{circuitikz-0.4-body.tex}
+\DeclareRelease{0.6}{2016/06/06}{circuitikz-0.6-body.tex}
+\DeclareRelease{v0.6}{2016/06/06}{circuitikz-0.6-body.tex}
+\DeclareRelease{0.7}{2016/09/08}{circuitikz-0.7-body.tex}
+\DeclareRelease{v0.7}{2016/09/08}{circuitikz-0.7-body.tex}
+\DeclareRelease{0.8.3}{2017/05/28}{circuitikz-0.8.3-body.tex}
+\DeclareRelease{v0.8.3}{2017/05/28}{circuitikz-0.8.3-body.tex}
+\DeclareRelease{0.9.3}{2019/07/13}{circuitikz-0.9.3-body.tex}
+\DeclareRelease{v0.9.3}{2019/07/13}{circuitikz-0.9.3-body.tex}
+\DeclareRelease{0.9.6}{2019/11/09}{circuitikz-0.9.6-body.tex}
+\DeclareRelease{v0.9.6}{2019/11/09}{circuitikz-0.9.6-body.tex}
+\DeclareRelease{1.0}{2020/02/04}{circuitikz-1.0-body.tex}
+\DeclareRelease{v1.0}{2020/02/04}{circuitikz-1.0-body.tex}
+\DeclareRelease{1.1.2}{2020/05/17}{circuitikz-1.1.2-body.tex}
+\DeclareRelease{v1.1.2}{2020/05/17}{circuitikz-1.1.2-body.tex}
+\DeclareRelease{1.2.7}{2020/12/27}{circuitikz-1.2.7-body.tex}
+\DeclareRelease{v1.2.7}{2020/12/27}{circuitikz-1.2.7-body.tex}
+\DeclareCurrentRelease{\pgfcircversion}{\pgfcircversiondate}
\ProvidesPackage{circuitikz}%
[\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]
diff --git a/graphics/pgf/contrib/circuitikz/tex/circutikz-0.9.6.sty b/graphics/pgf/contrib/circuitikz/tex/circutikz-0.9.6.sty
new file mode 100644
index 0000000000..b5e431370b
--- /dev/null
+++ b/graphics/pgf/contrib/circuitikz/tex/circutikz-0.9.6.sty
@@ -0,0 +1,23 @@
+% Copyright 2018-2021 by Romano Giannetti
+% Copyright 2015-2021 by Stefan Lindner
+% Copyright 2013-2021 by Stefan Erhardt
+% Copyright 2007-2021 by Massimo Redaelli
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
+
+
+\NeedsTeXFormat{LaTeX2e}
+
+\def\pgfcircversion{0.9.6}
+\def\pgfcircversiondate{2019/11/09}
+
+\ProvidesPackage{circuitikz-0.9.6}
+[\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]
+
+\input{circuitikz-0.9.6-body.tex}
+
diff --git a/graphics/pgf/contrib/circuitikz/tex/ctikzstyle-legacy.tex b/graphics/pgf/contrib/circuitikz/tex/ctikzstyle-legacy.tex
index c4ce332209..25bd5f2912 100644
--- a/graphics/pgf/contrib/circuitikz/tex/ctikzstyle-legacy.tex
+++ b/graphics/pgf/contrib/circuitikz/tex/ctikzstyle-legacy.tex
@@ -111,12 +111,12 @@ logic ports/scale=1.0,
logic ports/fill=none,
logic ports/thickness=none,
logic ports origin=legacy, % it can be "center" (better)
-american or shape=roundy,% could be pointy
+american or shape/.try=roundy,% could be pointy
%
% flip-flops
-flipflops/scale=1.0,
-flipflops/fill=none,
-flipflops/thickness=none,
+flipflops/scale/.try=1.0,
+flipflops/fill/.try=none,
+flipflops/thickness/.try=none,
%
% Integrated circuits
chips/scale=1.0,
diff --git a/graphics/pgf/contrib/circuitikz/tex/ctikzstyle-romano.tex b/graphics/pgf/contrib/circuitikz/tex/ctikzstyle-romano.tex
index 6227a23d32..c244c605c6 100644
--- a/graphics/pgf/contrib/circuitikz/tex/ctikzstyle-romano.tex
+++ b/graphics/pgf/contrib/circuitikz/tex/ctikzstyle-romano.tex
@@ -54,15 +54,18 @@ amplifiers/scale=1.0,
amplifiers/thickness=3.0,
%
% Logic ports
-logic ports/.try=ieee,
+logic ports/ieee/.try,
+% this way of setting the key does nothing if ieee option
+% does not exist; logic ports/.try=ieee does not work
+% if the key exists but the value is not defined
logic ports/scale=1.0,
logic ports/thickness=2.0,
logic ports origin=center,
-american or shape=pointy,
+american or shape/.try=pointy,
%
% flip-flops
-flipflops/scale=1.0,
-flipflops/thickness=2.0,
+flipflops/scale/.try=1.0,
+flipflops/thickness/.try=2.0,
%
% Switches
bipoles/cuteswitch/thickness=0.5,
diff --git a/graphics/pgf/contrib/circuitikz/tex/pgfcircpath.tex b/graphics/pgf/contrib/circuitikz/tex/pgfcircpath.tex
index eadf5fd117..ee9d285fff 100644
--- a/graphics/pgf/contrib/circuitikz/tex/pgfcircpath.tex
+++ b/graphics/pgf/contrib/circuitikz/tex/pgfcircpath.tex
@@ -160,7 +160,7 @@
\ifx\pgf@temp\pgf@circ@temp % if it is an open do nothing
\else
% it is important to start the path with -- to have correct line joins!
- -- (\tikztostart) -- (pgfcirc@anchorstartnode)
+ -- (pgfcirc@anchorstartnode)
\fi
% Add all the "ornaments": labels, annotations, voltages, currents and flows
\drawpoles
diff --git a/graphics/pgf/contrib/circuitikz/tex/pgfcircutils.tex b/graphics/pgf/contrib/circuitikz/tex/pgfcircutils.tex
index 86732077b0..2759f80c9c 100644
--- a/graphics/pgf/contrib/circuitikz/tex/pgfcircutils.tex
+++ b/graphics/pgf/contrib/circuitikz/tex/pgfcircutils.tex
@@ -93,12 +93,12 @@
%% subcircuits (experimental)
%%
%% introduced by Romano Giannetti around April 2021
-%%
+%% changes suggested by Jonathan P. Spratte
%%
\newbox\ctikz@scratchbox
\long\def\ctikzsubcircuitdef#1#2#3{%
- \expandafter\gdef\csname #1@Anchor\endcsname{}
- \expandafter\gdef\csname #1@setanchors\endcsname{
+ \expandafter\gdef\csname #1@Anchor\endcsname{}%
+ \expandafter\gdef\csname #1@setanchors\endcsname{%
\setbox\ctikz@scratchbox=\hbox{%
\begin{circuitikz}
\draw (0,0) \csname#1\endcsname{T-#1}{};
@@ -106,17 +106,12 @@
% reference anchor is -center
\draw (0,{2-\i/2}) let \p1 = ($(T-#1-subckt@reference)-(T-#1-\anchor)$) in
node[right]{\anchor: \x1,\y1 \expandafter\xdef\csname #1@Anchor\anchor\endcsname{++(\x1,\y1)}};
- \end{circuitikz}
- }
- }
- \expandafter\gdef\csname#1\endcsname##1##2{\csname#1aux\endcsname{##1}{\csname #1@Anchor##2\endcsname}}
- \expandafter\gdef\csname#1aux\endcsname##1##2{%
- % move to the anchor
- ##2
- % reference anchor should be -reference
- coordinate (##1-subckt@reference)
- #3
- }
+ \end{circuitikz}%
+ }%
+ }%
+ \expandafter\gdef\csname#1\endcsname##1##2{%
+ \csname #1@Anchor##2\endcsname coordinate(##1-subckt@reference)#3%
+ }%
}
\long\def\ctikzsubcircuitactivate#1{\csname #1@setanchors\endcsname}
diff --git a/graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex b/graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex
index 342c406130..7ee36f058f 100644
--- a/graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex
+++ b/graphics/pgf/contrib/circuitikz/tex/t-circuitikz.tex
@@ -10,8 +10,8 @@
%
% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
-\def\pgfcircversion{1.3.9}
-\def\pgfcircversiondate{2021/06/27}
+\def\pgfcircversion{1.4.0}
+\def\pgfcircversiondate{2021/07/06}
\writestatus{loading}{\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion}
\usemodule[tikz]